Intel® Integrated Performance Primitives (Intel® IPP) v5.3 Update 3 for Linux* on Intel® 64 (Intel® EM64T) architecture 
Getting Started Guide

Contents

Learning About the API
Environment Variables
Header Files
Calling Intel IPP functions
Using the Intel IPP Shared Libraries and Dispatcher
Using the Intel IPP Static Libraries
Using the Intel IPP Shared Object Finding Libraries
Using the Intel IPP Performance Benchmark Tool

Learning About the API

There are many ways to learn more about using Intel IPP and the functionality that it offers:

Environment Variables

You will need to add the path to the shared library to the LD_LIBRARY_PATH variable (see below). You will also need to specify the location for the Intel® IPP include and lib files. The shell script ippvarsem64t.sh in the tools/env directory sets your lib, include, and path environment variables for Intel® IPP. 

Header Files

The Intel IPP functions and structures are defined in several header files in the include directory. The file ipp.h includes all of these. For forward compatibility, include only ipp.h in your program.

Calling Intel IPP Functions

Because of the shared library dispatcher and merged static library mechanisms described below, calling Intel IPP functions is as simple as calling any other C function. The multiple versions of optimized code for each function are concealed under a single entry point.

Refer to the manuals for descriptions of Intel IPP functions.

Using the Intel IPP Shared Libraries and Dispatchers

Before using the Intel IPP shared libraries, you should add a path to the libraries to the system variable LD_LIBRARY_PATH. For example, if the libraries are in the /opt/intel/ipp/5.3.x.xxx/em64t/sharedlib folder, then the following command line should be entered:

On an Intel 64 Architecture based system:
export LD_LIBRARY_PATH=/opt/intel/ipp/5.3.x.xxx/em64t/sharedlib:$LD_LIBRARY_PATH

The shared libraries libipp*em64t.so are "dispatcher" dynamic libraries. At run time they will detect the processor and load the correct processor-specific shared libraries. This allows your code to call Intel® IPP functions without worrying about which processor the code will execute on - the appropriate version is automatically loaded and used. These processor-specific libraries are named *mx.so, *m7.so, *u8.so and *y8.so.  All of these libraries are in the sharedlib directory.

PLEASE NOTE: It is required that the appropriate libguide.so is also included in your PATH environment variable. Include the directory sharedlib when running on a IA-32 system. There are known incompatibilities with other versions of libguide.so. If you run in to problems, make sure that there are no other versions of libguide.so on your PATH.

Processor Codes

Using the Intel IPP Static Libraries

The Intel IPP also comes with "merged" static library files that contain every Intel 64 processor version of each function. Just as with the dynamic dispatcher, the appropriate version of a function is executed when the function is called.  This mechanism is not as convenient as the dynamic mechanism, but can result in a smaller total code size.

In order to use these static libraries, link to the files libipp*mergedem64t.a in the lib directory. Please check Intel IPP Linkage Samples for more details

Using the Intel IPP Shared Object Finding Libraries

Overview

The shared object finding libraries are dispatchers for the merged libraries described in the previous section. They provide a way of applying Intel IPP functions so that you do not need to create special definitions of the entry points for the Intel IPP functions you call as you would using the merged libraries. All that is required is to include the shared object finding libraries into your project and call the Intel IPP functions from your source code.

Another feature of the shared object finding libraries is that they allow automatic updating of a end-user application with new versions of Intel IPP functions. The dispatcher searches the PATH for the Intel IPP shared object dispatchers (ex. libipps.so). If the dispatcher finds a newer version of the code in the Intel IPP shared object(s), the code from the newer shared object(s) is used in place of the code built-in to the application. So, there is no development needed to take advantage of the latest Intel IPP optimizations or new Intel processors!

There are some disadvantages in using the shared object finding libraries as compared to the merged libraries. When using the shared object finding libraries, it is not possible to exclude any cpu-specific code; all processor versions (IA-32 only) of each function will be linked into your application. Also, you cannot use the shared object finding libraries in kernel mode.

Building Procedures

Follow the steps below to build your application using the Intel IPP shared object finding libraries:

  • Include ipp.h, libippcoreem64t.a, and the appropriate libipp**emergedem64t.a file(s) to your project and build tree.
    • Note: You must link the ippcore functions statically (using libippcore.a)
  • Make sure the appropriate libipp**mergedem64t.a file(s) are in your build tree
  • Call ippStaticInit() before calling other Intel® IPP functions
    • Call ippStaticInitBest() instead to turn off the shared object finding feature (always uses statically linked code)
    • Calling ippStaticFree() releases the resources used by ippStaticInit(), and then calls the ippStaticInitBest() function
  • Call the Intel IPP functions required in your application source code
Using the Intel IPP Performance Benchmark Tool

The Intel IPP Package provides a tool "perfsys" to test the performance of each Intel IPP function in the API. For more details on running the performance test tool on Intel 64 Architecture , please check the readme.htm under directory .\tools\perfsys\.

Intel, the Intel logo, Intel SpeedStep, Intel NetBurst, Intel NetStructure, MMX, i386, i486, Intel386, Intel486, Intel740, IntelDX2, IntelDX4, IntelSX2,Celeron, Intel Centrino, Intel Xeon, Intel XScale, Itanium, Pentium, Pentium II Xeon, Pentium III Xeon, Pentium M, and VTune are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.
 
Copyright © 2002-2008 Intel Corporation.