LZO Data Compression Support in Intel® IPP

Submit New Article

May 23, 2010 10:00 AM PDT



Starting with the version 7.0 IPP Samples offers the example of using well-known lossless compression algorithm called LZO (Lempel-Ziv-Oberhumer) algorithm. This example uses IPP dictionary-based data-compression functions implementing Lempel-Ziv-Oberhumer algorithm (http://www.oberhumer.com/opensource/lzo). The result compressed data format is similar to Oberhumer's LZOP file format (http://www.lzop.org).

Basic properties LZO:
- Very fast compression. No need of encoded dictionary
- Decompression is very fast; in non-trivial cases able to exceed the speed of a straight memory-to-memory copy due to the reduced memory-reads.
- Decompression requires no additional memory other than the source and destination buffers.
- Allows the user to adjust the balance between compression quality and compression speed, without affecting the speed of decompression
Restriction of LZO:
Compression ratio is pretty low (~50%) compare with others compressions algorithms (like ZLIB as an example)


As an example of efficiency of this algorithm implementation, see below ( Fig.1 )the Performance results obtained on Core i7 CPU ( Nehalem), Linux 64, Intel® IPP v.7.0.
Lower is better.

Figure 1

LZO_1.bmp


where are:
Orig LZO – original LZO implementation
IPP LZO ST – single threaded IPP-based LZO implementation
IPP LZO MT-X – threaded IPP-based LZO implementation, where X is 2,4 and 8 threads.

These are the so called the average data for all Calgary Corpus dataset.




Do you need more help?


This article applies to: Intel® Integrated Performance Primitives Knowledge Base