Using Intel® IPP threaded static libraries

Which version of Intel IPP begins to support threaded static libraries?

Intel® Integrated Performance Primitives (Intel® IPP) V5.3 Update 1 release introduced new threaded static libraries, which supports additional threading optimization in the static library. In the previous releases, multi-threading optimization is only supported in the dynamic libraries.

What is the advantage of using threaded static libraries?

Many applications use only a few Intel® IPP functions. Users can choose to link with threaded static libraries with the benefits of a small footprint from static linkage and threading optimization for multi-core processors. Users can also choose to build a customized DLL ( Please see \ipp-samples\advanced-usage\linkage\customso or customdll) from threaded static libraries. The customized DLL contains only the Intel IPP functions used in the users’ application.

How can I link with threaded static libraries?

The Intel® IPP provides merged threaded static libraries "ipp*_t" (previous version named as "ipp*merged_t") in the lib directory. To statically link with threaded static libraries with CPU dispatch, users need to add  "ipp*_t"(previously as "*emerged", "*merged_t", " ippcorel_t"), and " libiomp5*" into linking command. If the application is not compiled with Intel Compiler, users also need to include additional Intel Compiler runtime libraries. Here are the runtime libraries needed for different platforms:

Windows*: span>

IA32 application: libircmt.lib libmmt.lib svml_dispmt.lib

Intel 64 application: libircmt.lib libmmt.lib svml_dispmt.lib

IA64 application: libircmt.lib libmmt.lib


IA32 application: libimf.a libsvml.a libirc.a

Intel 64 application: libimf.a libsvml.a libirc.a

IA64 application: libimf.a libirc.a

Mac OS*:

IA32 application: libimf.a libsvml.a libirc.a

Intel 64 application: libimf.a libsvml.a libirc.a


The following are some linkage examples for threaded static libraries:

>icl myapp.c ipps_t.lib ippcore_t.lib libiomp5md.lib+  
Linking with Intel IPP signal processing libraries for Windows*, and with Intel C++ Compiler.


>cl myapp.c  ippi_t.lib ipps_t.lib ippcore_t.lib libiomp5md.lib+ libircmt.lib libmmt.lib svml_dispmt.lib

Linking with Intel IPP image processing and signal processing libraries for Windows*, and withMicrosoft* Visual C++*.NETCompiler.


> gcc myapp.c  libipp_t.a libippcore_t.a  libimf.a libsvml.a libirc.a -liomp5+ -lpthread

Linking with Intel IPP image processing libraries for Linux*, and withGCC Compiler.

+ :
It is recommended to use dynamic Intel OpenMP threading library libiomp5md.lib(libiomp5md.dll) /
instead of the static one : libiomp5mt.lib/libiomp5.a. See more information in OpenMP Run-time Libraries Changed since Intel IPP 6.0 and Intel ...

How can I build Custom DLLs using threaded static libraries?

Download the updated Building Custom DLLs Sample code. This sample can help users to create a new DLL that contains all the desired Intel® IPP functions from threaded static libraries

How can I control threading behavior in the threaded static libraries?

Intel IPP implements multi-threading optimization with OpenMP* directives. Users can choose either OpenMP* environment variables (e.g OMP_NUM_THREADS) or Intel IPP threading APIs to control the threading behavior. Please refer to IPP Threading/OpenMP* FAQ page for further information.

Operating System:

Red Hat* Linux, Windows* XP Professional x64 Edition, Mac OS*, SUSE* Linux 9.1, Windows* XP Starter Edition, Windows* XP Professional
For more complete information about compiler optimizations, see our Optimization Notice.