Intel® Integrated Performance Primitives within Intel® System Studio 2015

Intel® Integrated Performance Primitives within
Intel® System Studio 2015
Intel® Integrated Performance Primitives
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
What you will learn from this slide deck
•Intel® IPP in-depth technical training for
System & Application code running Linux*, Android* &
Tizen™
•In-depth explanation of specifics for each development
environment mentioned above. Note: only Android* has
specific instructions for this product
•Please see subsequent slide decks for in-depth
technical training on other components
3
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance Primitives
Optimized for
Performance &
Power Efficiency
• Highly tuned LTE (MMSE MIMO)
routines for communications
• Highly optimized using SSSE3,
SSE, and AVX, AVX2 instruction
sets
• Performance beyond what an
optimized compiler produces alone
Intel Engineered &
Future Proofed to
Shorten Development
Time
• Ready-to-use
Wide Range of Cross
Platform & OS
Functionality
• Thousands of highly optimized signal,
data and media functions
• Fully optimized for current and past
processors
• Broad embedded target support
• Save development, debug, and
maintenance time
• Supports Intel® Quark, Intel® Atom™,
Core™, and Xeon® processors
• Code once now, receive future
optimizations later
Performance building blocks to boost Embedded and Mobile system
performance
4
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance Primitives
Spend More Time Differentiating, Less Time Optimizing
Optimized Function Library
Many Functions
• 2D Image processing
• 1D Signal Processing
• Enterprise Data
Goals
• Raw Performance
• Platform Throughput
• Power Efficiency
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel IPP - overview
Application Source Code
Intel IPP Usage Code Samples
Free Code Samples
•
•
•
•
•
Sample video/audio/speech codecs
Image processing and JPEG
Signal processing
Data compression
.NET and Java integration
Rapid Application
Development
API calls
Intel IPP Library C/C++ API
Cross-platform API
•
•
•
•
•
•
Image processing
Signal processing
Image color conversion
JPEG / JPEG2000
Video coding
Audio coding
•
•
•
•
Data Compression
Data Integrity
Matrix mathematics
Vector mathematics
Compatibility
and
Code Re-Use
Static/Dynamic Link
Intel IPP Processor-Optimized Binaries
ProcessorOptimized
Implementation
•
•
•
•
•
•
•
Intel® Core™ i7 Processors
Intel® Atom™ Processors
Intel® Core™ 2 Duo and Core™ Extreme Processors
Intel® Core™ Duo and Core™ Solo Processors
Intel® Pentium® D Dual-Core Processors
Intel® Xeon® 64-bit Dual-Core Processors
Intel® Xeon® DP and MP Processors
Outstanding
Performance
Intel Confidential
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance Primitives
Image/Signal Domain Details
Image/Frame
Processing 2D Operations
• Filters/Transforms
• Convolution,Morphology,Threshold)
• Fourier Transforms (FFT, etc.), Resize, Rotate, Mirror,
• Computer Vision
• Canny, Optical Flow, Segmentation, Haar Classifiers
• Color Conversion
Signal
• RGB/BGR <-> YUV/YCbCr
Processing 1D Operations
• Filters/Transforms
• Fourier Transforms (FFT, etc.), Finite Impulse Response
(FIR), Infinite Impulse Response (IIR), Threshold,
Convolution, Median
• Statistics
• Mean, StdDev, NormDiff, Sum, MinMax
Intel Confidential
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance
Primitives Image Resize Performance
vs. OpenCV
Intel® IPP provides faster resize
Optimization Notice
Intel Confidential
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance Primitives Pixel
Convolution Performance vs. OpenCV
Intel® IPP provides faster filter operations
Optimization Notice
Intel Confidential
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Code Example
int main(int argc, char **argv)
int ROI_offset_elements = (IPPanchor.y *
src1step)
+ IPPanchor.x;
{
ippInit();
Mat kernel(parms.k, parms.k, CV_32F);
status = ippiFilterBorderInit_32f(
(Ipp32f*)kernel.data,
kernel=1.0/(parms.k*parms.k);
kernelsize, ipp8u, 1, ippRndNear, Spec );
Mat imgSrc(img_h, img_w, CV_8UC1);
Mat imgDst(img_h, img_w, CV_8UC1);
Ipp8u borderValue = 0;
int src1step=(int)imgSrc.step1();
int dst1step=(int)imgSrc.step1();
ippiFilterBorder_8u_C1R(
//set up IPP Filter
imgSrc.data + ROI_offset_elements, src1step,
IppiPoint IPPanchor={parms.k/2,parms.k/2};
imgDst.data + ROI_offset_elements, dst1step,
IppiSize kernelsize={parms.k,parms.k};
roiSize, ippBorderRepl, &borderValue,
IppiSize roiSize={img_w-kernelsize.width,
Spec, Buffer );
img_h-kernelsize.height};
int SpecSize, BufferSize;
ippFree(Spec);
ippiFilterBorderGetSize(kernelsize,roiSize,
ippFree(Buffer);
ipp8u,ipp32f,1,&SpecSize,&BufferSize);
IppiFilterBorderSpec *Spec
=
return 0;
(IppiFilterBorderSpec*)ippsMalloc_8u(SpecSize);
Ipp8u *Buffer =
(Ipp8u*)ippsMalloc_8u(BufferSize);
Intel Confidential
Optimization Notice
}
Note common pattern: GetSize, Init, Operation
10
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Why are the functions fast?
 Intel® IPP functions exploit the instruction set architecture by
– processing multiple data elements in parallel
– Streaming SIMD Extensions like SSE4
– processing data in larger chunks with each instruction
 Intel® IPP functions exploit the processor micro architecture by
– pre-fetching data and avoiding cache blocking
– resolving data and trace cache misses
– avoiding branch mispredictions
Intel Confidential – Internal Use Only
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
11
Intel® IPP function naming convention and usage
Function names
 are easy to understand
Name Elements
Description
Examples
Indicates the functional
data type in 1D , 2D and
Matrix
ipps, ippi, ippm
Prefix
Base Name
Abbreviation for the core
operation
Add, FFTFwd,
LuDecomp
Data Type
Describes bit depth and
sign
8u, 32f, 64f
Indicates data layout and
scaling
ISfs, C1R, P
Execution mode
 directly indicate the purpose of the
function via distinct elements
 each element has a fixed number of predefined values
ippiCopy_8u_C1MR
Prefix
Base Name
Data
Type
Execution
Mode
Each function performs a particular operation on a known type of data in a specific mode
12
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® IPP libraries components
Header files, Dynamic and Static Libraries are sorted by Domains.
The dispatcher libraries and SSE-based optimized libraries are included in both
Dynamic and Static Libraries
For example:
Domains
Header
Dynamic
Linking
Static
Linking
ippvc.lib,
Ippvc_l.lib,
ippvc.dll
Ippvc_t.lib
File
Video Coding
(vc)
ippvc.h
13
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Function implementation
Intel IPP uses codes optimized for various central processing units (CPUs). Dispatching refers to detection of
your CPU and selecting the corresponding Intel IPP binary. For example, ippiv8-7.0.dll in the \redist\ia32\ipp
directory, reflects the imaging processing libraries optimized for the Intel(R) Core(TM) 2 Duo processors.
Platform
Identifier
IA-32 Intel®
Architecture
Intel® 64
(Intel® EM64T)
architecture
Optimization
px
C-optimized for all IA-32 processors
v8
Optimized for processors with Intel® Supplemental Streaming SIMD Extensions 3 (Intel
SSSE3)
p8
Optimized for processors with Intel® Streaming SIMD Extensions 4.1 (Intel SSE4.1)
s8
Optimized for the Intel® AtomTM processor
mx
C-optimized for processors with Intel® 64 instructions set architecture
u8
Optimized for 64-bit applications on processors with Intel® Supplemental Streaming
SIMD Extensions 3 (Intel SSE3)
y8
Optimized for 64-bit applications on processors with Intel® Streaming SIMD Extensions
4.1 (Intel SSE4.1)
n8
Optimized for the Intel® AtomTM processor
e9
Optimized for processors that support Intel® Advanced Vector Extensions instruction
set
Intel ® IPP gets updated with these libs to match the latest CPU features
14
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Threading control flexibility in Intel® IPP
Intel® IPP are thread-safe. It supports threading above it:
 Intel® IPP threading functions are self-contained, which do not necessarily require application
level threading to use OpenMP*

Intel® IPP threading can be disabled or fine-tuned by applications
In a case that application needs fine-grained threading control
 Call the function ippSetNumThreads with argument 1
 Use static library to avoid OpenMP dependency
 Use completely single thread ideal for kernel development
15
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Threading in Intel® IPP functions
Many computational intensive functions
are threaded
Domains
Threaded Functions
ippi
1346
Many (~2480) of Intel IPP functions are
ippr
11
threaded.
ipm
527
ipps
586
 Where it improves performance
Usage model:
 Intel IPP threading Control
 ippSetNumThreads
Intel IPP functions are threaded
when it maximizes performance
 ippGetNumThreads
16
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Threading in application
17
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Threading inside Intel® IPP
18
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® IPP - linking options

Dynamic linking using the run-time dynamic link libraries

Static linking with dispatching by using emerged and merged static libraries

Static linking without automatic dispatching using merged static libraries

Dynamically building your own, custom, dynamic link library
What are the main differences?




Code size(application executable or application installation package)
Distribution method
Processor coverage
Application executes in kernel mode?
19
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Dynamic linking
Dynamic linking is the simplest method and the most commonly used. It takes full advantage of
the dynamic dispatching mechanism in the dynamic link libraries (DLLs)
To dynamically link with Intel ® IPP, follow these steps:
1. Include ipp.h in your application. This header includes the header files for all Intel IPP
functional domains.
2. Use the normal Intel IPP function names when calling the functions.
3. Link corresponding domain import libraries. For example, if you use the function
ippsCopy_8u, link to ipps.lib.
4. Make sure that the run-time libraries are on the executable search path at run time.
Run the ippvars.bat from directory \ipp\bin to ensure that the application loads the
appropriate processor-specific library.
20
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Static Linking with Dispatching
To use the static linking libraries, you need to link to all required domain libraries
ipp*_l.lib, adding ippcore_l.lib and libraries on which domain libraries depend (see next
section below). The * denotes the appropriate function domain.
If you want to use the Intel IPP functions threaded with the OpenMP*, you need to
link to the threaded versions of the libraries ipp*_t.lib, ippcore_t.lib, and libiomp5md.lib.
All domain-specific and core libraries are located in the \ipp\lib\<arch> directory.
21
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Static Linking without Dispatching
Benefits
Drawbacks
 Small executable size with support for only one
•The executable is optimized for only one
processor type
processor type
 Suitable for kernel-mode/device-driver/ring-0
• Updates to processor-specific
 Suitable for a Web applet or a plug-in requiring very
optimizations require rebuild and/or relink
small file download and support for only one processor
type
 Self-contained application executable that does not
require the Intel IPP run-time DLLs
 Smallest footprint for application package
 Smallest installation package
22
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Custom Dynamic Linking
Benefits
•Drawbacks
 Run-time dispatching of processor-specific
Application executable requires access to the Intel
optimizations
compiler specific run-time libraries that are delivered
 Reduced hard-drive footprint compared
with Intel IPP
with a full set of Intel IPP DLLs
Developer resources are needed to create and
 Smallest installation package to
maintain the custom DLLs
accommodate use of some of the same Intel
Integration of new processor-specific optimizations
IPP functions by multiple applications
requires rebuilding the custom DLL
Not appropriate for kernel-mode/device-driver/ring-0
code
23
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® IPP Supported Linkage Model - quick comparison
Feature
Dynamic
Linkage
Static Linkage with
Dispatching
Static Linkage
without Dispatching
Using
Custom DLL
Recompile &
redistribute
Release new
processor-specific
application
Recompile & redistribute
Processor Updates
Automatic
Optimization
All processors
All processors
One processor
All processors
Build
Link to stub
static libraries
Link to static libraries
and static dispatchers
Link to merged
libraries
Build separate DLL
Calling
Regular names
Regular names
Processor-specific
names
Regular names
Distribution
Distribute linked
IPP dll
No extra Distribution
No extra distribution
Distribute custom dll
Total Binary Size
Large
Small
Smallest
Small
Executable Size
Smallest
Small
Small
Smallest
Kernel Mode
No
Yes
Yes
No
Multi Threading
Support
Yes
Yes, when linking with
threaded static
merged libraries
No
No
Intel® IPP provides a lot of flexibility
10/25/2014
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
24
Conclusion
Application Levels
Many Applications
 Take Multiple Levels of
efforts to optimized for
Algorithm Levels
(Data flow level)
threading
Intel® IPP Samples
 Intel® IPP Libraries help you
on primitives threading if your
data allow
Computational Kernel
 Intel® IPP Samples
Intel® IPP Primitives Libraries
Common Core Algorithms
demonstrate how you can
thread at the algorithm levels
25
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
References
Intel® IPP Product Information
 http://www.intel.com/software/products/ipp
Technical Issues
http://premier.intel.com/
•
• Self-help
 http://www.intel.com/software/products/ipp
( Click “Support Resource”)
User Discussion Forum
 http://softwareforums.intel.com/ids/board?board.id=IPP
26
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance
Primitives for Android*
27
Agenda
•
Overview
•
Intel® IPP Main features
• Summary
28
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Performance Primitives -Overview
Intel IPP Library C/C++ API
•
•
•
•
•
•
•
Essential function
Cryptography
Image processing
Image color conversion
JPEG / JPEG2000
Computer Vision
Video coding
Audio coding
•
•
•
•
•
•
•
•
Data Compression
Data Integrity
Signal processing
Matrix mathematics
Vector mathematics
String processing
Speech coding
Data Integrity
Cross - platform
Support
Static/Dynamic Link
Intel IPP Processor-Optimized Binaries
ProcessorOptimized
Implementation
•
•
•
•
•
•
•
Intel® Core™ i7 Processors
Intel® Atom™ Processors
Intel® Core™ 2 Duo and Core™ Extreme Processors
Intel® Core™ Duo and Core™ Solo Processors
Intel® Pentium® D Dual-Core Processors
Intel® Xeon® 64-bit Dual-Core Processors
Intel® Xeon® DP and MP Processors
Rapid
Development
Outstanding
Performance
Intel® Integrated Performance Primitives (Intel® IPP) for Android*
A library of pre-optimized image processing functions supporting Intel® smartphone and tablet platforms
running Android OS.
29
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Performance Primitives (Intel® IPP)
Highly optimized building blocks for image processing, signal processing,
multimedia, audio, video, speech, computer vision
Several domains contain the hand-tuned functions for Intel® Atom™
processors
Highly Optimized Functions
Key Function Domains
• Image/Frame Processing
• Signal Processing
Optimization Goals
• Raw Performance
• Platform Throughput
• Power Efficiency
Optimization Notice
Cross-Platform & Operating
System
Operating Systems
• Windows*
• Linux*
• OS X*
• Android*
Platforms
• Phone (Intel Atom)
• Tablet (Intel Atom, Core)
• Ultrabook™/PC (Intel® Core™)
• Server (Intel® Xeon®)
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Low Level Optimized Functions
Domains
Functions
Image Processing
* Geometry transformations, such as resize/rotate
* Operation on an image for edge detection, blurring, noise removal and etc for filter effect.
* 2D Linear transforms FFT, DFT , DCT.
* image statistics and analysis
* Transforms: DCT, DFT, MDCT, Wavelet (both Haar and user-defined filter banks), Hilbert
* Convolution, Cross-Correlation, Auto-Correlation, Conjugate
Signal Processing
* Filtering: IIR/FIR/Median filtering, Single/Multi-Rate FIR LMS filters
* Other: Windowing, Jaehne/Tone/Traingle signal generation, Thresholding
Vector Math
* Logical, Shift, Conversion, Power, Root, Exponential, Logarithmic, Trigonometric, Hyperbolic,
Erf, Erfc
Matrix Math
*Addition, Multiplication, Decomposition, Eigenvalues, Cross-product, transposition
Support Functions * CPU Types, Optimized code dispatching, Memory Allocation
IPP optimize the functions to match the latest CPU features synchronously
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Functions in Signal/Image Processing
Applications
Image/Frame
Processing
2D Operations
• Filters/Transforms
•Convolution,Morphology,Threshold
•Fourier Transforms (FFT, etc.), Resize, Rotate,
Mirror
• Computer Vision
•Canny, Optical Flow, Segmentation, Haar
Classifiers
Radar
• Color
Signal Conversion
Processing
• RGB/BGR
<-> YUV/YCbCr
1D Operations
• Filters/Transforms
•Fourier Transforms (FFT, etc.), DCT
•Finite Impulse Response (FIR), IIR
Threshold, Convolution, Median
• Statistics
•Mean, StdDev, NormDiff, Sum, MinMax
Optimization Notice
32
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Using Intel® IPP (1)
•Intel IPP can be linked with native code:
−Only static non-threaded libraries provided for Android*
OS
•Add Intel IPP functions into your source code
1. include the IPP header files in source.
#include <ipp.h>
2. call ippInit() before using any other IPP functions.
3. call Intel IPP functions in your C/C++ source.
#include <ipp.h>
int helloipp()
{
ippInit();
……
ippsFilter_8u(pSrc, pDst, len);
..
}
33
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Using Intel IPP (2)
•Include Intel IPP libraries into the NDK building files
1. Copy IPP libraries and headers into the project folder (e.g. ./ipp)
2. Find Intel libraries required for the app. Check the “ Intel IPP
Library Dependecies” article.
3. Add the required IPP libraries to the “jni/Android.mk” file:
include
$(CLEAR_VARS)
Declare
each IPP library in prebuilt library module
LOCAL_MODULE := ipps
LOCAL_SRC_FILES := ../ipp/lib/ia32/ipps.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := ippcore
LOCAL_SRC_FILES := ../ipp/lib/ia32/ippcore.a
include $(PREBUILT_STATIC_LIBRARY)
Add the header path and IPP libraries to the modules calling IPP
34
Optimization Notice
include $(CLEAR_VARS)
LOCAL_MODULE
:= HelloIPP
LOCAL_SRC_FILES := HelloIPP.cpp
LOCAL_STATIC_LIBRARIES := ipps ippcore
LOCAL_C_INCLUDES := ../ipp/include
include $(BUILT_SHARED_LIBRARY)
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Image Processing: FIR Filter
void fir_filter(float* result, const float* input,
const float kernel[], float delay[],
int size, int N, int& index)
{
for (int n = 0; n < size; ++n) {
int j = (index + n) % N;
delay[j] = input[n];
float t = 0;
ippsFIR_Direct_32f
for (int i = 0; i < N; ++i) {
t += kernel[i] * delay[j];
if (--j < 0) j = N - 1;
}
result[n] = t;
(input, result,
size, kernel,
N, delay, &index))
}
index = (index + size) % N;
}
35
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
IPP Function Naming Convention
Function names
 are easy to understand
 directly indicate the purpose
of the function via distinct
elements
 each element has a fixed
number of pre-defined values
ippiCopy_8u_C1MR
Prefix
Base Name
Data
Type
Execution
Mode
Name
Elements
Description
Examples
Prefix
Indicates the functional
data domain in 1D , 2D,
Matrix and 3D data
processing.
ipps, ippi, ippm,
ippr.
Base Name
Abbreviation for the core
operation
Add, FFTFwd,
LuDecomp
Data Type
Describes bit depth and
sign
8u, 32f, 64f…
Execution
mode
Indicates data layout and
scaling
ISfs, C1R, P..
Description: The image (ippi) copy (Copy) operation
operating on data of type 8u (8u) in one-channel image (C1),
operation with mask (M) in the region of interest (R).
Each function performs a particular operation on a known type of data in a specific mode.
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Function Implementation
• Intel IPP functions are optimized for a specific
processor.
•A single function has many version, each one
optimized to run on a specific processor.
•The name of each version is decorated with a prefix
that denotes its target processor, see table below for
IA-32 prefixes full list.
Identifier
Optimization Notice
ippsCopy_8u(…)
Some examples:
px_ippsCopy_8u(…)
s8_ippsCopy_8u(…)
p8_ippsCopy_8u(…)
CPU
px
C-optimized for all IA-32 processors
w7
Optimized for processors based with Intel® Streaming SIMD Extensions 2 3 (Intel SSE2)
t7
Optimized for processors with Intel® Streaming SIMD Extensions 3 (Intel SSE3)
v8
Optimized for processors with Intel® Supplemental Streaming SIMD Extensions 3 (Intel SSSE3)
p8
Optimized for processors with Intel® Streaming SIMD Extensions 4.1 (Intel SSE4.1)
s8
Optimized for Intel® Atom™ processor
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance Primitives Pixel
Convolution Performance vs. OpenCV
Intel® IPP provides faster filter operations
Optimization Notice
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Intel® Integrated Performance Primitives
Highly optimized building blocks for image processing, signal
processing, multimedia, audio, video, speech, computer vision
Optimized Function Library
Many Functions
• 2D Image processing
• 1D Signal Processing
• Data processing
Goals
• Raw Performance
• Platform Throughput
• Power Efficiency
Key software building blocks that help take advantage of Intel platform features to
boost signal processing performance and help speed-up development
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
References
Intel® IPP Product Information
 http://www.intel.com/software/products/ipp
Technical Issues
http://premier.intel.com/
•
• Self-help
 http://www.intel.com/software/products/ipp
( Click “Support Resource”)
User Discussion Forum
 http://softwareforums.intel.com/ids/board?board.id=IPP
Book
 How to Optimize Applications Using Intel® IPP by Stewart Taylor
 http://www.intel.com/intelpress/sum_ipp.htm
40
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Legal Disclaimer & Optimization
Notice
INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR
OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO
LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS
INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
Software and workloads used in performance tests may have been optimized for performance only on Intel
microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer
systems, components, software, operations and functions. Any change to any of those factors may cause the results to
vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated
purchases, including the performance of that product when combined with other products.
Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel
logo are trademarks of Intel Corporation in the U.S. and other countries.
Optimization Notice
Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that
are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and 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. Certain optimizations not specific to Intel microarchitecture are reserved for Intel
microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding
the specific instruction sets covered by this notice.
Notice revision #20110804
41
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Test
Test
 Test
43
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Summary
Test
• Test
Find out more at http://intel.ly/system-studio
44
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Legal Disclaimer & Optimization Notice
INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO
ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND
INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR
WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT,
COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors.
Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software,
operations and functions. Any change to any of those factors may cause the results to vary. You should consult other
information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of
that product when combined with other products.
Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are
trademarks of Intel Corporation in the U.S. and other countries.
Optimization Notice
Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel
microprocessors. These optimizations include SSE2, SSE3, and 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. Certain optimizations not specific to Intel microarchitecture
are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the
specific instruction sets covered by this notice.
Notice revision #20110804
45
Optimization Notice
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
Backup
Intel Confidential - Internal Use Only
Optimization Notice
47
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.
10/25/2014