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


Beginner question - how to save HBITMAP to jpg
By Bob s.1
Hi. Years ago i used the old IJL lib I used: ijlInit ijlWrite to convert bmp image to jpg I am now trying the new IPP. I work with Visual Studio C++ 2013 (i know - not supported yet but i can add the IPP include and lib folder to the project). What i am trying to do is to capture screenshot of the desktop and have it in byte array. So i do:     HWND hDesktopWnd = GetDesktopWindow();     HDC hDesktopDC = GetDC(hDesktopWnd);     HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);     HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, iWidth, iHeight);     SelectObject(hCaptureDC, hCaptureBitmap);          BitBlt(hCaptureDC,0, 0, iWidth, iHeight, hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT);     byte *bytPtr=NULL;     SaveJPGToPtr(hCaptureBitmap, &bytPtr);   Now my question is how to write the SaveJPGToPtr function using IPP lib. As its name says, SaveJPGToPtr gets the HBITMAP hCaptureBitmap handle and gets bytPtr. ...
Error in ippiSampleLine Documentation example
By Derek J.3
The ippiSampleLine documentation has a significant error that left me very confused as to how this method works. I'm not sure of the appropriate place to report these errors, so I hope someone from Intel sees it here. The sample code is: void func_sampleline() { Ipp8u pSrc[5*4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; IppiSize roiSize = {5, 4}; IppiPoint pt1 = {1, 1}; IppiPoint pt2 = {2, 3}; Ipp8u pDst[3]; int srcStep = 8*sizeof(Ipp8u); ippiSampleLine_8u_C1R( pSrc, srcStep, roiSize, pDst, pt1, pt2 ); }And the sample output is given as: 9 3 18 It  shouldn't be possible to get 18 as the output, since the value 18 doesn't appear in the input pSrc data. This led me to think I didn't understand what this method was supposed to do. Eventually after running the sample myself, I discovered that this 18 is just whatever value happened to be in the pDst buffer. The r...
Bigger question - how to save HBITMAP to jpg
By Bob s.0
Hi. Years ago i used the old IJL lib I used: ijlInit ijlWrite to convert bmp image to jpg I am now trying the new IPP. I work with Visual Studio C++ 2013 (i know - not supported yet but i can add the IPP include and lib folder to the project). What i am trying to do is to capture screenshot of the desktop and have it in byte array. So i do:     HWND hDesktopWnd = GetDesktopWindow();     HDC hDesktopDC = GetDC(hDesktopWnd);     HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);     HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, iWidth, iHeight);     SelectObject(hCaptureDC, hCaptureBitmap);          BitBlt(hCaptureDC,0, 0, iWidth, iHeight, hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT);     byte *bytPtr=NULL;     SaveJPGToPtr(hCaptureBitmap, &bytPtr);   Now my question is how to write the SaveJPGToPtr function using IPP lib. As its name says, SaveJPGToPtr gets the HBITMAP hCaptureBitmap handle and gets bytPtr. When SaveJPGToPtr function returns,  bytPtr should po...
H264 Decoder Problem
By a-sonetoshiba-teli.co.jp1
Hellow, I have trouble with H264 Decoder.I decoded H.264 HD(1920x1080) and SD(720x480) mutually.For changin decoding parameter(resolution etc) dynamically, I used UMC::H264VideoDecoder.Init .But keep to change  in 3 minute, access violation happen in UMC::H264VideoDecoder !!Access violation happen in RefreshCABACBits (umc_h264_bitstream_inlines.h line 313.I think access violation cause by the function's paramter two (m_pMagicBits) is NULL.How can I fix that's ?I used Inte IPP 8.0 and w_ipp_samples_p_7.1.1.013And execution enviroment isOS: Windows 7 SP1,CPU:Core i7-3770 @ 3.40GHzRAM:4.00 GBI attached call stack.Please advise to me.Thank you.
RSA Encryption
By paul@ultrabac.com1
I'm trying to find some easy-to-follow RSA key-generation, encryption/decryption examples. What I've found are http://software.intel.com/en-us/node/503498 and http://software.intel.com/en-us/node/503457 Firstly, I'm not sure why (for example) // Q prime factor BigNumber Q("0xC97FB1F027F453F6341233EAAAD1D9353F6C42D08866B1D05A0F2035028B9D86" "9840B41666B42E92EA0DA3B43204B5CFCE3352524D0416A5A441E700AF461503"); This appear to be constants -- I'm assuming that these values are created by the RSA key generation procedure? I can't get the samples to build as they are on the Intel site (I'm using IPP 8.1 on Windows FYI). I get the following errors: error C2660: 'ippsPrimeGen' : function does not take 1 arguments       IppsPrimeState* pPrimeG = ippsPrimeGen(P.BitSize()); and 1>rsa.cpp(83): error C3861: 'deletePrimeGen': identifier not found       deletePrimeGen(pPrimeG);   Am I using the right samples for 8.1? Are there better examples available -- I'm trying to find a...
Why ippiResizeSqrPixel functions are deprecated?
By tsangel7
Hello, During migrating my codes from IPP7 into IPP8, I found that ippiResizeSqrPixel functions are deprecated. I use them to resize medical data. Fine control of zoom factor and shift is crucial because we need them to overlay multiple medical images at exact position. However, new ippiResize* functions don't take zoom factor / shift argument any more. Only substitute for ippiResizeSqrPixel seem to be ippiWarpAffine function, but ippiWarpAffine is too slow compared with ippiResizeSqrPixel. Is there any other way to resize image with  zoom factor / shift? Thank you!
hppiInitAllocLoGKernel, hppiInitAllocDoGKernel from IPP-A February Preview
By ANNA K.2
I have some problems with hppiInitAllocLoG/DoGKernel functions after updating IPP-A library. Now I use February preview, Win7 64-bit. And the next tests are failed. TEST(InitKernelTest, LoG){ hppAccel accel; hppCreateInstance(HPP_ACCEL_TYPE_ANY, 0, &accel); hppiKernel kernel; hppStatus status = hppiInitAllocLoGkernel(accel, 3, 1, 1, &kernel); EXPECT_EQ(HPP_STATUS_NO_ERROR, status); status = hppWait(accel, HPP_TIME_OUT_INFINITE); EXPECT_EQ(HPP_STATUS_NO_ERROR, status); hppDeleteInstance(accel);} TEST(InitKernelTest, DoG){ hppAccel accel; hppCreateInstance(HPP_ACCEL_TYPE_ANY, 0, &accel); hppiKernel kernel; hppStatus status = hppiInitAllocDoGkernel(accel, 3, 1, 2, 1, &kernel); EXPECT_EQ(HPP_STATUS_NO_ERROR, status); status = hppWait(accel, HPP_TIME_OUT_INFINITE); EXPECT_EQ(HPP_STATUS_NO_ERROR, status); hppDeleteInstance(accel);}  In the first test hppWait returns wrong status, for example  -2147483648. If I use hppiInitAllocLoGKernel befo...
H.264 SD Decode Memory Leak
By a-sonetoshiba-teli.co.jp7
Hello, I have serious trouble with Inte IPP.I am developing Viewing Soft Ware of H.264 Video Stream Encoder.For it, I use Intel IPP 8.0 Update 1 and w_ipp-sample_p_7.1.1.013.And I build it with command "build.pl audio-video-codecs ia32, vc2008, d, st".Then I tried to decode H.264 SD(720x480) with UMC::H264VideoDecoder.Decoded Image is no problem, but memory leak happen.So I resarched soft ware with Inspector XE where memory leak happen.And It indicated thaht memory leak happen umc_h264_segment_store.cpp and umc_h264_task_supplier.cppSoftWare execute enviroment isOS: Windows 7 Professional SP 1 (32bit)CPU: Intel(R) Core(TM) i7-3770 3.40GHzRAM:4.00GBHow can I fix it?Please advise for me.

页面

订阅 论坛
  • 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!