In Intel® Integrated Performance Primitives (Intel® IPP) 8.2 and later versions, multi-threading (internal threading) libraries are deprecated due to issues with performance and interoperability with other threading models, but made available for legacy applications. Intel IPP threaded libraries are not installed by default; these threaded libraries are available by the custom installation, so the code written with these libraries will still work as before. However, the multi-threaded libraries are deprecated and moving to external threading is recommended. Your feedback is welcome. Please fill out the deprecated feature feedback form with your usage specifics
For new application development, it is highly recommended to use the single-threaded versions with application-level threading (as shown in the below picture).
Intel IPP 8.2 and later versions installation will have single threaded libraries in the following directory structure:
<ipp directory>lib/ia32 – Single-threaded Static and Dynamic for IA-32 architecture
<ipp directory>lib/intel64 - Single-threaded Static and Dynamic for Intel® 64 architecture
Static linking (both single-threaded and multi-threaded libraries)
Dynamic Linking: Default (no suffix)
Answer: Yes, Intel IPP supports external threading as in the below picture. The user has the option to use different threading models like Threading Building Blocks (TBB) (or Intel® Threading Building Blocks (Intel® TBB)), Intel® Cilk™ Plus, Windows* threads, OpenMP* or PoSIX*. All Intel Integrated Performance Primitives functions are thread-safe.
Answer: While installing Intel IPP, choose the ‘custom’ installation option. Then you will get the option to select threaded libraries for different architectures.
To select the right package of threaded libraries, right-click and enable the ‘Install’ option.
After selecting threaded libraries, the selected option will get highlighted with a mark and the memory requirement for threaded libraries will get highlighted.
Threading in Intel IPP 8.1 and earlier versions
Threading within the deprecated multi-threaded add-on packages of the Intel IPP library is accomplished by use of the OpenMP* library. Intel IPP 8.0 continues the process of deprecating threading inside Intel IPP functions that was started in version 7.1. Though not installed by default, the threaded libraries can be installed so code written with these libraries will still work as before. However, moving to external threading is recommended.
Answer: You can use the function ippGetNumThreads to find the number of threads created by Intel IPP.
Answer: Call the function ippSetNumThreads to set the number of threads created.
Answer: Yes, if you are calling the Intel IPP functions from multiple threads, it is recommended to have Intel IPP threading turned off. There are 3 ways to disable multi-threading:
Answer: This issue occurs because the threading technologies used in your application and in Intel IPP (which has OpenMP* threading) are incompatible. The ippSetNumThreads function has been developed so that threading can be disabled in the dynamic libraries. Please also check the sections above for other ways to prevent Intel IPP functions from creating threads.
Answer: The "ThreadedFunctionsList.txt" file in the ‘doc’ folder under the product installation directory provides a detailed list of threaded functions in the Intel IPP Library. The list is updated in each release.
Please let us know if you have any feedback on deprecations via the feedback URL
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