Does Intel Math Kernel Library (MKL) utilise the integrated GPU in Intel CPUs? - vectorization

I understand Intel MKL will interrogate the CPU for existence of extended instruction sets such as the various SSE to SSE 4.2, AVX, AVX2, etc. in order to select the best subroutine available for a given CPU.
Now that many of Intel's consumer CPUs contain an integrated GPU I was wondering if the Intel MKL utilises them?

In Intel MKL system requirements page https://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-2017-system-requirements does not include any information about GPUs being supported. There is also no mention about it in the documentation.
The only accelerator they support is Xeon Phi. Therefore, there is no support for GPUs from MKL as of now.

Related

Can I run DeepLearning4J on an AMD GPU?

I think DeepLearning4j uses CUDA, which is a NVIDIA thing. I bought this computer for things like neural networks but now I'm disappointed that I have an AMD GPU. Is it somehow possible that I can run DeepLearning4J on AMD?
It's actually not "deeplearning4j" you should be looking at.
Dl4j uses a tensor library which talks to the hardware called nd4j.
Nd4j has "backends" you can plugin. The available backends are various cpu architectures ranging from IBM's power to Android and x86.
GPU wise yes we only support cuda. It's not a simple binary answer like what you're describing.
In theory, we could add opencl at some point but then "which version of opencl"?
No, you cannot use dl4j with AMD GPU

What are the recommendations for building OpenCV 3.0 in presense of respectable number of 3d party components?

When I desided to build opencv library I have found out that there are number of compiler options available that does nearly the same - speed up algorithms. For example: TBB, IPP, CUDA, pthreads, Eigen2/Eigen3, OpenCL and others. Are there any benchmarks or known recommendations of what options are better than others and what caveats should be known?
It depends on your system needs.
CUDA for example is relevant only if you have NVIDIA grpahic card, IPP only if you have the correct intel processor.

Does Intel IPP support any GPUs which supports OpenGL?

As said here, OpenCV uses IPP which uses GPU:
It turned out that OpenCV was using IPP and IPP itself can use GPU
nowadays.
just in case someone else googles for "opencv gpu slower" and didnt
know about the IPP GPU support ;)
Also, I found this:
Optimizing an Augmented Reality Pipeline using IntelĀ® IPP Asynchronous
Using IntelĀ® GPUs to Optimize the Performance and Power Consumption of
Total Immersion's D'Fusion* Augmented Reality Pipeline
And there is no one keyword: OpenCL, OpenACC, CUDA, nVidia, ...
There is only one relative to GPU keyword: OpenGL
Does this mean that the Intel IPP supports only Intel GPU? Or Intel IPP support any GPU (nVidia GeForce, AMD Radeon) which supports OpenGL?
Intel IPP doesn't support GPUs. It was kind of "preview" product - Intel 8.0 Preview, which was discontinued.
Intel integrated graphics is supported only by OpenCL. Intel IPP is focused on CPUs only.
Regards!
I was the one of your linked posting...
I didnt try to find out IPP capabilities because it wasnt my project but one of a colleague...
googling talks about "IPP Asynchronous" library and config stuff like
HPP_ACCEL_TYPE_GPU_VIA_DX9 looks like there are options to use OpenCL and DX9 but no warranties from my side that they are supported or that this list is complete...

OpenCL compliant DSP

On the Khronos website, OpenCL is said to be open to DSP. But when I look on the website of DSP making companies, like Texas Instrument, Freescale, NXP or Analog Devices, I can't find any mention about OpenCL.
So does anyone knows if a OpenCL compliant DSP exists?
Edit: As this question seems surprising, I add the reason why I asked it. From the khronos.org page:
"OpenCL 1.0 at a glance
OpenCL (Open Computing Language) is the first open, royalty-free standard for general-purpose parallel programming of heterogeneous systems. OpenCL provides a uniform programming environment for software developers to write efficient, portable code for high-performance compute servers, desktop computer systems and handheld devices using a diverse mix of multi-core CPUs, GPUs, Cell-type architectures and other parallel processors such as DSPs"
So I think it would be interesting to know if it's true, if DSPs, which are particulary suited for some complex calculations, can really be programmed using OpenCL.
The OpenCL spec seems to support using a chip that has one or more programmable GPU shader cores as an expensive DSP. It does not appear that the spec makes many allowances for DSP chips that were not designed to support being used as a programmable GPU shader in a graphics pipeline.
I finally found one: The SNU-Samsung OpenCL Framework is able to use Texas Instrument C64x DSPs. More infos here:
http://aces.snu.ac.kr/Center_for_Manycore_Programming/SNU-SAMSUNG_OpenCL_Framework.html

Is OpenCV 2.0 optimized for AMD processors?

I know that in the past OpenCV was based on IPP and was optimized only for Intel CPUs. Is this still the case with OpenCV 2.0?
History says that OpenCV was originally developed by Intel.
If you check OpenCV faq, they'll say:
OpenCV itself is open source and written in quite portable C/C++, it runs on other processors already and should be fairly easy to port (for example, there are already some CUDA optimizations on NVidia. On the other hand, OpenCV can sometimes run much faster on Intel processors (and sometimes AMD) because it can take advantage of SSE optimizations. OpenCV can be compiled statically with IPP libraries from Intel also which can speed up some function.
I have used it on other processors and different OS and I've always been very happy, including for video processing applications.

Resources