Git Product home page Git Product logo

rocfft's Introduction

rocFFT

rocFFT is a software library for computing fast Fourier transforms (FFTs) written in the HIP programming language. It's part of AMD's software ecosystem based on ROCm. The rocFFT library can be used with AMD and NVIDIA GPUs.

Documentation

Documentation for rocFFT is available at rocm.docs.amd.com.

To build our documentation locally, use the following code:

cd 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 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 HIPCC and uses CMake. You can specify several options to customize your build. The following commands build a shared library for supported AMD GPUs:

    mkdir build && cd build
    cmake -DCMAKE_CXX_COMPILER=hipcc -DCMAKE_C_COMPILER=hipcc ..
    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 Boost program options
      rocfft-test -DBUILD_CLIENTS_TESTS=on Boost program options, Fastest Fourier Transform in the West (FFTW), GoogleTest
      samples -DBUILD_CLIENTS_SAMPLES=on Boost program options, FFTW

      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:

      mkdir build && cd build
      cmake -DCMAKE_CXX_COMPILER=hipcc -DCMAKE_C_COMPILER=hipcc -DCMAKE_PREFIX_PATH=/path/to/rocFFT-lib ..
      make -j

      To install client dependencies on Ubuntu, run:

      sudo apt install libgtest-dev libfftw3-dev libboost-program-options-dev

      We use version 1.11 of GoogleTest.

Examples

A summary of the latest functionality and workflow to compute an FFT with rocFFT is available on the rocFFT documentation portal.

You can find additional examples in the clients/samples subdirectory.

Contribute

If you want to contribute to rocFFT, you must format your code as follows:

  • C++: Format with ClangFormat (see .clang-format)

  • Python: Format with yapf --style pep8

rocfft's People

Contributors

evetsso avatar bragadeesh avatar feizheng10 avatar malcolmroberts avatar tingxingdong avatar solaslin avatar memmett avatar eidenyoshida avatar amdkila avatar eng-flavio-teixeira avatar af-ayala avatar saadrahim avatar cheyennegoh avatar samjwu avatar cgmb avatar lawruble13 avatar arvindcheru avatar mhbliao avatar rosenrodt avatar timmyliu avatar raramakr avatar rmalavally avatar robsonrlemos avatar pruthvistony avatar zaliu avatar mkuron avatar dependabot[bot] avatar amcamd avatar zhang2amd avatar tflink avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.