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

Multithreading with OpenMP and VC 6 possible?

erik_klaas
Beginner
256 Views
We are facing the following situation that we dont fully understand: we wanted to speed up our image processing application on multi core systems by upgrading to IPP 5.1. Unfortunately there is no gain on multicore systems compared to single and only one thread is generated. We are still using (for some historic reasons) the Microsoft VC 6 developing platform that does not support OpenMP. Is it necessary to have a development platform with OpenMP support?

Thanks for any hint

Erik
0 Kudos
2 Replies
jimdempseyatthecove
Honored Contributor III
256 Views

Have you tried creating a shell containing the OpenMP initialization code?

e.g. Using Intel C++ compiled with OpenMP enabled

int main(int argc, char* argv[])
{
return YourProgramMain(argc, argv);
}

When this stub is compiled with OpenMP enabled this will generate the OpenMP initialization code at the entry point of main. Once initialized, then the IPP library might take advantage of the additional threads.

This would require changing only the main module name (main, winmain, ...) theremainder of the code can be compiled using VC++. Your library paths would have to include the Intel libs too.

There may be an issue with some of the system support routines. Working these out might be easier to do than to insert threadind code into your application.

Also consult: http://support.intel.com/support/performancetools/libraries/ipp/sb/cs-010662.htm

Jim Dempsey

0 Kudos
Vladimir_Dudnik
Employee
256 Views

Hello,

you need remember that IPP use OpenMP threading only in several functions and only in IPP DLLs. Internal threading is not available in IPP static libraries. Regarding the IPP DLLs, it does not matter what version of VC you use, all necessary OpenMP staff already contained in IPP DLLs.

Note, you also can speed up your application by using threading above IPP functions. In that case, if you want use OpenMP to simplify parallelization of your application you need use OpenMP enabled compiler (Intel C/C++ compiler is good example of such tool)

Regards,
Vladimir

0 Kudos
Reply