Quick Installation Guide

The cuFFTDx library is distributed as a part of the MathDx package. To download the most recent release of the MathDx package including cuFFTDx go to the https://developer.nvidia.com/cufftdx-downloads website.

Note

MathDx package also includes the cuBLASDx library providing selected linear algebra functions like General Matrix Multiplication (GEMM). Both libraries are designed to work together. When using multiple device extensions libraries in a single project they should all come from the same MathDx release.

cuFFTDx In Your Project

cuFFTDx is a header-only library, thus to use it users just need to the include the directory with cufftdx.hpp and commonDx into their compilation commands. All other requirements are listed in the Requirements section. The easiest way is to use the MathDx include directory:

nvcc -std=c++17 -arch sm_XY (...) -I<mathdx_include_dir> <your_source_file>.cu -o <your_binary>

When you unpack MathDx YY.MM package tarball into in <your_directory>, cufftdx.hpp file will be available at the following locations:

  • <your_directory>/nvidia/mathdx/yy.mm/include/

  • <your_directory>/nvidia/mathdx/yy.mm/include/cufftdx/include/

The commonDx headers will be available at the following location:

  • <your_directory>/nvidia/mathdx/yy.mm/include/

You can review Makefile shipped alongside cuFFTDx examples to check how they are compiled.

Note

Since version 1.2.1 cuFFTDx has indirect dependency on CUTLASS library. If no other Dx library is used, the dependency can be disabled by defining CUFFTDX_DISABLE_CUTLASS_DEPENDENCY macro. Defining CUFFTDX_DISABLE_CUTLASS_DEPENDENCY if other Dx libraries are used can lead to compilation errors.

cuFFTDx In Your CMake Project

The MathDx package provides configuration files that simplify using cuFFTDx in other CMake projects. After finding mathdx using find_package, users have to link mathdx::cufftdx to their target. This propagates the include directory cufftdx_INCLUDE_DIRS, the mathdx::commondx dependency, and the C++17 requirement to their target.

find_package(mathdx REQUIRED COMPONENTS cufftdx CONFIG)
target_link_libraries(YourProgram mathdx::cufftdx)

You can pass the path to MathDx package using PATHS option:

find_package(mathdx REQUIRED COMPONENTS cufftdx CONFIG PATHS "<your_directory>/nvidia/mathdx/yy.mm/")

Alternatively, you can set mathdx_ROOT during cmake configuration of your project:

cmake -Dmathdx_ROOT="<your_directory>/nvidia/mathdx/yy.mm/" (...)

Note

Since version 1.2.1 cuFFTDx has indirect dependency on CUTLASS library. If no other Dx library is used, the dependency can be disabled by adding set(mathdx_cufftdx_DISABLE_CUTLASS TRUE) before find_package(...). Disabling the dependency on CUTLASS if other Dx libraries are used can lead to compilation errors.

Defined Variables

mathdx_cufftdx_FOUND, cufftdx_FOUND

True if cuFFTDx was found.

cufftdx_INCLUDE_DIRS

cuFFTDx include directories.

mathdx_INCLUDE_DIRS

MathDx include directories.

mathdx_cutlass_INCLUDE_DIR

CUTLASS include directory.

mathdx_VERSION

MathDx package version number in X.Y.Z format.

cuFFTDx_VERSION

cuFFTDx version number in X.Y.Z format.

MathDx/cuFFTDx version matrix

MathDx

cuFFTDx

22.02

1.0.0

22.11

1.1.0

24.01

1.1.1

24.04

1.2.0

24.08

1.2.1