Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

107 lines
4.5 KiB
Markdown

# rocFFT
rocFFT is a software library for computing fast Fourier transforms (FFTs) written in the HIP
programming language. It's part of the AMD software ecosystem based on
[ROCm](https://github.com/ROCm/ROCm). The rocFFT library can be used with AMD GPUs.
## Documentation
> [!NOTE]
> The published rocFFT documentation is available at [rocFFT](https://rocm.docs.amd.com/projects/rocFFT/en/latest/index.html) in an organized, easy-to-read format, with search and a table of contents. The documentation source files reside in the projects/rocfft/docs folder of the rocm-libraries repository. As with all ROCm projects, the documentation is open source. For more information, see [Contribute to ROCm documentation](https://rocm.docs.amd.com/en/latest/contribute/contributing.html).
To build our documentation locally, use the following code:
```Bash
cd projects/rocfft/docs
pip3 install -r sphinx/requirements.txt
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html
```
## Build and install
You can install rocFFT using pre-built packages or building from source.
* Installing pre-built packages:
1. Download the pre-built packages from the
[ROCm package servers](https://rocm.docs.amd.com/en/latest/deploy/linux/index.html) or use the
GitHub releases tab to download the source (this may give you a more recent version than the
pre-built packages).
2. 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 your
build. The following commands build a shared library for supported AMD GPUs. Run these commands from the `rocm-libraries/projects/rocfft` directory:
```bash
mkdir build && cd build
cmake -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 can
use `-DROCFFT_CALLBACKS_ENABLED=off` with CMake to prevent these calls on older ROCm
compilers. 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 analysis
* `rocfft-test`: Runs various regression tests
* Various 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 |
| coverage | `-DBUILD_CODE_COVERAGE=ON` | clang, llvm-cov |
Clients are not built by default. To build them, use `-DBUILD_CLIENTS=on`. The build process
downloads 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 with
an existing rocFFT library by invoking CMake from within the `rocFFT-src/clients` folder:
```bash
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER=amdclang++ -DCMAKE_PREFIX_PATH=/path/to/rocFFT-lib ..
make -j
```
To install client dependencies on Ubuntu, run:
```bash
sudo apt install libgtest-dev libfftw3-dev
```
rocFFT uses version 1.11 of GoogleTest.
You can generate a test coverage report with the following:
```bash
cmake -DCMAKE_CXX_COMPILER=amdclang++ -DBUILD_CLIENTS_SAMPLES=ON -DBUILD_CLIENTS_TESTS=ON -DBUILD_CODE_COVERAGE=ON <optional: -DCOVERAGE_TEST_OPTIONS="cmdline args to pass to rocfft-test (default: --smoketest)"> ..
make -j coverage
```
The above will output the coverage report to the terminal and also save an html coverage report to `$PWD/coverage-report`.
## Examples
A summary of the latest functionality and workflow to compute an FFT with rocFFT is available on the
[rocFFT documentation portal](https://rocm.docs.amd.com/projects/rocFFT/en/latest/).
You can find additional examples in the `clients/samples` subdirectory.
## Support
You can report bugs and feature requests through the rocm-libraries GitHub
[issue tracker](https://github.com/ROCm/rocm-libraries/issues).
## Contribute
If you want to contribute to rocFFT, you must follow the [contribution guidelines](https://github.com/ROCm/rocm-libraries/blob/develop/projects/rocfft/.github/CONTRIBUTING.md).