Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

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

Document Table of Contents

Limitations of the FFTW2 Interface to Intel® oneAPI Math Kernel Library (oneMKL)

The FFTW2 wrappers implement the functionality of only those FFTW functions that Intel® oneAPI Math Kernel Library (oneMKL) can reasonably support. Other functions are provided as no-operation functions, whose only purpose is to satisfy link-time symbol resolution. Specifically, no-operation functions include:

  • Real-to-half-complex and respective backward transforms

  • Print plan functions

  • Functions for importing/exporting/forgetting wisdom

  • Most of the FFTW functions not covered by the original FFTW2 documentation

Because the Intel® oneAPI Math Kernel Library (oneMKL) implementation of FFTW2 wrappers does not use plan and plan node structures declared in fftw.h, the behavior of an application that relies on the internals of the plan structures defined in that header file is undefined.

FFTW2 wrappers define plan as a set of attributes, such as strides, used to commit the Intel® oneAPI Math Kernel Library (oneMKL) FFT descriptor structure. If an FFTW2 computational function is called with attributes different from those recorded in the plan, the function attempts to adjust the attributes of the plan and recommit the descriptor. So, repeated calls of a computational function with the same plan but different strides, distances, and other parameters may be performance inefficient.

Plan creation functions disregard most planner flags passed through the flags parameter. These functions take into account only the following values of flags:

  • FFTW_IN_PLACE

    If this value of flags is supplied, the plan is marked so that computational functions using that plan ignore the parameters related to output (out, ostride, and odist). Unlike the original FFTW interface, the wrappers never use the out parameter as a scratch space for in-place transforms.

  • FFTW_THREADSAFE

    If this value of flags is supplied, the plan is marked read-only. An attempt to change attributes of a read-only plan aborts the application.

FFTW wrappers are generally not thread safe. Therefore, do not use the same plan in parallel user threads simultaneously.