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

IPP 6.1 vs IPP 7.1 zlib performance

Srinivasan_M_
Beginner
498 Views

Hello,

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/interfaces/data-compression/ipp_zlib/bin/intel64/ipp_z

/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.

0 Kudos
8 Replies
SergeyKostrov
Valued Contributor II
498 Views
>>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.
0 Kudos
Srinivasan_M_
Beginner
498 Views

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.

0 Kudos
Srinivasan_M_
Beginner
498 Views

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?

0 Kudos
SergeyKostrov
Valued Contributor II
498 Views
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.
0 Kudos
Srinivasan_M_
Beginner
498 Views

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-with-intel-ipp</a>, 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? 

0 Kudos
Gennady_F_Intel
Moderator
498 Views

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?

0 Kudos
Srinivasan_M_
Beginner
498 Views

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/interfaces/data-compression/ipp_zlib/bin/intel64/ipp_z

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

0 Kudos
Sergey_K_Intel
Employee
498 Views

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.

Regards,
Sergey 

0 Kudos
Reply