Intel® IPP 9.0 Update 3 is now available. IPP 9.0.x release added the new Intel® AVX-512 optimization for the computer vision and image processing functions, extended optimization for Intel® Atom™ and Intel® Quark™ processors, and included the new APIs to support external threading.
What's New in Intel® IPP 9.0 Update 3:
Improved zlib decompression performance for small data for Intel® 64 architectures.
Fixed a number of internal and external defects, including the memory corruption problem on ippiSet_16u_C1R functions.
What's New in Intel® IPP 9.0 Update 2:
Added the contiguous volume format (C1V) support to the following 3D data processing functions: ipprWarpAffine, ipprRemap, and ipprFilter.
Added the ippiFilterBorderSetMode function to support high accuracy rounding mode in ippiFilterBorder.
Added the ippiCopyMirrorBorder function for copying the image values by adding the mirror border pixels.
Added mirror border support to the following filtering functions: ippiFilterBilateral, ippiFilterBoxBorder, ippiFilterBorder, ippiFilterSobel, and ippiFilterScharr.
Kernel coefficients in the ippiFilterBorder image filtering functions are used in direct order, which is different from the ippiFilter functions in the previous releases.
Added 32-bit floating point input data support to the ippiSegmentWatershed function.
Added mirror border support to the following filtering functions: ippiFilterGaussianBorder, ippiFilterLaplacianBorder, ippiMinEigenVal, ippiHarrisCorner, ippiPyramidLayerDown, and ippiPyramidLayerUp.
Added the ippsThreshold_LTAbsVal function, which uses the vector absolute value.
Added the ippsIIRIIR64f functions to perform zero-phase digital IIR filtering.
The multi-threaded libraries only depend on the Intel® OpenMP* libraries; their dependencies on the other Intel® Compiler runtime libraries were removed.
Fixed a number of internal and external defects.
What's New in Intel® IPP 9.0 Update 1:
Enabled stack protection to enhance security of the Intel® IPP functions at Linux*. To link with Intel® IPP libraries, glibc version 2.4 or higher is now required.
Added several new functions in the Signal Processing, Color Conversion and Cryptography domains.
Optimized the following functions on Intel® Advanced Vector Extensions 2 (Intel® AVX2) both for Intel® 64 and IA-32 Architectures:
Signal Processing: ippsSumLn, ippsNormalize, ippsMinAbs, and ippsMaxAbs.
Image Processing: ippiConvert_32s16s, ippiHOG_16s32f_C1R, and ippiSwapChannels_32s_C3C4R.
Color Conversion: ippiColorToGray and YCbCr to RGB/BGR conversion functions.
Improved the LZO decompression function ippsDecodeLZO performance for Intel® Quark™ processors.
Fixed the position-independent code (PIC) problem in the Linux* dynamic libraries. The share libraries now provide the full PIC symbols
What's New in Intel® IPP 9.0:
Extended optimization for Intel® Advanced Vector Extensions 512 (Intel® AVX-512) instruction set in the Computer Vision and Image Processing functions.
Extended optimization for Intel® Atom™ processors in the Computer Vision and Image Processing functions.
Added optimization for Intel® Quark™ processors to the Cryptography and Data Compression functions.
Introduced the new Cryptography functions for SM2/SM3/SM4 algorithms.
Added a custom dynamic library building tool, which enables users to build the dynamic library containing the selected Intel® IPP functions.
Added the new APIs to support external threading.
Improved the CPU dispatcher by using target processor features instead of processor types. The static linkage does not require to explicitly call the processor initialization function now.
Provided the new native libraries for 64-bit Android* applications, and replaced the old ones from the Linux* binary.
Removed internal memory allocation in the single-threaded libraries.
The single-threaded libraries removed the dependency on the Intel® Compiler runtime libraries. The multi-threaded libraries only depends on the Intel® OpenMP* libraries.
Some specific Image Processing domain changes.
Some Intel IPP domains and functions are now legacy
Check the Intel® IPP release notes to find more information.
Intel® IPP packages are as part of Intel® Parallel Studio XE, Intel® System Studio. You can obtain as part of Intel fully supported suites, or you may qualify for free versions of such suites if you are an educator, open source developer or researcher, or you can obtain Intel IPP with a Community License at no charge.
- Intel fully supported suites: Intel IPP is part of a suite of Intel Software Development Products which are available worldwide for purchase. These products are backed by Intel, include Intel® Premier Support (which includes private direct support from Intel and support for past versions). Learn more at Intel® Parallel Studio XE, or Intel® System Studio
- You may qualify for free versions of such suites if you are an student, educator, open source developer or academic researcher: learn about requirement to qualify at software.intel.com/qualify-for-free-software
- Community Licenses for Intel Performance Libraries: Community licensing for Intel performance libraries comes with no access to Intel Premier Support, but (like the regular products) has no royalties, and no restrictions based on company or project size. Learn how to register for Community Licenses at software.intel.com/nest
The FIR function interfaces has been improved with the API. Please check the example code here to find its usage:
Regrading calling IPP in VB, I am sent you legacy sample code which was with old IPP release. You can take it as example on its usage.
In the code samples for FIR filtering supplied with Ipp9, what are the values for specSize and Bufsize given the initial definitions of Taps_Len=8 and Len = 1024. I want to make sure my VB code is coming back with the proper values.
I cannot understand the changes in API.
For example - instead of ippsFFTInitAlloc_C_32f one needs to use ippsFFTGetSize+ippsMalloc+ippsFFTInit .
What is that good for ? Why can't the Init function take care of ALL allocations?
The Init function:
IppStatus ippsFFTInit_R_32f(IppsFFTSpec_R_32f** ppFFTSpec, int order, int flag, IppHintAlgorithm hint, Ipp8u* pSpec, Ipp8u* pSpecBuffer);
Why do you need both ppFFTSpec and pSpec? Can't one structure hold everything?
I can't see pSpec is used in any call to the FFT execution function:
ippsFFTFwd_RToPack_32f(const Ipp32f* pSrc, Ipp32f* pDst, const IppsFFTSpec_R_32f* pFFTSpec, Ipp8u* pBuffer);
Do I need to keep it?
I look at the example you give (page 275). It is clearly an example of the previous version of the software. Couldn't you bother to give a valid example??? Same with the example page (270).
status = ippsFFTInitAlloc_R_32f(&spec, 3, IPP_FFT_DIV_INV_BY_N, ippAlgHintNone );
Thanks for reporting this, and we are reviewing the current documentation, and will fix such problems in the future release documentation.
It is right ippsFFTInitAlloc_C_32f is replaced by the external memory allocation, so users can manage the memory by themselves with more flexibility. The article may help to provide a few more background on this: https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-internal-memory-allocation-gone-memory-usage
For a better FFT example, could you have a check on this one?
It shows how to allocate/initialize different buffers.
Any issues on Rhel 7 we have seen with IPP 8.2 and icc (ICC) 15.0.1 20141023 performance issue. Do you have any benchmarks ?
It will be of great help if you can share some benchmarks and comparision with Rhel 6 reports.
The IPP included in Intel Parallel Studio works 99% identically with IPP_ICV. The original IPP applies only a few more functions to OpenCV than the IPP_ICV.
Regarding to your message #11 on this topic as response to Sorin, can you please provide some examples for fft in c# since all previous examples are using ippsFFTInitAlloc.
I recently setup the Intel® IPP and Intel® Parallel Studio XE Composer Edition for C++ to enable automatic link of Intel IPP to Visual Studio 2015. As per ippiGetLibVersion() function call I get "ippIP SSE4.2 (y8)" lib name and "9.0.3 (r51269)" lib version.
I do not seem to find any of the the functions including context. I get undefined identifier even when I include "ipp.h" and "ippcore.h". I also do not find "AES" string reference when i search the "C:\Program Files (x86)\IntelSWTools\" directory which is where Intel® IPP and Intel® Parallel Studio XE Composer Edition for C++ applications are installed.
Below is the output when I ran the program found at https://software.intel.com/en-us/node/503902
ippIP SSE4.2 (y8) | 9.0.3 (r51269)
Features supported by CPU by IPP
ippCPUID_MMX = Y Y Intel(R) Architecture MMX technology supported
ippCPUID_SSE = Y Y Intel(R) Streaming SIMD Extensions
ippCPUID_SSE2 = Y Y Intel(R) Streaming SIMD Extensions 2
ippCPUID_SSE3 = Y Y Intel(R) Streaming SIMD Extensions 3
ippCPUID_SSSE3 = Y Y Intel(R) Supplemental Streaming SIMD Extensions 3
ippCPUID_MOVBE = N N The processor supports MOVBE instruction
ippCPUID_SSE41 = Y Y Intel(R) Streaming SIMD Extensions 4.1
ippCPUID_SSE42 = Y Y Intel(R) Streaming SIMD Extensions 4.2
ippCPUID_AVX = N N Intel(R) Advanced Vector Extensions instruction set
ippAVX_ENABLEDBYOS = N N The operating system supports Intel(R) AVX
ippCPUID_AES = N N Intel(R) AES instruction
ippCPUID_SHA = N N Intel(R) SHA new instructions
ippCPUID_CLMUL = N N PCLMULQDQ instruction
ippCPUID_RDRAND = N N Read Random Number instructions
ippCPUID_F16C = N N Float16 instructions
ippCPUID_AVX2 = N N Intel(R) Advanced Vector Extensions 2 instruction set
ippCPUID_AVX512F = N N Intel(R) Advanced Vector Extensions 3.1 instruction set
ippCPUID_AVX512CD = N N Intel(R) Advanced Vector Extensions CD (Conflict Detection) instruction set
ippCPUID_AVX512ER = N N Intel(R) Advanced Vector Extensions ER instruction set
ippCPUID_ADCOX = N N ADCX and ADOX instructions
ippCPUID_RDSEED = N N The RDSEED instruction
ippCPUID_PREFETCHW = N N The PREFETCHW instruction
ippCPUID_KNC = N N Intel(R) Xeon Phi(TM) Coprocessor instruction set
IPP Crypto is another add-on package. You need to install this package as well. Please check this article on how to get this package:
I recently started to work with the Intel® KNL ("Adams Pass").
Installed the following SW tools:
- Microsoft Visual Studio 2012
- Intel® Parallel Studio 2016 XE edition, with IPP library V9.0 including update 3
Issues with SW tools support for the KNL:
1. IPP recognizes AVX512 architecture. However, disassembly shows SSE instructions in Signal Processing functions instead.(performance is accordingly).
Examples for Signal Processing functions apparently not supported: ippsAddProduct_32f, ippsMagnitude_32fc, ippsDotProduct_32fc.
2.Assembly code and registers content, which are specific to KNL, are not displayed by Microsoft Visual Studio 2012 (???????? instead).
Please advice.on how to proceed.