Skip to content

juFFTe

License: Apache-2.0 Documentation

juFFTe is a modern Fast Fourier Transform library written in Fortran 2003, inspired by the FFTE library.

Features

  • 1D, 2D, and 3D FFTs - Complex-to-complex, real-to-complex, and complex-to-real transforms
  • FFTW compatibility - Drop-in replacement for FFTW with familiar API
  • OpenMP parallelization - Multi-core performance out of the box
  • Multiple backends - Standard, Spiral (optimized kernels), SVE, and RVV support
  • Modern Fortran - Clean, maintainable codebase using Fortran 2003+

Quick Start

Installation

# Using Make
cd src
make
make install PREFIX=/your/installation/folder

# Using CMake
cd src && mkdir build && cd build
cmake ..
make install

First FFT

program example
    use juffte
    use iso_fortran_env
    implicit none

    complex(real64), allocatable :: data(:)
    integer :: n

    n = 1024
    allocate(data(n))

    ! Initialize FFT tables
    call zfft1d(data, n, juffte_init)

    ! Forward transform
    call zfft1d(data, n, juffte_fw)

    ! Backward transform
    call zfft1d(data, n, juffte_bw)

    deallocate(data)
end program example

Build with juFFTe

Link against the library:

gfortran -fopenmp your_code.f90 -ljuffte -L/path/to/juffte/lib -I/path/to/juffte/include

For C/C++ programs:

gcc your_code.c -ljuffte -lgfortran -lm -L/path/to/juffte/lib -I/path/to/juffte/include

License

juFFTe is licensed under the Apache License 2.0. See the LICENSE file for details.

Contributing

Contributions are welcome! Please see CONTRIBUTING for guidelines.

Credits

juFFTe is developed at Jülich Supercomputing Centre (JSC) and other juFFTe developers.