Please see the following links for the latest information regarding the Intel® Integrated Performance Primitives (Intel® IPP) library:
- Intel® IPP Main Product Page
- Intel® IPP 7.0 Library Release Notes
- Intel® IPP 7.0 Library Installation Guide
- Intel® IPP 7.0 Library System Requirements
- Intel® IPP 7.0 Library Getting Started
- Intel® IPP 7.0 Library Bug Fixes
Links to documentation, help, and code samples can be found on the main Intel IPP product page. For technical support visit the Intel IPP technical support forum and review the articles in the Intel IPP knowledgebase.
Please register your product using your preferred email address. This helps Intel recognize you as a valued customer in the support forum and insures that you will be notified of product updates. You can read Intel's Online Privacy Notice Summary if you have any questions regarding the use of your email address for software product registration.
How to Build an IPP Application provides an introduction to compiling, linking and deploying Intel IPP applications.
Intel IPP and Intel Parallel Studio and/or Intel Composer
The instructions in this article are intended for users of the stand-alone version of the Intel IPP library, or for those developers who wish to use their own makefiles or need to customize their Visual Studio solution files for building Intel IPP applications.
If your Intel IPP library was installed as a component of an Intel "suite product" (such as Intel Parallel Studio and Intel Composer) that has been "integrated" into Visual Studio, you may be able to ignore the environment configuration instructions on this page. Instead, please use the configuration tools that were added into Visual Studio for enabling the use of the Intel IPP library within that environment.
Regardless, the following information may be useful to review as it will help you understand how the library is organized on your development system and may provide hints regarding the best way to configure your development system for building an Intel IPP application.
A script (batch file on Windows, shell script on other platforms) located in the ...\ipp\bin directory can be used to set the IPPROOT, LIB, INCLUDE and any required system-specific environment variables to point to the appropriate IPP library directories. Use of this script is an optional, but convenient, means by which to configure your development system for compiling and linking with the IPP library.
You run the script with a single input that specifies the primary processor architecture of interest. For example, ippvars.bat ia32 configures the environment variables for compiling and linking a 32-bit IPP application. Likewise, ippvars.bat intel64 configures your development environment to build 64-bit IPP applications.
Note: in the text that follows, <arch> refers to the primary processor architecture: ia32 or intel64, and <IPPROOT> refers to the IPP installation directory. Additionally, '\' and '/' are used interchangeably as directory separators.
An alternate architecture-specific script file is located in the <IPPROOT>\bin\<arch> directory that can be run without any input parameters. It calls the ippvars script mentioned above with the appropriate architecture as an input parameter.
Once defined, you can reference the IPPROOT variable within your makefiles and/or project files to locate the header and library files necessary to compile and link applications using the Intel IPP library.
Before running the build scripts provided with the IPP sample applications you must first be sure to set the IPPROOT environment variable to point to the IPP installation directory on your system. IPPROOT must point to that directory which contains the IPP bin, lib, include and tools directories. The sample build scripts will reference the IPPROOT environment variable in order to locate the IPP library and any additional tools required.
On a Windows system the following batch files are available to configure the environment for building IPP applications:
IA-32 Intel® Architecture: <IPPROOT>\bin\ia32\ippvars_ia32.bat
Intel® 64 Architecture: <IPPROOT>\bin\intel64\ippvars_intel64.bat
On a Linux system the following shell scripts are available to configure the environment for building IPP applications:
IA-32 Intel® Architecture: <IPPROOT>/bin/ia32/ippvars32.sh
Intel® 64 Architecture: <IPPROOT>/bin/intel64/ippvarsintel64.sh
Intel® Atom™ Processor: <IPPROOT>/bin/lp32/ippvars32.sh
The Intel IPP functions and structures are defined within several header files in the <IPPROOT>\include directory. The "ipp.h" header file includes all of these. For forward compatibility it is best to include only the ipp.h header file.
Calling Intel IPP Functions
The dynamic library dispatcher and merged static library mechanisms (described below) are designed to make the process of calling an Intel IPP functions as simple as calling any C function. Multiple SIMD-optimized versions of each function are concealed behind a single entry point.
See the following knowledgebase articles for more information on linking with the Intel IPP library:
And review these articles for information regarding the IPP dispatching mechanism:
Using the Intel IPP Dynamic (Shared) Libraries
The Intel IPP library includes "stub" static library files that link to the correct entry points and automatically load the appropriate Intel IPP dynamic (shared) libraries at run time. To use the IPP dynamic libraries you must link with the library files located in the <IPPROOT>\lib\<arch>\ directory.
At run time the dynamic libraries will automatically detect the CPU type and load the correct processor-specific library files. The processor-specific dynamic libraries include tags like w7, v8 and p8 within their names. The only requirements necessary to use the dynamic libraries, once you have linked against the corresponding "stub" static libraries, is to insure that the shared libraries are located in the system path.
Note: the environment scripts described above, in the Environment Variables section, will correctly locate your dynamic library files in the appropriate system path.
On a Linux system be sure the Intel IPP shared libraries are part of the system variable LD_LIBRARY_PATH. For example, if the shared libraries are located in the <IPPROOT>/../redist/ia32/ipp folder, then the following command line should be entered:
Multi-threading (Multi-Core) Support
Intel IPP 7.0 uses the Intel OpenMP library to implement multi-threading within the library to support multiple hardware threads or cores. In some cases you can use OpenMP environment variables and APIs to control the OpenMP threading behavior within the IPP library. For detailed information regarding OpenMP and the Intel IPP library, please refer to the IPP reference manuals and the following knowledgebase articles:
Note: You must include the appropriate OpenMP shared-library file in your PATH. There are known incompatibilities between various versions of the OpenMP libraries. If you encounter problems, make sure that there is only one version of OpenMP located in your PATH environment variable.
Please read the following knowledgebase articles for information regarding the IPP library processor codes:
Building a Custom Dynamic (Shared) Library
Please see the following knowledgebase article and the IPP documentation for information on building a custom dynamic library:
Using the Intel IPP Performance Benchmark Tool
The Intel IPP library includes a tool named "perfsys" to evaluate the performance of each Intel IPP function.
For more details on running perfsys please review the readme.htm file located in the <IPPROOT>\tools\<arch>\perfsys directory.