- Notifications
You must be signed in to change notification settings - Fork89
Next generation FFT implementation for ROCm
License
ROCm/rocFFT
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
rocFFT is a software library for computing fast Fourier transforms (FFTs) written in the HIPprogramming language. It's part of AMD's software ecosystem based onROCm. The rocFFT library can be used with AMD andNVIDIA GPUs.
Note
The published rocFFT documentation is available atrocFFT in an organized, easy-to-read format, with search and a table of contents. The documentation source files reside in the rocFFT/docs folder of this repository. As with all ROCm projects, the documentation is open source. For more information, seeContribute to ROCm documentation.
To build our documentation locally, use the following code:
cd docspip3 install -r sphinx/requirements.txtpython3 -m sphinx -T -E -b html -d _build/doctrees -D language=en. _build/html
You can install rocFFT using pre-built packages or building from source.
Installing pre-built packages:
Download the pre-built packages from theROCm package servers or use theGitHub releases tab to download the source (this may give you a more recent version than thepre-built packages).
Run:
sudo apt update && sudo apt install rocfft
Building from source:
rocFFT is compiled with AMD's clang++ and uses CMake. You can specify several options to customize yourbuild. The following commands build a shared library for supported AMD GPUs:
mkdir build&&cd buildcmake -DCMAKE_CXX_COMPILER=amdclang++ -DCMAKE_C_COMPILER=amdclang ..make -j
You can compile a static library using the
-DBUILD_SHARED_LIBS=off
option.With rocFFT, you can use indirect function calls by default; this requires ROCm 4.3 or higher. You canuse
-DROCFFT_CALLBACKS_ENABLED=off
with CMake to prevent these calls on older ROCmcompilers. Note that with this configuration, callbacks won't work correctly.rocFFT includes the following clients:
rocfft-bench
: Runs general transforms and is useful for performance analysisrocfft-test
: Runs various regression testsVarious small samples
Client CMake option Dependencies rocfft-bench
-DBUILD_CLIENTS_BENCH=on
hipRAND rocfft-test
-DBUILD_CLIENTS_TESTS=on
hipRAND, FFTW, GoogleTest samples -DBUILD_CLIENTS_SAMPLES=on
None Clients are not built by default. To build them, use
-DBUILD_CLIENTS=on
. The build processdownloads and builds GoogleTest and FFTW if they are not already installed.Clients can be built separately from the main library. For example, you can build all the clients withan existing rocFFT library by invoking CMake from within the
rocFFT-src/clients
folder:mkdir build&&cd buildcmake -DCMAKE_CXX_COMPILER=amdclang++ -DCMAKE_C_COMPILER=amdclang_PREFIX_PATH=/path/to/rocFFT-lib ..make -j
To install client dependencies on Ubuntu, run:
sudo apt install libgtest-dev libfftw3-dev
We use version 1.11 of GoogleTest.
A summary of the latest functionality and workflow to compute an FFT with rocFFT is available on therocFFT documentation portal.
You can find additional examples in theclients/samples
subdirectory.
You can report bugs and feature requests through the GitHubissue tracker.
If you want to contribute to rocFFT, you must follow ourcontribution guidelines.
About
Next generation FFT implementation for ROCm