Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

DftiCreateDescriptor

Allocates the descriptor data structure and initializes it with default configuration values.

Syntax

status = DftiCreateDescriptor( desc_handle, precision, forward_domain, dimension, length )

Include Files
  • mkl_dfti.f90
Input Parameters

Name

Type

Description

precision

INTEGER

Precision of the transform: DFTI_SINGLE or DFTI_DOUBLE.

forward_domain

INTEGER

Forward domain of the transform: DFTI_COMPLEX or DFTI_REAL.

dimension

INTEGER

Dimension of the transform.

length


INTEGER if dimension = 1.

Array INTEGER, DIMENSION(*) otherwise.

Length of the transform for a one-dimensional transform. Lengths of each dimension for a multi-dimensional transform.

Output Parameters

Name

Type

Description

desc_handle

DFTI_DESCRIPTOR

FFT descriptor.

status

INTEGER

Function completion status.

Description

This function allocates memory for the descriptor data structure and instantiates it with all the default configuration settings for the precision, forward domain, dimension, and length of the desired transform. Because memory is allocated dynamically, the result is actually a pointer to the created descriptor. This function is slightly different from the "initialization" function that can be found in software packages or libraries that implement more traditional algorithms for computing an FFT. This function does not perform any significant computational work such as computation of twiddle factors. The function DftiCommitDescriptor does this work after the function DftiSetValue has set values of all necessary parameters.

The function returns zero when it completes successfully. See Status Checking Functions for more information on the returned status.

Interface
 
				! Note that the body provided below only illustrates the list of different
! parameters and the types of dummy parameters. You can rely only on the function  
! name following keyword INTERFACE. For the precise definition of the 
! interface, see the include/mkl_dfti.f90 file in the Intel MKL directory.
 
  INTERFACE DftiCreateDescriptor
 
     FUNCTION some_actual_function_1d(desc, precision, domain, dim, length)
       INTEGER :: some_actual_function_1d
       ...
       INTEGER, INTENT(IN) :: length
     END FUNCTION some_actual_function_1d
 
     FUNCTION some_actual_function_md(desc, precision, domain, dim, lengths)
       INTEGER :: some_actual_function_md
       ...
       INTEGER, INTENT(IN), DIMENSION(*) :: lengths
     END FUNCTION some_actual_function_md
 
     ...
				
  END INTERFACE DftiCreateDescriptor
 

Note that the function is overloaded: the actual parameter for the formal parameter length can be a scalar or a rank-one array.

The function is also overloaded with respect to the type of the precision parameter in order to provide an option of using a precision-specific function for the generic name. Using more specific functions can reduce the size of statically linked executable for the applications using only single-precision FFTs or only double-precision FFTs. To use specific functions, change the "USE MKL_DFTI" statement in your program unit to one of the following:

USE MKL_DFTI, FORGET=>DFTI_SINGLE, DFTI_SINGLE=>DFTI_SINGLE_R

USE MKL_DFTI, FORGET=>DFTI_DOUBLE, DFTI_DOUBLE=>DFTI_DOUBLE_R

where the name "FORGET" can be replaced with any name that is not used in the program unit.

See Also