Note: This content applies to Intel® oneAPI Math Kernel Library (oneMKL) 2018.0 or later and Intel® Integrated Performance Primitives (Intel® IPP) 2018.0 or later.
Objective
Get information to help you decide whether a fast Fourier transform (FFT) algorithm in oneMKL or Intel IPP is best suited for your 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 FFT (a fast algorithm) reduces the number of arithmetic operations from O(N2) to O(N log2 N) operations. FFTs in oneMKL and Intel IPP are highly optimized for Intel® architecture-based multicore processors using the latest instruction sets, parallelism, and algorithms.
This article provides guidance for selecting the best FFT for your application. For summaries of the oneMKL and Intel IPP libraries, see table 1. For details, see the oneMKL website and the Intel IPP website.
Table 1. Comparison of oneMKL and Intel IPP Functionality
|
oneMKL |
Intel IPP |
Target Applications |
Mathematical applications for engineering, scientific and financial applications |
Speeds performance for imaging, vision, signal, security, and storage applications |
Library Structure |
|
|
Linkage Models |
|
|
Operating Systems |
|
|
Processor Support |
IA-32 and Intel® 64 architecture-based platforms and compatible platforms |
IA-32 and Intel® 64 architecture-based platforms and compatible platforms |
Both libraries contain generic code that is optimized for processors with Intel® Streaming SIMD Extensions (Intel® SSE) and code optimized for processors with Intel SSE2, Intel SSE3, Intel SSE4.1, Intel SSE4.2, Intel® Advanced Vector Extensions, Intel® Advanced Vector Extensions 2, and Intel® Advanced Vector Extensions 512 instruction sets
- Deep Neural Network has not been a part of the package since 2020.
- Android has not been supported since 2020.
FFT Features in oneMKL and Intel IPP
These FFTs are targeted for:
- oneMKL: engineering and scientific applications
- Intel IPP: media and communication applications
To help you decide which FFT is best for your application, see table 2.
Table 2: Comparison of oneMKL and Intel IPP DFT Features
Feature |
oneMKL |
Intel IPP |
API |
|
|
Interfaces |
|
|
Dimensions |
1-D up to 7-D |
|
Transform Sizes |
|
|
Mixed Radix Support |
2, 3, 5, 7, 11, 13, and several larger kernels5 |
DFT - 2, 3, 5, 7, 11, 13 kernels5 |
Data Types (See Table 3 for detail) |
|
|
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 2D6 |
- DPC++ APIs have been available since version 2021.
- The maximum size limits are:
- For double precision complex DFT (64fc), the length upper bound is 67108863 (2^26 - 1).
- For single precision complex DFT (32fc), the length upper bound is 134217727 (2^27 - 1).
- For double precision complex FFT (64fc), the length upper bound is 2^27.
- For single precision complex FFT (32fc), the length upper bound is 2^28.
- Both libraries support arbitrary radix in optimized manner, that is O(N*log(N)), but these specific radixes are better optimized than others.
- Since Intel IPP v.2021, only the nonthreaded version is available.
Data Types and Formats
The FFTs for oneMKL and Intel IPP support a variety of data types and formats for storing signal values. Mixed types interfaces are also supported. For details, see the product documentation.
Table 3. Comparison of oneMKL and Intel IPP Data Types and Formats
Feature |
oneMKL |
Intel IPP |
Real FFTs |
||
Precision |
|
|
1D Data Types |
Real for all dimensions |
Real for all dimensions |
2D Data Types |
Real for all dimensions |
Real for all dimensions |
1D Packed Formats |
|
|
2D Packed Formats |
CCE |
RCPack2D |
3D Packed Formats |
CCE |
n/a |
Format Conversion Functions |
n/a |
n/a |
Complex FFTs |
||
Precision |
|
|
1D Data Types |
Complex for all dimensions |
Complex for all dimensions |
2D Data Types |
Complex for all dimensions |
Complex for all dimensions |
Formats Legend
- CCE: Stores the values of the first half of the output complex conjugate-even signal.
- CCS: Same format as CCE format for 1D. It is slightly different for multidimensional real transforms for 2D transforms. CCS, pack, and perm are not supported for 3D and higher ranks.
- Pack: Compact representation of a complex conjugate-symmetric sequence.
- Perm: Same as the Pack format for odd lengths and 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 oneMKL and Intel IPP are optimized for current and future Intel processors, and are specifically tuned for two areas:
- oneMKL is suitable for large problem sizes typical to Fortran and C/C++ high-performance computing software such as engineering, scientific, and financial applications.
- Intel IPP is 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, you must understand the specific requirements and constraints of the application. Consider these questions:
- What are the performance requirements for the application? How is performance measured? What is the measurement criteria? Is a specific benchmark 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 languages are 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
oneMKL and Intel IPP both provide optimized FFT functions. For more detailed information on the FFT APIs, parameters, and formats, see the following documents:
- Developer Reference for oneMKL (see the Fourier Transform Function chapter)
- Developer Guide and Reference for Intel IPP
Other Resources