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...
Related
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.
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.
We have openCV code that uses IPP. We wonder if this can work on iOS devices or IPP only supports Intel processor machines? Thank you.
IPP only works on desktop processors. (Intel and AMD, x86/64 architectures. However, they are reported to be slower on AMDs).
OpenCV is poorly optimized on mobile devices, which use ARM processors, and for now, the best option seems to be the Accelerate framework offered by iOS 4.0 and higher.
Accelerate is a function library containing some optimized functions for image and signal processing, math, etc. You can replace some of the OpenCV calls with Accelerate functions (on iOS devices only)
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
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.