Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

Intel IPP won't multithread on 64 bit Intel

wbjackson
Beginner
560 Views
I am running benchmarking code that strictly loops through IPP functions, just butterworth filtering large signals with different options. On a 32 bit machine, the processor is maximized (100% on task manager) but when I compile this code on Visual Studio 2005 (with either the VS or Intel compilers) to run on a 64 bit machine (in this case an Intel Pentium D Dual Core 64 bit machine) the CPU usage is much lower, rarely rising above 50%. This leads me to believe that only one core is being utilized. Is there anything else I need to do to utilize the muti-threading capabilities of the IPP libraries and the Intel chip?
0 Kudos
3 Replies
Vladimir_Dudnik
Employee
560 Views

Hello,

this does not tell you precisely about threading. What processor did you use on your 32-bit system? Which exactly IPP functions did you use? Note, not every IPP function use internal threading. There are several reasons for that. Remember also that IPP functions use internal threading only when you link with IPP DLLs. There is no threading in static IPP libraries.

You can utilize multi-threading capabilities of your processor automatically only with limited set of IPP functions. The better way to do it - to implement threading in your application, above IPP functions. Please take a llok on IPP samples, for example JPEGView sample which use threading above IPP functions.

Regards,
Vladimir

0 Kudos
wbjackson
Beginner
560 Views
Thanks for the response!

The processor on the 32 bit system is an Intel Pentium M. I have been linking with IPP DLLs so that should not be an issue. Can you tell me what IPP functions have internal threading? Also, I looked at JPEGView and could not find where the multi-threading was taking place (I'm not sure what functions to look for that initiate the multi-threading).
0 Kudos
Vladimir_Dudnik
Employee
560 Views

Hello,

Note, in case of Pentium M processor, which contains only one processor core, you will not get benefits from IPP internal threading. IPP threadingis based on OpenMP API, which helps developers to simplify threading in their applications (I'd like toreferyour to OpenMPweb page for the details). Basically, program built with OpenMP, will automatically detect how many processors (cores) are available on the system and launch appropriate number of threads (one per processor/core). Of course you need to specify reqions of your code which should be parallelized. It means that on single processor systems programs based onOpenMP will not launch additional threads and sobehaviour will remain sequental/non-threaded.
On Pentium Dsystem, IPP DLL will use threading in some of functions, for example, ippiAddC_8u_AC4IRSfs. It is difficult to specify the whole list of functions, as threading conditions are different for different image processing algorithms. We do use internal threading if it provides performance improvement, so the same function might be threaded for W7 library but will not be for T7 or vice versa.

You can find an example of OpenMP threading in JPEGViewjpegcodecdecoder.cpp file. Just look for the line:

#ifdef _OPENMP

Regards,
Vladimir

0 Kudos
Reply