Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 12/16/2022
Public

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

Document Table of Contents

Building Your Own FFTW3 Interface Wrapper Library

The FFTW3 wrappers to Intel® oneAPI Math Kernel Library are delivered both integrated in Intel® oneAPI Math Kernel Library and as source code, which can be compiled to build a standalone wrapper library with exactly the same functionality. Normally you do not need to build the wrappers yourself.However, if your Fortran application is compiled with a compiler that uses a different name decoration than the Intel® Fortran compiler or if you are using compiler options altering the Fortran name decoration, you may need to build the wrappers that use the appropriate name changing convention.

The source code for the wrappers, makefiles, and files with lists of functions are located in the .\interfaces\fftw3xf subdirectory in the Intel® oneAPI Math Kernel Library directory.

To build the wrappers,

  1. Change the current directory to the wrapper directory

  2. Run the make command on Linux* OS and macOS* or the nmake command on Windows* OS with a required target and optionally several parameters.

The target libia32 or libintel64 defines the platform architecture, and the other parameters specify the compiler, size of the default integer type, and placement of the resulting wrapper library. You can find a detailed and up-to-date description of the parameters in the makefile.

In the following example, the make command is used to build the FFTW3 Fortran wrappers to Intel® oneAPI Math Kernel Library for use from the GNU g77* Fortran compiler on Linux OS based on Intel® 64 architecture:

cd interfaces/fftw3xf
make libintel64 compiler=gnu fname=a_name__ INSTALL_DIR=/my/path
 

This command builds the wrapper library using the GNU gcc compiler, decorates the name with the second underscore, and places the result, named libfftw3xf_gnu.a, into the /my/path directory. The name of the resulting library is composed of the name of the compiler used and may be changed by an optional parameter INSTALL_LIBNAME.