Intel® Integrated Performance Primitives (Intel® IPP)

  • Performance: Pre-optimized Building Blocks Perform Faster
  • Previewing Intel® Graphics Support. Click here!
  • Cross-Platform and Operating System
  • Now available as a standalone product for OS X*!
  • Introducing a separate download package for Android* OS.

$199
Buy Now

Or Download a Free 30-Day Evaluation Version

Intel Integrated Performance Primitives

A Library of Highly Optimized Algorithmic Building Blocks for Media and Data Applications

Intel® Integrated Performance Primitives (Intel® IPP) 8.1 is an extensive library of software functions for multimedia processing, data processing, and communications applications for Windows*, Linux*, Android*, and OS X* environments.

Intel® Integrated Performance Primitives Highlighted Features

Overview

  • Optimized for Performance: Intel® IPP software building blocks are highly optimized using Intel® Streaming SIMD Extensions (Intel® SSE) and Intel® Advanced Vector Extensions (Intel® AVX) instruction sets so your application will perform faster than what an optimized compiler can produce alone.

  • Intel Engineered to Save You Time: Because Intel has done the engineering on these ready-to-use, royalty-free functions, you’ll not only have more time to develop new features for your application, but in the long run you’ll also save development, debug and maintenance time while knowing that the code you write today will run optimally on future generations of Intel processors.

  • Thousands of Frequently Used Functions: Intel® IPP offers thousands of optimized functions covering frequently used fundamental algorithms including those for creating digital media, enterprise, data, embedded, communications, and scientific / technical applications.

New Preview Features:

New Production Features:

  • Standalone OS X* support added (previously distributed only via the OSX* Composer suite)
  • Microsoft Windows 8* UI supported via single-threaded static libraries
  • Standalone package for Android* OS. See Using Intel® Integrated Performance Primitives with Android* OS
  • Standalone package and Intel® IPP within the Intel® Composer XE suite now have support for Intel® Xeon Phi™ coprocessors

Click on images for a larger view of the benchmark graphic.

Performance Benchmarks

Performance ChartPerformance Comparison Details
ippiFilter

ippiFilter

Performance is significantly faster than an optimized compiler with further improvements over multiple generations of SSE and Intel® AVX instruction sets.

ippsSqrt32f

ippsSqrt32f

Intel® Compiler vectorization makes a major difference in Sqrt performance alone, but Intel IPP provides significant performance boost over the Intel® Compiler.

Featured Articles

未找到内容

Supplemental Documentation

未找到内容
订阅

You can reply to any of the forum topics below by clicking on the title. Please do not include private information such as your email address or product serial number in your posts. If you need to share private information with an Intel employee, they can start a private thread for you.

New topic    Search within this forum     Subscribe to this forum


build IPP with ICC?
By Int B.2
  Compiling IPP audio-video-codecs on Linux (debian), using gcc works great... $ ./build.sh --sample=audio-video-codecs --arch=intel64 --ws=make --build  but since I have the intel compiler, i wanted to use it to compile $ icc --version icc (ICC) 14.0.2 20140120 Copyright (C) 1985-2014 Intel Corporation. All rights reserved.   however, when i do this... ./build.sh --sample=audio-video-codecs --arch=intel64 --compiler=intel --ws=make --build  i get -- The C compiler identification is Intel 14.0.0.20140120 -- The CXX compiler identification is Intel 14.0.0.20140120 -- Check for working C compiler: /opt/intel/composer_xe_2013_sp1.2.144/bin/intel64/icc -- Check for working C compiler: /opt/intel/composer_xe_2013_sp1.2.144/bin/intel64/icc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /opt/intel/composer_xe_2013_sp1.2.144/bin/intel64/icc -- Check for working CXX compiler: /opt/intel/composer_xe_2013_sp1.2.144/bin/...
ippiGrayToBin_8u1u_C1R. What bit order will be in result?
By ANNA K.1
I want convert 8u matrix to 1u matrix using ippiGrayToBin_8u1u_C1R. Can I assume that bits in result have the same order as the source elements? Does this function use big-endian or little-endian format?
IPP 8.1 ippiMorphOpenBorder
By giacomo-carsana1
Hi, I'm porting from Ipp 7.0.6 to Ipp 8.1.0 a function that use ippiMorphOpenBorder_32f_C1R. Code doesn't compile with this error error C2660: 'ippiMorphOpenBorder_32f_C1R' : function does not take 7 arguments. I've find a difference from Ipp 8.1.0 documentation and function prototype in ippcv.h Documentation states : IppStatus ippiMorphOpenBorder_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize, IppiBorderType borderType, IppiMorphAdvState* pState); Header function definition : IPPAPI( IppStatus, ippiMorphOpenBorder_32f_C1R,(                 const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep,                 IppiSize roiSize, IppiBorderType borderType, Ipp32f borderValue, const IppiMorphAdvState* pMorthSpec, Ipp8u* pBuffer )) Assuming that the header definition is right it's not clear for me which is the size of pBuffer and which function I must call to obtain this size. Thank's in advance
ippiMorphOpenBorder_32f_C1R
By giacomo-carsana8
Hi, I'm porting from Ipp 7.0.6 to Ipp 8.1.0 a function that use ippiMorphOpenBorder_32f_C1R. Code doesn't compile with this error error C2660: 'ippiMorphOpenBorder_32f_C1R' : function does not take 7 arguments. I've find a difference from Ipp 8.1.0 documentation and function prototype in ippcv.h Documentation states : IppStatus ippiMorphOpenBorder_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize, IppiBorderType borderType, IppiMorphAdvState* pState); Header function definition : IPPAPI( IppStatus, ippiMorphOpenBorder_32f_C1R,(                 const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep,                 IppiSize roiSize, IppiBorderType borderType, Ipp32f borderValue, const IppiMorphAdvState* pMorthSpec, Ipp8u* pBuffer )) Assuming that the header definition is right it's not clear for me which is the size of pBuffer and which function I must call to obtain this size. Thank's in advance
MPEG2TS file made using umc_samplecode(umc_mpeg2_muxer) will not play properly
By SeongRyong B.1
Hello MPEG2 Muxer for using IPP development. By using UMC SampleCode Muxing H264 VideoStream MPEG2TS File to save the hayeotneunde, This file is to be played in a particular Player, Elecard Analyzer opened in case, PAT, PMT and all information will be properly analyzed. However, when opened in VLC or Elecard StreamEye, "Unsupported format" called out. VideoStream MPEG2TS Tool to extract only the case make it, finishing the analysis typically H264 files, StreamEye also in the normal operation. Muxing a file attachment with the table here, thank you dambyeon. Thank you.
IPP 8.1.0: linking libipps.a on MacOSX generates an error
By Zbigniew L.2
I wanted to link the IPP library (8.1.0) with my program using the clang compiler on a MacOSX, and I get this error: ld: '_e9_ipps_initTabTwdBase_64f' in libipps.a(psfftdblkcn_e9---ipps_initTabTwdBase_64f.o) contains undefined reference for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) What can be a reason for such a behavior? Is it a bug, or do I do something wrong? I use clang version 4.2 on an x86-64 Intel machine. Thanks, Zbigniew  
UIC Jpeg encoding color distortion
By Matthew C.4
I am trying to encode raw bitmap pixel data to a jpeg encoded equivalent. I am able to compile the uic example given (uic_transcoder_con) and everything is working fine. When I try to implement the sample into my code however I am getting a color distorted version of my original image. I have the same encoding parameters as the example and have tried using other combinations but to no success. I have attached a sample image I am trying to encode and the resulting jpeg I get after the encoding. Here is a snippet of the code I am trying out. ..... //BEGIN ENCODING PROCESS ExcStatus excStatus = ExcStatusOk; JPEGEncoder encoder; Image imageCn; ImageDataPtr dataPtr; ImageDataOrder dataOrder; Rect refgrid; RectSize size; Point origin; ImageSamplingGeometry geometry; CMemBuffOutput* out = new CMemBuffOutput(); BaseStream::TSize mosize; Ipp8u* buf; int nOfComponents = numSamples; //int du = ((8&255)+7)/8 ; int step = dstWidth * nOfComponents; mosi...
IPP 8.1 H264 performance
By Ivan K.2
Hi, I downloaded 30-days evaluation version of IPP 8 and compiled video-encoder: umc_video_enc_con. Encoding speed for h264 looks too slow, compare to mpeg2: mpeg2 - 200 fps, mpeg4 - 130 fps, vc1 - 40 fps, h264 - 30 fps QUESTION: Is it a limitation of demo-version, bug or feature? Below is output screen of console application: umc_video_enc_con.exe d:encoder.cfg -c h264 -t 2 -r 720 480 -b 1800000 -i ice_720x480.yv12 -o ipp.h264 Intel(R) IPP: ippCore 8.0.0 (r40040) May 22 2013 ippSP SSE4.1/4.2 (p8)+ 8.0.0 (r40040) May 22 2013 ippIP SSE4.1/4.2 (p8)+ 8.0.0 (r40040) May 22 2013 ippVC SSE4.1/4.2 (p8)+ 8.0.0 (r40040) May 22 2013 ippCV SSE4.1/4.2 (p8)+ 8.0.0 (r40040) May 22 2013 ippCC SSE4.1/4.2 (p8)+ 8.0.0 (r40040) May 22 2013 Input file name: ice_720x480.yv12 Output file name: ipp.h264 Input data: YUV420 (8,8,8) PROG. 720x480 (1:1) Output stream: H264 YUV420 (8,8,8) PROG. 720x480 (1:1) 30.00fps 1800000bps P100 L30 Progress: 100.00%; Frames: 2013; FPS: 34.13 Statistic (2013 fr...

页面

订阅 论坛
  • What is Intel® IPP?
  • Intel® Integrated Performance Primitives (Intel® IPP) is an extensive library of software functions to help you develop multimedia, data processing, and communications applications for Windows*, Linux*, OS X*, and Android* environments. These functions are highly optimized using Intel® Streaming SIMD Extensions (Intel® SSE) and Intel® Advanced Vector Extensions (Intel® AVX) instruction sets which often outperform what an optimized compiler can produce alone. Because Intel has done the engineering on these ready-to-use, royalty-free functions, you'll not only have more time to develop new features that differentiate your application, but in the long run you'll also save development, debug and maintenance time while knowing that the code you write today will run optimally on future generations of Intel processors.
  • What's new in Intel® IPP 8.1?
    • All Intel® IPP functions are now available for the Intel® Xeon Phi™ product family.
    • Image Processing and Computer Vision:
      • Added the ippiFilterBilateralBorder, ippiFilterGaussianBorder, ippiLabelMarkers, and ippiCannyBorder functions with extended data type and borders support.
      • Added new functions: ippiGradientVector, ippiFilterSobelBorder, ippiSAD.
      • Added extended axis support (45 and 135 degree) to the ippiMirror function.
  • What are the Intel® IPP Previews?
  • Intel® IPP is now providing technology previews of two new APIs (OpenCL and Asynchronous C/C++) focused on the image processing domain. Both models enable targeting Intel® HD Graphics and Intel® Iris™ graphics components of the Intel® processor. Try it out and take part in our new forums dedicated to these APIs. For more info, check out our preview website at: http://software.intel.com/intel-ipp-preview
  • What do I need to do to enable great performance on new platforms with Intel® IPP?
    • With Intel® IPP you get great CPU performance today and tomorrow. With each instruction set upgrade a new implementation layer is added. Previous implementations will work as before, but functions which can benefit from new hardware capabilities will be updated and validated before the new architecture is publicly released. With IPP you get the keys to unlock new performance delivered with new hardware so you can start utilizing its new CPU capabilities right away instead of interrupting development cycles for additional optimizations. In some cases the performance boost will be automatic. In most other cases all you need to do is recompile.
    • GPU performance is increasingly important. While the technology previews are less mature than IPP's CPU-only functions, starting your evaluation now and sending feedback will help make sure that IPP's GPU support grows in a direction useful to you. You can also start building products today with the previews if a faster rate of change is acceptable.
  • What are the differences between Intel® IPP main product, previews, examples, and samples?
    • The main product is primitives: optimized functions to enable developers to utilize hardware capabilities without dropping down to the specifics of each hardware version. This is still CPU only today but will include GPU support in the future. This is why we are releasing technology previews.
    • Technology previews represent a "release early and often" approach, intended to maximize the rate of new functionality released to you as well as the level of feedback on what is truly important. While there will be no limitations on releasing software built with the preview functions they will be free to change with much less notice than for changes to functions in the main product.
    • Examples as defined for Intel® IPP are short starting points intended to illustrate use of features in Intel® IPP's main product and previews. They are installed with the main package and previews. Small examples may accompany documentation. They will never grow large enough to require a separate download package, which distinguishes them from samples.
    • Samples represent a previous era for Intel® IPP. These were like examples, but far too large to maintain indefinitely. These are now legacy. For more information please see the article on Code Examples and Samples for Intel® IPP.
  • How do I get the Intel® IPP Cryptography add-on?
  • Cryptography for Intel® IPP is part of the main Intel IPP product, but is packaged separately in order to comply with United States export regulations. It is available to download for all registered users of Intel® IPP. See the Cryptography Download section of this site for more information.
  • What are the Intel® IPP Previews?
  • Intel® IPP is now providing technology previews of two new APIs (OpenCL and Asynchronous C/C++) focused on the image processing domain. Both models enable targeting Intel® HD Graphics and Intel® Iris Graphics components of the Intel® processor. Try it out and take part in our new forums dedicated to these APIs. For more info, check out our preview website at: http://software.intel.com/intel-ipp/preview
  • What do I need to do to enable great performance on new platforms with Intel® IPP?
    • With Intel® IPP you get great CPU performance today and tomorrow. With each instruction set upgrade a new implementation layer is added. Previous implementations will work as before, but functions which can benefit from new hardware capabilities will be updated and validated before the new architecture is publicly released. With IPP you get the keys to unlock new performance delivered with new hardware so you can start utilizing its new CPU capabilities right away instead of interrupting development cycles for additional optimizations. In some cases the performance boost will be automatic. In most other cases all you need to do is recompile.
    • GPU performance is increasingly important. While the technology previews are less mature than IPP's CPU-only functions, starting your evaluation now and sending feedback will help make sure that IPP's GPU support grows in a direction useful to you. You can also start building products today with the previews if a faster rate of change is acceptable.
  • What are the differences between Intel® IPP main product, previews, examples, and samples?
    • The main product is primitives: optimized functions to enable developers to utilize hardware capabilities without dropping down to the specifics of each hardware version. This is still CPU only today but will include GPU support in the future. This is why we are releasing technology previews.
    • Technology previews represent a "release early and often" approach, intended to maximize the rate of new functionality released to you as well as the level of feedback on what is truly important. While there will be no limitations on releasing software built with the preview functions they will be free to change with much less notice than for changes to functions in the main product.
    • Examples as defined for IPP are short starting points intended to illustrate use of features in IPP's main product and previews. They are installed with the main package and previews. Small examples may accompany documentation. They will never grow large enough to require a separate download package, which distinguishes them from samples.
    • Samples represent a previous era for Intel® IPP. These were like examples, but far too large to maintain indefinitely. These are now legacy. For more information please see the article on Code Examples and Samples for Intel® IPP.
  • How do I get the Intel® IPP Cryptography add-on?
  • Cryptography for Intel IPP is part of the main Intel IPP product, but is packaged separately in order to comply with United States export regulations. It is available to download for all registered users of Intel IPP. See the Cryptography Download section of this site for more information.

Intel® Integrated Performance Primitives

Getting Started?

Click the Learn tab for guides and links that will quickly get you started.

Get Help or Advice

Search Support Articles
Forums - The best place for timely answers from our technical experts and your peers. Use it even for bug reports.
Support - For secure, web-based, engineer-to-engineer support, visit our Intel® Premier Support web site. Intel Premier Support registration is required.
Download, Registration and Licensing Help - Specific help for download, registration, and licensing questions.
Supported Versions

Resources

Release Notes - View Release Notes online!
Documentation:
Reference Manual
User's Guide
All Product Documentation - View documentation online!

Featured Support Topics

未找到内容