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

use ippi in multithread environment

danbaum
Beginner
423 Views
If we use ippi functions in a single thread application all runs fine. Using the same ippi functions in the same way in a (AfxBeginThread created) thread, the used memory size increases rapidly. Is there anything to do / to initialize before using ippi functions in an additional thread? It's always just running one thread to do the image processing (by "thread is working" - flag) - so the processing thread will not be corrupted.

We're looking forward to every advice! Thank you!

0 Kudos
4 Replies
Vladimir_Dudnik
Employee
423 Views

Hello,

there was similar issue reported for IPP 5.0 in case when you use IPP DLLs. We investigated that issue and found a problem in libguide40.dll, which is Intel C/C++ compiler OpenMP runtime library, but distributed with IPP DLLs as we use OpenMP threading inside IPP DLLs. This issue was fixed in IPP 5.1 and the latest available version IPP 5.2 beta. For IPP 5.0 you can link your application with IPP static libraries as a workaround (or you can replace your libguide40.dll with one from IPP 5.2 beta)

Regards,
Vladimir

0 Kudos
danbaum
Beginner
423 Views
Hello,

thanks a lot for your answer! We already found the workaround using static linking. Then everything works fine.

But we're using IPP 5.1 and it didn't worked. Is there still a difference between the libguide40.dll out of 5.1 and 5.2?!

And just for interest: the problem occurs from the threads started by some IPP-functions?


regards,
DanBaum
0 Kudos
Vladimir_Dudnik
Employee
423 Views

Hi Dan

it seems different from the issue with IPP 5.0. What exactly IPP functions do you use? Can you please provide simple test case to reproduce the issue?

Regards,
Vladimir

0 Kudos
danbaum
Beginner
423 Views
Hi Vladimir,

okay, i'll try to explain detailed for you to reproduce. The application is a multithreaded MFC-application ( maybe that's very important ) having a lib ( MFC extension dll ) included that uses the IPP-functions. As long as just the main thread is calling the functions of the lib everything is okay. But I'm starting additional threads and just inside them functions are called that uses IPP.

After some tests, the result was :

calling e.g. ippiMin_8u_C1R inside the thread - nothing happens
calling e.g. ippiMean_StdDev_8u_C1R inside the thread - memory leak - 4k per image

Regards and thanks a lot,
DanBaum

0 Kudos
Reply