Massive slowdowns in 5.1 -> 5.2 upgrade

Massive slowdowns in 5.1 -> 5.2 upgrade

Hi,

My company has developed a multi-threaded video processing app for windows. It uses jpeg encoding / decoding, as well as many of the ippi functions. Everything ran great with IPP 5.1 on any processor at low usage ( 10 - 30% cpu), but when we went to IPP 5.2, the CPU started running at 100%, but only on multi-core processors (like core 2 duo). There was no performance decrease on single-core chips.

We originally thought it might have something to do with hyper-threading, but from reading these forums, I have learned that it may have something to do with not using ippSetNumThreads(1), or not setting OMP_NUM_THREADS to 1.

We can get the same bad performance with 5.1 if we run without libguide40.dll in the path. Suddenly, our nice app will perform badly and peg the processor at 100%. What exactly does libguide40.dll do?

For the time being, we have downgraded to 5.1. However, we may try 5.2 again soon, but I want to have a list of ideas to try to get the performance back. Are there any others suggestions out there on what to try to get the performance levels back with 5.2?

Thanks in advance
Pete

6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi Pete,

The internal threading in IPP is implemented with OpenMP API and libguide40.dll is OpenMP run-time provided by Intel C/C++ compiler. Thislibguide40.dll is required only if you link your application with IPP DLLs and is not required if you link with IPP static libraries (or IPP custom DLL which you can make from IPP static libraries).

The simpliest thing you can try to checkis to re-link your application with IPP static libraries (those with names like ippXXemerged and ippXXmerged). Do not forget to call ippStaticInit function somewhere at the begin ofyour application.

If this eliminates performance slowdown issue it means that there is some conflict between threading in your application and IPP internal threading OR there is some issue with threading in one of IPP functions OR there is some issue with OpenMP run-time in libguide40.dll. Each of these cases should be taken into account and tested if you need by some reason to link your application with IPP DLLs. If you want go deeper in this please submit your issue to Intel Premier Support. We might need the full list of IPP functions you are using and/or (simple?) test case to reproduce the issue.

Regards,
Vladimir

Vladimir,

Thanks for your reply. We may try 5.2 again soon, and I have added your remarks to my file of things to try. I will post here again if I have any followup questions.

Pete

Hi Pete,

we would be glad to help you.It also would be nice ifyoucan provideany feedback on IPP functionality,JPEG or other codecs implementation.

For example, what is the major feature you might think as missedin IPP JPEG codec? Do you think support for planar YUV format as a input of JPEG encoder (or output from JPEG decoder) may help in your application?

Vladimir

Hi Vladimir,

I do have some feedback for you on the JPEG codec. Another developer (the one who has used the JPEG codec) has said this:

I have liked the JPEG codec implementation but wasn't really happy to see how much the interface changed from 5.1 to 5.2.

I would prefer it if I could go in with either RBG or YUV422 data - but that is just my personal opinion (as well as get out if needed).

Other than that I don't have any real feedback on it except that it took me much longer than I would have liked to figure out how to use it successfully as the documentation on what it does and how to use it is very poor.

Thanks,
Pete

Hi Pete,

thanks, that's correct, we have to work on better documentation (not sure if it might be improved in the nearest release, IPP 5.3 beta which is coming soon).

Fortunately we can help with urgent question through the forum.

Regards,
Vladimir

Leave a Comment

Please sign in to add a comment. Not a member? Join today