Program written on C++ with OpenCL to learn how to use FFT with different signals
Application create mainly for OpenCL learning purpose. Applies forward and inverse DFT or FFT to harmonic or polyharmonic signal. In math notation:
- DFT and inverse DFT
X(j) = ∑ x(i) * e+2πij/N / N X(j) = ∑ X(i) * e-2πij/N
Created with:
Requirements:
- OpenGL >= 4.2, or otherwise:
- change kOpenGlVersion and kGlslVersion in application_configuration.h)
- change API version in glad2_loader/CMakeLists.txt
- C++ compiler supporting C++20 standard
- CMake >= 3.15
- otherwise, try change VERSION in CMakeLists.txt
- Installed SDL2 library
- Installed OpenCL environment:
- for AMD — AMD Accelerated Parallel Processing SDK
- for Nvidia — CUDA toolkit
- for Intel — Intel SDK for OpenCL
Warning!: Project dependencies is almost 100 MB
Clone project with submodules (choose one of the repositories):
git clone https://github.com/ValeryKameko/fast-fourier-transform-visualization --recurse-submodules
git clone https://gitlab.com/ValeryKameko/fast-fourier-transform-visualization --recurse-submodules
Build CMake project:
cd ./fast-fourier-transform-visualization
mkdir ./cmake-build-release
cd ./cmake-build-release
cmake .. -DCMAKE_BUILD_TYPE=Release
To run application:
cd ./bin
# for WINDOWS
./fft-visualization.exe
# for Linux
./fft-transform-visualization
Tested on:
- Windows (GNU GCC 9.0 MinGW, CMake 3.15, OpenGL 4.6)
- Nvidia CUDA 11.2 + OpenCL 1.2
- Intel SDK + OpenCL 2.1