# Cluster FFT Interface

### Note

The cluster FFT interface implemented in Intel MKL 9.0 is incompatible with previous versions. For details, refer to Intel MKL Release Notes.

To use the cluster FFT functions, you need to access the module MKL_CDFT through the "use" statement in Fortran; or access the header file mkl_cdfti.h through "include" in C/C++.

The Fortran interface provides a derived type `DFTI_DESCRIPTOR_DM`; a number of named constants representing various names of configuration parameters and their possible values; and a number of overloaded functions through the generic functionality of Fortran 95.

The C interface provides a structure type `DFTI_DESCRIPTOR_DM_HANDLE` and a number of functions, some of which accept a different number of input arguments.

To provide communication between parallel processes through MPI, the following include statement must be present in your code:

- Fortran:

  `INCLUDE "mpif.h"`

  (for some MPI versions, `"mpif90.h"` header may be used instead).

- C/C++:

  `#include "mpi.h"`

There are three main categories of the cluster FFT functions in Intel MKL:

1. Descriptor Manipulation. There are three functions in this category. The DftiCreateDescriptorDM function creates an FFT descriptor whose storage is allocated dynamically. The DftiCommitDescriptorDM function "commits" the descriptor to all its settings. The DftiFreeDescriptorDM function frees up the memory allocated for the descriptor.

2. FFT Computation. There are two functions in this category. The DftiComputeForwardDM function performs the forward FFT computation, and the DftiComputeBackwardDM function performs the backward FFT computation.

3. Descriptor Configuration. There are two functions in this category. The DftiSetValueDM function sets one specific configuration value to one of the many configuration parameters. The DftiGetValueDM function gets the current value of any of these configuration parameters, all of which are readable. These parameters, though many, are handled one at a time.

Parent topic: Cluster FFT Functions