Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Intel® IPP 2019 Update 1 is now available

Chao_Y_Intel
Moderator
1,249 Views

Intel® IPP 2019 Update 1 is now available. Intel® IPP 2019 update 1 added new functions to support SM2 public key cryptographic algorithm. Intel® IPP 2019 added new functions to support ZFP floating-point data compression and decompression, and added Intel® Threading Building Blocks threading technology support in the Threading Layer APIs.

Check Intel® IPP 2019 release notes to learn more information.

What's New in Intel® IPP 2019 Update 1:

  • Added new functions to support SM2 public key cryptographic algorithm.
  • Added support for Universal Windows driver and Universal Windows Platform (UWP) in the sequential static libraries.
  • Added optimization for Intel® AVX-512 instruction set in the ippsFIRMR32f_32fc functions.
  • Added support for Android* OS and Threading Layer libraries in the Intel IPP Custom Library Tool based on Python*.
  • Removed support for IA-32 libraries on macOS* in this release.
     

What's New in Intel® IPP 2019:

  • Added new functions to support ZFP floating-point data compression and decompression. This release also introduces the optimization patch files for ZFP 0.5.2 source to provide drop-in optimization with the Intel® IPP functions:
    • ZFP is a lossy floating point data compression with controlled compression accuracy and compression rate. Intel® IPP ZFP functions are highly optimized for Intel® AVX2 and Intel® AVX-512 instruction sets.
    • Intel® IPP ZFP provides easy-to-use interfaces which allow for use of its functions directly in application source code. Intel® IPP ZFP also provides drop-in optimization patch files for open-source ZFP 0.5.2. Users’ applications can use open-source ZFP library interfaces with Intel® IPP optimized functions.
  • Added Intel® Threading Building Blocks threading technology support in the Threading Layer APIs. Check the “Threading Notes” part in the Release Notes to get more information.
  • Added new version of Intel IPP Custom Library Tool based on Python*. This version provides better compatibility on different operation systems. The previous version of Intel IPP Custom Library Tool is deprecated and will be removed in the future Intel IPP releases.
  • Added new APIs to compute CRC24 and CRC16 checksum with 1U input data. The APIs support CRC24A, CRC24B, CRC24С and CRC16 polynomial functions, and are included in the Intel® IPP embedded domain.
  • Color Conversion:
    • Added color conversion functions to convert RGB image to CIE Lab color model, or CIE Lab color model to RGB (ippiRGBToLab/ ippiLabToRGB).
  • Data Compression:
    • Added the optimization patch files for the bzip2 source to provide drop-in optimization with Intel® IPP functions. The patches now supports bzip2 version 1.0.6.
  • Performance:
    • Extended optimization for the Intel® Advanced Vector Extensions 512 (Intel® AVX-512) instruction sets.
  • Other Changes:
    • Removed support for Intel® Xeon Phi™ 72** product family coprocessor (formerly code name Knights Landing) on Windows* platform in this release.
    • Removed support for Intel® Quark™ microprocessors in this release.
    • The IA-32 libraries on macOS* are deprecated and will be removed in a future release.
  • Threading Notes:
    • Intel® IPP provides Threading Layer APIs on top of sequential Intel® IPP libraries. The APIs include two variants 1) functions with _T suffix in the names, providing threading implementation based on classic IPP APIs; 2) functions with _LT suffix, providing threading implementation based on Intel IPP Platform-Aware functions. The Threading Layer APIs support both OpenMP* and Intel® Threading Building Blocks threading technology. Source code of Intel® IPP Threading Layer is also available in IPP package as example and basis to organize threading for pipeline inside a customer application.
    • The legacy Intel IPP threaded libraries are still available by custom installation, and the code written with these libraries will work as before. However, the threaded library will not expand its threading functions, and the new threading will be developed only in the new Intel® IPP threading layer APIs.
    • User applications are recommended to use the new Intel® IPP Threading Layer APIs or implement the threading based on IPP Threading Layer source code examples in their applications. Check the “Threading Layer Functions” section in the Intel® IPP Developer Reference, to get more information on these APIs.

Intel® IPP packages are as part of Intel® Parallel Studio XEIntel® System Studio, and a free community licenses version:

0 Kudos
8 Replies
Royi
Novice
1,249 Views

Congrats!

3 Questions I have:

1. Is there a guide which explains what are "Platform Aware Functions? How are they different from regular functions?
2. Is there a guide explaining how to thread properly the current sequential IPP functions?
3. Is there a list of functions with Threaded version? Where can I see the list of T and TL functions? Do they work in C (I need threaded IPP in C)? Do they require linking to Static Single Threaded IPP or Static Multi Threaded IPP?

Thank You.

0 Kudos
Chao_Y_Intel
Moderator
1,249 Views

Thanks, Royi.

For your questions: 
1)Intel® IPP platform-aware functions provide large size data support for signal and image processing domain on 64 bit platform:  It use IppSizeL for object sizes.  which  can be 32-bit on IA32,  or 64-bit wide on Intel64.
Check here for a few detail: 

https://software.intel.com/en-us/ipp-dev-guide-using-intel-integrated-performance-primitives-platform-aware-functions

Some a few platform-aware APIs also support internal threading, which has _TL suffix in the name.

2) IPP sequential library is threaded safe. so, it is fine to implement your high level threading, and each threading call IPP function internally.   The IPP code provides some example show how to implement the high level threading with IPP sequential libraries at this folder (unzip the example files first): 
examples/components/interfaces/tl

3)The IPP threading layer functions are listed in the  _TL.h header files.  For example:
ippcc_tl.h
ippi_tl.h

They can be called from both C code, and C++ code. Here some details on the usage:
https://software.intel.com/en-us/ipp-dev-guide-using-intel-integrated-performance-primitives-threading-layer-tl-functions

It needs to link with additional threading layer libraries:
  tl/<threading_type>, where threading_typeis one of {tbb, openmp}.

Currently, we are gradually adding more functions to support Threaded. Let us know if you want to extend some IPP functions.

Thanks,
Chao

0 Kudos
Royi
Novice
1,249 Views

Hi Chao,

Thank you for the great answer.
I will read things.

The most important functions to have Multi Threaded version of is Image Filtering related functions (Gaussian, Box Blur, Running Sum, Border Filter, Separable Filter, Median, Bilateral, etc...).
Then all element wise functions.
I will look to see what's missing.

By the way, what about FFT?
FFT can't be multi threaded on the application level and if I must link to the Single Threaded IPP I will have single threaded FFT which makes no sense. Do you have solution for that?

By the way Chao, could any of the team address the issue I'm having with creating a static linked library from IPP - https://software.intel.com/en-us/forums/intel-integrated-performance-primitives/topic/542168.
Will it be solved in version 2019?

0 Kudos
Adriaan_van_Os
New Contributor I
1,249 Views

"Added color conversion functions to convert RGB image to CIE Lab color model, or CIE Lab color model to RGB (ippiRGBToLab/ ippiLabToRGB)"

Older versions of IPP already have ippiRGBToLab/ippiLabToRGB. Or have new variants of these functions been added ?

Regards,

Adriaan van Os

 

0 Kudos
Chao_Y_Intel
Moderator
1,249 Views

Thanks Royi, Adriaan for the list of the function.   We tracked for the request for the following release for these threading functions. 

@Roy,  For the static library,  Pavel provided a response.  the issue for creating static library is hard to resolve the internal reference that is required by the exported APIs.  Creating a dynamic library is easy, and IPP provide some tools in its package to support it. 

Regards,
Chao

 

0 Kudos
zhu__xuewu
Beginner
1,249 Views

I want to compare the SM3/4 performance of the ippcp and openssl. I`ve try the lasted version of ippcp and openssl, but the result is that openssl do better than ippcp in SM4 and ippcp do better than openssl but not much better.

So, I want to know is that real? If not, could you please give me some suggest on how to use the ippcp library correctly or some examples.

Thank you!

0 Kudos
Pavel_B_Intel1
Employee
1,249 Views

zhu, xuewu wrote:

I want to compare the SM3/4 performance of the ippcp and openssl. I`ve try the lasted version of ippcp and openssl, but the result is that openssl do better than ippcp in SM4 and ippcp do better than openssl but not much better.

So, I want to know is that real? If not, could you please give me some suggest on how to use the ippcp library correctly or some examples.

Thank you!

Hello,

do you link your application with dynamic library? If yes - please try to link with static library, we detected a performance issue in IPP crypto dynamic library and we are working to fix the problem.

In general IPP Crypto and OpenSSL have the same performance (sometimes IPP Crypto is faster, sometimes OpenSSL is faster). The both libraries are highly optimized for Intel(r) architecture.

If you see performance problems in IPP Crypto vs. OpenSSL with static library could you, please, provide more info in a separate thread on the forum. 

Thank you,
Pavel

0 Kudos
zhu__xuewu
Beginner
1,249 Views

Thanks for you reply!

I`ve tried you suggest, the performance of IPP Crypto with static library is much better than that with dynamic library. But SM4 performance still no better than OpenSSL. I paste my test code in topic/799991, I hope you can have a look.

Thank you!

ZhuXuewu

0 Kudos
Reply