IPP 6.1 vs IPP 7.1 zlib performance

IPP 6.1 vs IPP 7.1 zlib performance


We are using zlib in our software and we are using IPP 6.1 to improve the zlib performance. It gives 35 - 45% improvement over the zlib without IPP. We installed IPP 7.1 and linked the following static library functions for data compression


/opt/intel/ipp/lib/intel64/ (ippdc_l, ipps_l, ippcore_l)

However after testing, we found there is around 20% performance degradation.

Wondering what could be wrong?

For your information,

I am testing IPP on a 8 core (Intel (R) Xeon (R) X5550 @ 2.67 GHz) phyical server.

I am testing on a three different data sets (random data that can't be compressed, mix of random and compressible data and mostly compressible data)

Please let me know if you need further information on the testing.

9 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

>>Wondering what could be wrong?
>>For your information,
>>I am testing IPP on a 8 core (Intel (R) Xeon (R) X5550 @ 2.67 GHz) phyical server...

I suggest you to verify if a default Waterfall IPP module was used. If Yes, it could be the answer on your question.

Could you please let me know how to verify if a default waterfall IPP module is being used? 

For your information, I am testing on a SLES linux operating environment.

I am using the libipp_z.a from /opt/intel/ipp/interfaces/data-compression/ipp_zlib/bin/intel64

Do you refer this as waterfal ipp module?

Here is a small example I recently did ( even if it is for a 64-bit Windows platform it gives you some idea ):

// Verification for DSP domain DLL ( AVX / e9 ) is needed
List of IPP DLLs used:

24/09/2012 11:25 PM 144,864 ippcore-7.1.dll
24/09/2012 11:25 PM 240,608 ipps-7.1.dll
25/09/2012 01:21 AM 5,499,360 ippse9-7.1.dll

#include "stdio.h"
#include "ipps.h"

int main( void )
Ipp32f fData[ 256 ];

printf( "Test Started\n" );

IppStatus st = ::ippsZero_32f( &fData[0], 256 );

printf( "Test Completed\n" );

return ( int )1;

[ Output ]

Test Started
Test Completed

Note: Let's call ippcore-7.1.dll and ipps-7.1.dll as regular DLLs and ippse9-7.1.dll is the Waterfall ( CPU dispatched ) DLL. Code e9 means that ippse9-7.1.dll DLL is optimized for CPUs with AVX instruction set.

I believe, I am not using any default waterfall ipp module in my testing.

Also, we are using crypto library from openssl. On reading this blog post <a>http://software.intel.com/en-us/articles/boosting-openssl-aes-encryption..., I find that I need to patch up openssl with intel ipp to get the performance boost on SHA, AES library functions. I am working with openssl 1.0.1c. Where can I get the patch file for 1.0.1c?

Also, the ipp version of crypto and ssl don't come by default without patching? 

what is the compression level did you use? Can you test 6.1 and 7.1 implementations with the some of files from Calgary Corpus?

I am using the compression level 1. I tested with the Calgary Corpus files and the results are same. IPP 6.1 performs better than 7.1

Could someone confirm on whether I am linking the right libraries? Following are the libraries that I link with,


/opt/intel/ipp/lib/intel64/ (ippdc_l, ipps_l, ippcore_l)

Hi Srinivasan,

IPP zlib 6.1 and 7.1 have the different levels of compression, so different perfomance. Look at the table I got for Calgary on 6.1/7.1. The times in msec. Ratio in compr.size/original size (the lower the better).

zlib Level       ratio(6.1)    ratio(7.1)    comp.time(6.1)  comp.time(7.1)   decomp.time(6.1)   decomp.time(7.1)
1                  39.7%        37.3%        33.8                  43.2                   16.4                      15.3
2                  39.7%        36.5%        33.7                  45.2                   17.8                      15.1
3                  39.7%        35.7%        33.2                  47.7                   16.0                      15.0
4                  34.4%        34.2%        68.3                  67.2                   14.9                      14.7
5                  34.4%        33.2%        64.8                 109.0                   14.7                     14.7
6                  34.4%        32.8%        64.0                 163.9                   15.3                     14.8
7                  34.4%        32.7%        66.4                 165.7                   14.4                     14.8
8                  32.6%        32.6%      215.3                 185.9                   14.5                     14.5
9                  32.6%         32.6%     215.2                 217.3                   14.1                     14.5

So, you can see, that 7.1's level 0 corresponds to 6.1's level ~3.5. The more or less comparable levels (in terms of compression ratio) are 4 and 8. In 7.1 there is no 6.1/level 1 analog.

The measurements are done very rough, so there could be some fluctuations in the results. I just wanted to show the tendency.

6.1 ipp_zlib is based on zlib 1.2.3. 7.1 is based on zlib 1.2.5.



Leave a Comment

Please sign in to add a comment. Not a member? Join today