ILNumerics - Technical Computing Tools

High Performance Framework for Visualization

and Computing in Industry and Science



Configuring Modules for Fourier Transformations

FFTs in ILNumerics are currently computed by use of native libraries. The library is prepared for the following modules:

  • Intel MKL - since ILNumerics verion 2.3, the MKL is utilized for FFTs per default. The MKL is included into the runtime distribution. Those functions will work on all common processors.
  • AMD ACML - bindings for the AMDs performance library are provided. Users can download the binaries from the AMD Website and configure ILNumerics to use these libraries instead.
  • FFTW - the "fastest fourier transform in the west" is a famous FFT implementation from The binaries are licensed under the GPL3 and provided as precompiled, convenience download here. Visit the FFTW site for details of the fftw library or if you want to compile your own version of the fftw libraries.

Selecting the FFT Module

All FFT functions in ILNumerics share the same API internally: IILFFT. The IILFFT provides an abstraction layer for the low level functionality of all native libraries involved. Implementations of the IILFFT interface exist for all three modules supported by ILNumerics so far. Custom FFT libraries/implementations can be incorporated by implementing the interface manually.

The ILMath.FFTImplementation property serves as default implementation. Static functions of ILMath utilize this implementation only. On library startup, the property gets an instance of ILMKLFFT assigned to it which is subsequently used as default FFT module. Alternatives are provided by ILNumerics.Native.ILFFTW3FFT and ILNumerics.Native.ILACMLFFT - each corresponding to its respective module. In order to select a module different from MKL, one needs to assign an instance of a different class to the ILMath.FFTImplementation member:

Make sure, the corresponding binaries are accessible to the execution assembly at runtime. Usually this can be ensured, by placing the fft module in the same folder, next to your application binaries.