The Intel® Integrated ® Primitives (Intel® IPP) Custom Library Tool enables you to build your own dynamic library that contains only the Intel® IPP functionalities that are necessary for your application. A custom dynamic library has a much smaller file size in comparison with Intel IPP dynamic libraries from the Intel IPP package. The dynamic library contains all optimized variants of functions and the dispatcher inside the library.

Intel IPP Custom Library Tool provides a smooth transition to a new Intel IPP version: you can easily build the same custom dynamic library from the latest version of Intel IPP and substitute the custom dynamic libraries in your application without relinking.

There are two versions of the Intel IPP Custom Library Tool: a Graphic User Interface (GUI) version and a console version. Refer to Using the Intel® IPP Custom Library Tool GUI Version and Using the Intel® IPP Custom Library Tool Console Version for instructions on how to use the corresponding tool version.

If you enable participation in Intel® Software Improvement Program during installation, the Intel IPP Custom Library Tool will send to Intel the list of Intel IPP functions that you select for your custom dynamic libraries. This enables us to understand which Intel IPP functions are more popular and optimize those functions in the first priority.

Using the Intel® IPP Custom Library Tool GUI Version

  1. Launch the GUI version of the Intel IPP Custom Library Tool by running the application located at ipp/tools/custom_library_tool/ipp_custom_library_tool_gui. The application detects the compilers_and_libraries package by relative path from the tool installation. If the package cannot be detected, the application prompts you to specify the location of the compilers_and_libraries package.
  2. From the window shown below choose the Intel IPP functions you need using the search string and the Intel IPP domain list. To add functions to your custom dynamic library, put the required functions into the right column.

  3. Enter the name of your custom dynamic library into the field above the right column.
  4. Choose the target architecture by selecting the corresponding checkbox in the Settings section.
  5. Choose the single-threaded or multi-threaded library type from the drop-down list in the Settings section. Note that Intel IPP multi-threaded libraries are not installed by default.
  6. If you use Intel IPP within the Intel® System Studio suite, you can build shared libraries for Linux* embedded and Android* targets. Cross-compilation requires special environment variables. The Intel IPP Custom Library Tool defines these variables automatically and only requires toolchain paths. You can define these paths in the Options menu, as shown in the picture below.

  7. After configuring all parameters and selecting the necessary functions, click Autobuild to build the custom dynamic library, or click Save build script to create a native shell script to build the custom dynamic library. The tool will prompt you to enter the location for the resulting script.

    To save the current configuration to a project file, go to the Project menu and save the project.

Known issues:

Intel® IPP Custom Library Tool Console Version

To create a custom dynamic library using the console version of the Intel® IPP Custom Library Tool, do the following:

  1. Create a list of the Intel IPP functions to be exported into your custom dynamic library. The tool can parse map files, project files from the GUI version, or text files that contain one Intel IPP function name on each line. See the image below for an example text file.

  2. Run ipp_custom_library_tool with the following parameters:

    ipp_custom_library_tool -n <library name> -l <function list> -o <output path>
                            [options...] [-h]

    See the table below for the full list of options:

    Option Group Option Description
    Generation mode -build Automatically build the dynamic library (default)
    -save Generate script (requires pre-defined environment to build)
    Environment -c <path> Path to the Compilers and Libraries directory
    -a <path> Path to the Android* NDK directory
    Architecture -intel64 Dynamic library will be created for the Intel® 64 architecture (default)
    -ia32 Dynamic library will be created for the IA-32 architecture
    Threading -st Dynamic library will be created from single-threaded libraries (default)
    -mt Dynamic library will be created from multi-threaded libraries
    Target -linux Dynamic library will be created for Linux* target (default)
    -android Dynamic library will be created for Android* target (path to the Android* NDK directory required)

    Here is an example of the build command:

    ipp_custom_library_tool -build -n my_library -l "my_project/ipp_functions.txt" -o my_project -intel64 -mt -linux

    See the table below for an explanation of the parameters used in the example:

    Tool Mode:

    build

    Library name:

    my_library

    Function list:

    my_project/ipp_functions.txt

    Output folder:

    my_project

    Target Architecture:

    Intel® 64

    Threading Mode:

    Multi-threaded

    Target System:

    Linux* OS

Why a Custom DLL Is Better than Intel® IPP DLLs

  1. The package size is much smaller if you link with a custom DLL. The following table compares the contents and size of the packages for an end-user application linked with the custom dynamic library and an application linked with the standard Intel IPP dynamic libraries for Linux*, respectively:

    Application linked with a custom dynamic library

    Application linked with Intel IPP dynamic libraries

    ipp_test_app
    custom_so.so

    ipp_test_app
    ippi.so
    ippie9.so
    ippik0.so
    ippil9.so
    ippim7.so
    ippimx.so
    ippin0.so
    ippin8.so
    ippiy8.so
    ipps.so
    ippse9.so
    ippsk0.so
    ippsl9.so
    ippsm7.so
    ippsmx.so
    ippsn0.so
    ippsn8.so
    ippsy8.so
    ippcore.so

    Package size: 0.1 Mb

    Package size: 121.5 Mb

  2. Smooth transition to a new Intel IPP version: you do not need to relink your project with the new Intel IPP version; it is enough to rebuild your custom DLL with the new Intel IPP version.

Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804