By gfedorov, Added
Note: This document applies to Intel® MKL 11.0 or later and Intel® IPP 7.1 or later.
Objective
The purpose of this document is to help developers determine which FFT, Intel® MKL or Intel® IPP is best suited for their application.
Overview
Fourier transforms are used in signal processing, image processing, physics, statistics, finance, cryptography, and many other areas. The Discrete Fourier transform (DFT) mathematical operation converts a signal from the time domain to the frequency domain and back.
DFT processing time can dominate a software application. Using a fast algorithm, Fast Fourier transform (FFT), reduces the number of arithmetic operations from O(N^{2}) to O(N log_{2} N) operations. Intel® MKL and Intel® IPP are highly optimized for Intel® architecturebased multicore processors using the latest instruction sets, parallelism, and algorithms.
Read further to decide which FFT is best for your application.
Below is a brief summary of the Intel® MKL and Intel® IPP libraries. For additional details on these products, visit the Intel® MKL web site and the Intel® IPP web site.
Table 1: Comparison of Intel® MKL and Intel® IPP Functionality

Intel MKL 
Intel IPP 
Target Applications 
Mathematical applications for engineering, scientific and financial applications 
Media and communications applications for audio, video, imaging, speech recognition and signal processing 
Library Structure 


Linkage Models 
Static, dynamic, custom dynamic 
Static, dynamic, custom dynamic 
Operating Systems 
Windows*, Linux*, Mac OS X* 
Windows, Linux, Mac OS X, QNX* 
Processor Support 
IA32 and Intel® 64 architecturebased and compatible platforms(1*) 
IA32 and Intel® 64 architecturebased and compatible platforms (2*) 
Both of these libraries contain the generic code optimized for processors with Intel® ® Streaming SIMD Extensions (Intel® ® SSE) and code optimized for processors with Intel® SSE2, SSE3, SSE4.1, SSE4,2, AVX and AVX2 instruction set
1*  IPP provides optimized code for Intel® ® Atom™ processor
2*  started with version11.1, Intel® (R) MKL started to support new Intel® Xeon Phi™ coprocessors
Intel® MKL and Intel® IPP Fourier Transform Feature
The Fourier Transforms provided by MKL and IPP are respectively targeted for the types of applications targeted by MKL (engineering and scientific) and IPP (media and communications). In the table below, we highlight specifics of the MKL and IPP Fourier Transforms that will help you decide which may be best for your application.
Table 2: Comparison of Intel® MKL and Intel® IPP DFT Features
Feature 
Intel MKL 
Intel IPP 
API 
DFT 
FFT 
Interfaces 
C and Fortran LP64 (64bit long and pointer) 
C 
Dimensions 
1D up to 7D 
1D (Signal Processing) 
Transform Sizes 
32bit platforms  maximum size is 2^311 
FFT  Powers of 2 only DFT 2^{32} maximum size (*) 
Mixed Radix Support 
2,3,5,7,11 and 13 kernels (**) 
DFT  2,3,5,7 kernels (**) 
Data Types (See Table 3 for detail) 
Real & Complex 
Real & Complex 
Scaling 
Transforms can be scaled by an arbitrary floating point number (with precision the same as input data) 
Integer ("fixed") scaling

Threading 
Platform dependent

1D and 2D


Data Types and Formats
The Intel® MKL and Intel® IPP Fourier transform functions support a variety of data types and formats for storing signal values. Mixed types interfaces are also supported. Please see the product documentation for details.
Table 3: Comparison of Intel® MKL and Intel® IPP Data Types and Formats
Feature 
Intel MKL 
Intel IPP 
Real FFTs 

Precision 
Single, Double 
Single, Double 
1D Data Types 
Real for all dimensions 
Signed short, signed int, float, double 
2D Data Types 
Real for all dimensions 
Unsigned char, signed int, float 
1D Packed Formats 
CCS, Pack, Perm, CCE 
CCS, Pack, Perm 
2D Packed Formats 
CCS, Pack, Perm, CCE 
RCPack2D 
3D Packed Formats 
CCE 
n/a 
Format Conversion Functions 
n/a 
n/a 
Complex FFTs 

Precision 
Single, Double 
Single, Double 
1D Data Types 
Complex for all dimensions 
Signed short, complex short, signed int, complex integer, complex float, complex double 
2D Data Types 
Complex for all dimensions 
Complex float 
Formats Legend
CCE  stores the values of the first half of the output complex conjugateeven signal
CCS  same format as CCE format for 1D, is slightly different for multidimensional real transforms
for 2D transforms. CCS, Pack, Perm are not supported for 3D and higher rank
Pack  compact representation of a complex conjugatesymmetric sequence
Perm  same as Pack format for odd lengths, arbitrary permutation of the Pack format for even lengths
RCPack2D  exploits the complex conjugate symmetry of the transformed data to store only half of the resulting Fourier coefficients
Performance
The Intel® MKL and Intel® IPP are optimized for current and future Intel® ® processors, and are specifically tuned for two different usage areas:
 Intel® MKL is suitable for large problem sizes typical to FORTRAN and C/C++ highperformance computing software such as engineering, scientific, and financial applications.
 Intel® IPP is specifically designed for smaller problem sizes including those used in multimedia, data processing, communications, and embedded C/C++ applications.
Choosing the Best FFT for Your Application
Before making a decision, developers must understand the specific requirements and constraints of the application. Developers should consider these questions:
 What are the performance requirements for the application? How performance is measured and what is the measurement criteria? Is a specific benchmark being used? What are the known performance bottlenecks?
 What type of application is being developed? What are the main operations being performed and on what kind of data?
 What API is currently being used in the application for transforms? What programming language(s) is the application code written in?
 Does the FFT output data need to be scaled (normalized)? What type of scaling is required?
 What kind of input and output data does the transform process? What are the valid and invalid values? What type of precision is required?
Summary
Intel® MKL and Intel® IPP both provide optimized Fourier Transform functions. For more detailed information on the FFT APIs, parameters and formats, please refer to the following documents:
 Intel® MKL Reference Manual ( see chapter Fourier Transform Function)
 Intel® IPP Reference Manual Volume 1 Signal Processing and Volume 2 for Image Processing
30day evaluation packages are available for free download from Intel® Software Trial Download site
To see all “no cost” options, visit this page: https://software.intel.com/enus/free_tools_and_libraries
Other Resources
Optimization Notice 

Optimization Notice: Intel’s compilers may or may not optimize to the same degree for nonIntel 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. Microprocessordependent 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 