License Definitions
Overview
Intel IPP Functions used in the interface
System Requirements
Package Contents
How to Build Source Code
Running the Interface
Technical Support and Feedback
Disclaimer
By downloading and installing this sample, you hereby agree that the accompanying Materials are being provided to you under the terms and conditions of the End User License Agreement for the Intel® Integrated Performance Primitives product previously accepted by you. Please refer to the file ippEULA.rtf or ippEULA.txt located in the root directory of your Intel® IPP product installation for more information.
The ipp_zlib interface demonstrates how to use functions provided by Intel® Integrated Performance Primitives (Intel® IPP) Data Compression domain for the implementation of zlib library interfaces over them. The interface contains the source codes of the open source zlib compression library implemented over specific DEFLATE/ZLIB/GZIP format compatible primitives. The makefile provided allows building the libipp_z.a library from the sources. The libipp_z.a library contains the same set of API that the recent version of the open source zlib library does. At the same time, libipp_z.a supports compatibility with the DEFLATE/ZLIB/GZIP format of the compressed data (described in rfc1950, rfc1951, rfc1952). Due to these facts, the lib ipp_z.a library can be linked to any application that uses open source zlib instead of open source libz.a to improve the application's performance. Note that no changes need to be done in the application sources to switch from libz.a to libipp_z.a.
Additional information on this software as well as other Intel software performance products is available at http://www.intel.com/software/products/.
The set of the specific DEFLATE/ZLIB/GZIP format compatible primitives allows implementing the whole set of zlib API. The table below contains the set of zlib API in the left column and the sets of corresponding DEFLATE/ZLIB/GZIP format compatible primitives that are necessary for implementing zlib API over Intel® IPP in the right column.
Table: Intel® IPP primitives for implementing the set of zlib API
ZLIB API |
Intel® IPP API |
deflateInit |
ippsEncodeLZ77Init_8u ippsEncodeLZ77GetSize_8u ippsEncodeLZ77InitAlloc_8u |
Deflate |
ippsEncodeLZ77_8u ippsEncodeLZ77SelectHuffMode_8u ippsEncodeLZ77FixedHuff_8u ippsEncodeLZ77DynamicHuff_8u ippsEncodeLZ77StoredBlock_8u |
deflateEnd |
ippsLZ77Free_8u |
deflateReset |
ippsEncodeLZ77Reset_8u |
inflateInit |
ippsDecodeLZ77GetSize_8u ippsDecodeLZ77Init_8u ippsDecodeLZ77InitAlloc_8u |
Inflate |
ippsDecodeLZ77GetBlockType_8u ippsDecodeLZ77FixedHuffFull_8u ippsDecodeLZ77DynamicHuffFull_8u ippsDecodeLZ77StoredBlock_8u |
inflateEnd |
ippsLZ77Free_8u |
inflateSetDictionary |
ippsDecodeLZ77SetDictionary_8u |
inflateSync |
ippsDecodeLZ77FixedHuff_8u |
inflateCopy |
ippsDecodeLZ77CopyState_8u |
inflateReset |
ippsDecodeLZ77Reset_8u |
adler32 |
ippsAdler32_8u |
crc32 |
ippsCRC32_8u |
The key functions of the zlib library are compression function 'deflate' and decompression function 'inflate'. Functions adler32, crc32(see references) are the checksum calculating functions. They are used for checking the data integrity and the decoding correctness. The rest of functions listed in the table above are service functions that are necessary for supporting different modes of compression or decompression and for operating with the zlib internal state structures.
The Intel® IPP Ipp_zlib Interface for Linux contains the following files:
.\interfaces\ |
|
ippEULA.rtf or ippEULA.txt |
End User License Agreement |
support.txt |
Contains technical support information |
.\interfaces\data-compression\ipp_zlib\ |
|
build_ia32.sh |
Script for building the interface for IA-32 architecture based Linux system |
build_intel64.sh |
Script for building the interface for Intel® 64 architecture based Linux system |
Makefile |
Make file to build interface applications ippcompress , ippdecompress and libraries: libippdcfunc.a – library of upper level functions libipp_z.a – zlib library implemented over primitives |
readme.htm |
This file |
.\interfaces\data-compression\ipp_zlib\src\** |
|
adler32.c |
Implementation of Adler32 zlib API over corresponding Intel® IPP data compression primitives |
algorithm.txt |
Unchanged zlib-1.2.3 source files |
compress.c |
|
crc32.c |
Implementation of crc32 zlib API over corresponding Intel® IPP data compression primitives |
crc32.h |
Unchanged zlib-1.2.3 source file |
deflate.c |
Implementation of deflate zlib API and related service zlib API over corresponding Intel® IPP data compression primitives |
deflate.h |
Header file for deflate.c |
gzio.c |
Unchanged zlib-1.2.3 source files |
infback.c |
|
inffast.c |
|
inffast.h |
|
inffixed.h |
|
inflate.c |
Implementation of inflate zlib API and related service zlib API over corresponding Intel® IPP data compression primitives |
inflate.h |
Header file for inflate.c |
inftrees.c |
Unchanged zlib-1.2.3 source files |
inftrees.h |
|
ipp_static.cpp |
ipp_zlib specific file containing the description of C++ class that uses IppStaticInit() function as a constructor |
trees.c |
Unchanged zlib-1.2.3 source files |
trees.h |
|
uncompr.c |
|
zconf.h |
|
zconf.in.h |
|
zlib.3 |
|
zlib.h |
|
zutil.c |
|
zutil.h |
(**) – Folder .\interfaces\data-compression\ipp_zlib\src contains the zlib-1.2.3 library sources that are updated in order to make the key API use Intel® IPP Data Compression primitives. Not all of the sources listed are updated. The reason why they are included into the Ipp_zlib interface is as follows: it is necessary to make the ipp_zlib (updated zlib-1.2.3) structure the same as the standard open zlib delivery in order to make it possible to carry out patching the zlib-1.2.3 sources by differences with ipp_zlib sources. Unchanged zlib-1.2.3 sources are set in Italics.
Before building, the directories for the Intel® IPP shared objects must be added to your
environment settings.
Set up your build environment by creating an environment variable named
IPPROOT that points to the root directory of your Intel® IPP installation.
The shared libraries are located in the sharedlib subdirectory of the root directory of the Intel® IPP installation (IPPROOT). This can be done by setting the DYLD_LIBRARY_PATH environment variable manually or by invoking the batch file: " $IPPROOT/bin/ippvars.sh " from the Intel® IPP installation.
+ To build for an IA-32 architecture based system, run ./build_ia32.sh.
As a result of correct building, executable
file :
./bin/linux32
/
ipp_minigzip
and static library :
./bin/linux32/
libipp_z.a
should be created
+ To build for the Intel® Xeon® Processor with Intel® 64 architecture, run ./build_intel64.sh
As a result of correct building, executable
file :
./bin/linuxem64t
/
ipp_minigzip
and static library :
./bin/linuxem64t/
libipp_z.a
should be created
To run each executable created by this interface, the Intel® IPP shared libraries must be on the system's path. The shared libraries are located in the sharedlib subdirectory of the root directory of the Intel® IPP installation (IPPROOT). This can be done by setting the DYLD_LIBRARY_PATH environment variable manually or by invoking the batch file: "$IPPROOT/bin/ippvars.sh" from the Intel® IPP installation.
When built, the Ipp_zlib interface contains one executable file: ipp_minigzip . This file can be used for compression and decompression files. If no files are listed, then standard input and output are used.
The ipp_minigzip has the following usage:
Usage: minigzip [-d] [-f] [-h] [-r] [-1 to -9] [files...]
-d : decompress
-f : compress with Z_FILTERED
-h : compress with Z_HUFFMAN_ONLY
-r : compress with Z_RLE
-1 to -9 : compression level
Example of usage of command line arguments:
1) To encode the source file 'text.txt', type the following command:
ipp_minigzip text.txt
2) To decode the source file 'text.txt.gz', type
ipp_minigzip -d text.txt.gz
To receive support or provide feedback refer to the "Technical Support and Feedback" section of the release notes (ReleaseNotes.htm) provided in the Intel® IPP product installation.
Your feedback on the Intel IPP samples is very important to us and your input will be considered for future releases. The Intel IPP sample code is intended only as an example of how to use the APIs to implement algorithms in different development environments. Please submit problems with installation, compiling, linking, runtime errors or incorrect output to Intel® Premier Support.
You can also share and discuss the experience of IPP sample usage with other developers at Intel Software Developer Forum.
Optimization Notice |
---|
The Intel® Integrated Performance Primitives (Intel® IPP) library contains functions that are more highly optimized for Intel microprocessors than for other microprocessors. While the functions in the Intel® IPP library offer optimizations for both Intel and Intel-compatible microprocessors, depending on your code and other factors, you will likely get extra performance on Intel microprocessors. While the paragraph above describes the basic optimization approach for the Intel® IPP library as a whole, the library may or may not be optimized to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3), and Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3) instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Intel recommends that you evaluate other library products to determine which best meets your requirements. |
INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS.
NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL
PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S
TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY
WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING
TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES
RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT
OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED
NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD
CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
Intel may make changes to specifications and product descriptions at any time,
without notice. Designers must not rely on the absence or characteristics of any
features or instructions marked "reserved" or "undefined." Intel reserves these
for future definition and shall have no responsibility whatsoever for conflicts
or incompatibilities arising from future changes to them. The information here
is subject to change without notice. Do not finalize a design with this
information.
The products described in this document may contain design defects or errors
known as errata which may cause the product to deviate from published
specifications. Current characterized errata are available on request.
Contact your local Intel sales office or your distributor to obtain the latest
specifications and before placing your product order.
Copies of documents which have an order number and are referenced in this
document, or other Intel literature, may be obtained by calling 1-800-548-4725,
or go to:
http://www.intel.com/#/en_US_01
Intel processor numbers are not a measure of performance. Processor numbers
differentiate features within each processor family, not across different
processor families. See
http://www.intel.com/products/processor_number
for details.
BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino Inside, Core Inside,
i960, Intel, the Intel logo, Intel Atom, Intel Atom Inside, Intel Core,
Intel Inside, Intel Inside logo, Intel NetBurst, Intel NetMerge,
Intel NetStructure, Intel SingleDriver, Intel SpeedStep,
Intel Sponsors of Tomorrow., the Intel Sponsors of Tomorrow. logo,
Intel StrataFlash, Intel Viiv, Intel vPro, Intel XScale, InTru, the InTru logo,
InTru soundmark, Itanium, Itanium Inside, MCS, MMX, Moblin, Pentium,
Pentium Inside, skoool, the skoool logo, Sound Mark, The Journey Inside,
vPro Inside, VTune, Xeon, and Xeon Inside
are trademarks of Intel Corporation in the U.S. and other countries.
* Other names and brands may be claimed as the property of others.
Microsoft, Windows, Visual Studio, Visual C++, and the Windows logo are trademarks, or registered trademarks of Microsoft Corporation in the United States and/or other countries.
Copyright (C) 2002-2010, Intel Corporation. All rights reserved.