Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

IPP optimizations

Fernando_C_2
Beginner
317 Views
Hello everyone.
I have been using Ipl for a long time and now I am evaluating Ipp. Not because I am disappointed with Ipl, but because Intel says most functions run faster with IPP.
I have two questions:
- I have compiled the source code of the Ipl implementation over Ipp and ran my previous code which is mainly Erode, Dilate and threshold. But the gain in performance was only 2 ms (54 ms with Ipl and 52 ms with Ipl library made over Ipp - Image-Processing-IPL sample). Why is that? Shouldn't the gain be much higher?
- In order to optimize my code I am also evaluating Intel compiler 8.1. What compiler options should I use in order to full optimize my app (my computer is a P4 with HT)? Can I use openMP optimizations? How should I use openMP optimizations? Is Ipp already made using openMP?
Thanks in advance for your answers.
Regards,
Fernando
0 Kudos
3 Replies
Vladimir_Dudnik
Employee
317 Views
Hi Fernardo,
Answering your question I would like to say that performance gain can be different for different functions.
Regarding of threading with OpenMP - some (not all, but only those which get significant performance gain) IPP functions do use OpenMP treading inside when you are link IPP as DLLs. And you can use OpenMP threading above IPP functions to take into account your application's specific needs. I need to refer to Intel C/C++ Compiler documentation for the details how to use processor-specific optimization or OpenMP threading.
It's also recommended to take a look on our multithreaded examples, for example MPEG2 or MPEG4 HT decoders, JPEG decoder.
Regards,
Vladimir
0 Kudos
Fernando_C_2
Beginner
317 Views
Hello.
- Regarding IPP vs IPL, in the ipl_ipp.pdf file that comes with the IPL coded over IPP sample, there is table 1 that compares performance between IPL functions ans corresponding IPP ones. On iplClose and iplErode functions, the table indicates a performance gain of 2.5 for the former and 3.1 for the later. Nevertheless, the gains in my code (which is mainly a sequence of iplClose and iplErode) compiled with "native" IPL and with IPL over IPP are negligible. Why? ShouldI use only IPP functions and not IPL over IPP implementation to achieve the gais indicated in that table?
- Which IPP functions are implemented using openMP? I need to know because there is no point in trying to optimize some code with openMP directives if that code is made of IPP functions already optimized with openMP, right?
- Is IPP compatible with the following OS:
* Windows 2000
* Windows 2000 Embedded
* Windows XP Embedded
* Windows CE
* Windows Small Business Server 2003
Thanks in advance for your support.
Regards,
Fernando
0 Kudos
Vladimir_Dudnik
Employee
317 Views
Hi Fernando,
there is comment from our experts:
Of courseyou should try pure IPP code, because IPL API over IPP uses several malloc and copy operations.
You should know that there is no OMP code in static libraries (it is only in DLLs) so no problems with own OMP code over static IPP libs. As for dynamic by default nested threading is disabled in OMP so inwe believethereshould notbeproblems with dynamic libraries too. And there is one more interesting thing you can play with nested threading on/off to find the best combination from the performance point of view.
Regards,
Vladimir
0 Kudos
Reply