Fourier Transforms are used in digital signal processing, image processing, and in partial differential equation (PDE) solvers. The Fast Fourier Transform (FFT) functionality in Intel® MKL has been highly optimized for Intel architecture-based machines.
Features of Intel® MKL Fast Fourier Transforms include:
- High-Performance
- Outstanding multiprocessor scaling
- Multi-dimension support (1D up to 7D)
- Mixed radix support
- Modern easy-to-use interface
- FFTW 3.0.1 interface
Fortran & C
Both Fortran and C interfaces exist for all FFT functions.
Modern FFT InterfaceIntel® MKL offers a novel FFT
interface that has been specifically designed to be easier to use and maintain.
FFTW Interface
FFTW ("Fastest Fourier Transform in the West") is a popular FFT package from MIT. New in version 8.0, we have added a set of C routines (“wrappers”) that mimic the FFTW 3.0.1 interface. These FFTW wrappers enable developers currently using FFTW to quickly and easily utilize Intel MKL with minimal changes to their existing source code. It is our goal to provide FFTW users with an easy way to access the high performance of Intel® MKL Fast Fourier Transforms.
Intel® MKL Fast Fourier Transforms have been highly optimized for medium and large size transforms. In the following charts we illustrate the performance of Intel® MKL in comparison with FFTW, a popular FFT software package.
The following charts will illustrate these key points:
- Intel® MKL offers outstanding performance for medium & large size transforms
- Intel® MKL offers outstanding scalability for multiprocessor systems
- Intel® MKL compares favorably to FFTW for medium & large size transforms
Note: For all tests below, a fftw_plan_dft_xd() was called using the using the FFTW_PATIENT flag to ensure good performance was achieved for FFTW.
1D Transform
The one dimension transform chart below shows how FFTW provides stellar performance for small transforms and how Intel® MKL performance equals FFTW at transform size 64, and then exceeds FFTW for larger transforms.
2D Transforms (Powers of 2)
Two-dimensional transforms for powers-of-two single-precision complex-data show the same behavior as the one-dimensional transforms. Namely, FFTW shows impressive performance for small transforms, Intel® MKL equals FFTW performance at transforms of size 64x64, and then for larger transforms Intel® MKL significantly surpasses FFTW performance.
The second chart below shows the same data as the first chart, however it adds 2 and 4 thread performance to illustrate scalability. In this chart it is clear how Intel® MKL performance truly shines on multiprocessors.
2D Transforms (Non powers of 2)
Two-dimensional transforms for non-powers-of-two (mixed radices) single-precision complex-data show similar results as the 2D powers-of-2 transforms. Namely, FFTW performs superbly for small transform lengths, Intel® MKL equals FFTW performance around transform length 60-100, and then Intel® MKL surpasses FFTW for larger transforms.
3D Transforms (Powers of 2)
Three-dimensional transforms for powers-of-two single-precision complex-data show the same behavior as the two-dimensional transforms. Once again, FFTW shows impressive performance for small transforms, Intel® MKL equals FFTW performance at transforms of size 64x64x64, and then for larger transforms Intel® MKL significantly surpasses FFTW performance.
More impressively, Intel® MKL shows excellent scalability. While in some cases Intel® MKL may only exceed FFTW performance by a small amount when running on one processor, on 4 processors Intel® MKL can deliver 100% better performance.
The Fast Fourier Transform functionality of the Intel Math Kernel Library offers outstanding performance and scalability for the medium and large transforms that are of interest to the high performance computing community. Unlike FFTW, Intel® MKL does not require the time-consuming process of doing pre-production machine calibration runs ("plan creation") prior to running one’s software. Intel® MKL 8.0 includes a FFTW interface to enable developers to easily compare performance and switch from FFTW to Intel MKL with minimal source code changes.