.. _building_link: #################### Building the Library #################### This page outlines the process of building the ``dtFFT`` library using CMake, including compiler requirements, configuration options, and integration instructions for downstream projects. The library supports both host and GPU environments, leveraging modern Fortran and optional dependencies like CUDA, FFTW3, MKL, cuFFT, and VkFFT. Prerequisites ============= Since ``dtFFT`` is primarily written in Fortran, a modern Fortran compiler (2008 standard or later) is required. The library has been successfully tested with: - **GNU Fortran (gfortran)**: Version 12 and above - **Intel Fortran (ifort / ifx)**: Version 18 and above - **NVHPC Fortran (nvfortran)**: Version 24.5 and above Currently, ``dtFFT`` can only be built using CMake (version 3.25 or higher recommended). Ensure CMake is installed and available in your PATH before proceeding. **Requirements**: - **CMake**: Version 3.25 or higher - **Modern Fortran compiler**: 2008 standard or later - **MPI**: Message Passing Interface (MPI) implementation - **Caliper** (optional): For performance profiling and analysis **For CUDA support**: - **CUDA-aware MPI**: Required for GPU acceleration - **NCCL** (optional): NVIDIA Collective Communications Library (automatically linked if ``nvfortran`` is used) - **nvfortran** (optional): NVHPC Fortran compiler (enables additional features like NCCL and cuFFTMp) - **NVTX3** (optional): NVIDIA Tools Extension for profiling and debugging Configuration Options ===================== The build process is controlled via CMake options, listed below. These options enable or disable features such as GPU support, FFT library integration, and additional utilities. Set them using ``-D