Find the Intel® IPP Libraries Needed by Your Application

Overview

Intel® Integrated Performance Primitives (Intel® IPP) libraries needed in linking depend on the function domain and the linkage model you choose. Dynamic linkage and static linkage with dispatching are two simple and commonly used linkage models.

Function Domain

Intel® IPP libraries classify its function into about 16 domains. It is easy to discern the function domain for one function by the header file name.

For example a function ippsFind_8u(), check its description in reference manual

Description

The functions ippsFind and ippsFindRev are declared in the ippch.h file. Then the function belong to ippch string processing domain.
Then check the below table, you will find the libraries the function needed.

The file ipp.h includes Intel IPP header files with the exception of cryptography and generated functions. If you do not use cryptography and generated functions, include ipp.h in your application for forward compatibility. If you want to use cryptography or generated functions, you must directly include ippcp.h and ippgen.h in your application.

Code of Domain

Header file

Prefix

Description

AC*

ippac.h

ipps

audio coding

CCippcc.hippi

color conversion

CHippch.hipps

string operations

COREippcore.hipp

core functions

CPippcp.hipps

cryptography

CVippcv.hippi

computer vision

DCippdc.hipps

data compression

DI*ippdi.hipps

data integrity

GEN*ippgen.hippg

spiral generated

Iippi.hippi

image processing

J*ippj.hippi

JPEG compression

M*ippm.hippm

small matrix operations

R*ippr.hippr

realistic rendering and 3D data processing

Sipps.hipps

signal processing

SC*ippsc.hipps

speech codecs

VC*ippvc.hippi

video codecs

VMippvm.hipps

vector math

E**ippe.hipps

embedded functionality

* refers to deprecated domain ( Please avoid starting any new projects with the deprecated domains )

** available only within the Intel® System Studio suite

Linking Options

Intel® Integrated Performance Primitives (Intel® IPP) is distributed as:

  • Static library: static linking results in a standalone executable
  • Dynamic/shared library: dynamic linking defers function resolution until runtime and requires that you bundle the redistributable libraries with your application

Previous generations of Intel® IPP implemented threading inside some functions (listed in the ThreadedFunctionsList.txt file). This simplified getting started with threading but, due to issues with performance and interoperability with other threading models, is no longer recommended for new development. Versions of the library with internal threading enabled for a subset of functions are distributed as a separate package.

The following table provides description of libraries available for linking.

 Single-threaded

(non-threaded)

Multi-threaded

(internally threaded)

DescriptionSuitable for application-level threadingUse only when no other form of threading is active
Found in

Main package

After installation: <ipp directory>/lib/<arch>

Separate download

After installation:<ipp directory>/lib/<arch>/threaded

Static linking

Windows* OS: mt suffix in a library name (ipp<domain>mt.lib)

Linux* OS and OS X*: no suffix in a library name (libipp<domain>.a)

Windows* OS: mt suffix in a library name (ipp<domain>mt.lib)

Linux* OS and OS X*: no suffix in a library name (libipp<domain>.a)

Dynamic Linking

Default (no suffix)

Windows* OS: ipp<domain>.lib

Linux* OS: libipp<domain>.a

OS X*: libipp<domain>.dylib

Default (no suffix)

Windows* OS: ipp<domain>.lib

Linux* OS: libipp<domain>.a

OS X*: libipp<domain>.dylib

You can also refer to this quick reference table.

Note

Internally threaded (multi-threaded) versions of Intel® IPP libraries are deprecated but made available for legacy applications. It is strongly recommended to use the single-threaded version of the libraries for new development.

To switch between single- or multi-threaded Intel IPP libraries, set the path to the preferred library in system variables or in your project, for example:

  • Windows* OS:

    Single-threaded: SET LIB=<ipp directory>/lib/<arch>

    Multi-threaded: SET LIB=<ipp directory>/lib/<arch>/threaded

  • Linux* OS/OS X*

    Single-threaded: gcc <options> -L <ipp directory>/lib/<arch>

    Multi-threaded: gcc <options> -L <ipp directory>/lib/<arch>/threaded

Note

On Linux* OS and OS X* Intel IPP library depends on the following Intel® C++ Compiler runtime libraries: libirc.a, libsvml.a, and libimf.a. You should add a link to these libraries into your project. You can find these libraries in <ipp directory> /lib or <intel compiler directory>/lib folders.

Additional Resources

Simplified Link Instructions for the IPP Library

Intel® IPP User Forum

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.