ulises-jeremias / fft-parallel

Different pure C implementations of FFT Algorithms using PThreads and OpenMP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fast Fourier Transform (FFT) algorithm

This is a parallel implementation of the Fast Fourier Transform (FFT) algorithm. The algorithm is implemented in C and provides multiple implementations using multiple backends. The backends are:

  • OpenMP
  • Pthreads

Table of Contents

Using the library

NOTE: This will install in /usr/local. You probably don't want that. But this is a quick start. The best thing to do is to combine this library with your other code into a larger CMake project/solution.

Install the last release with clib:

clib install ulises-jeremias/fft-parallel

or,

install from source code: First install the library ScientificC/errno. How to install the dependencies?

Then, execute the following commands on the cli:

git clone https://github.com/ulises-jeremias/fft-parallel.git
cd fft-parallel
sudo ./install

or you install it using different Build Options with the following commands:

git clone https://github.com/ulises-jeremias/fft-parallel.git
cd fft-parallel
mkdir build
cd build
cmake .. <build options>
make && sudo make install

Install Dependencies

To install ScientificC/errno you can run the following commands on the cli:

cd /tmp

# to install scic/errno

git clone https://github.com/ScientificC/errno.git
cd errno
mkdir build && cd build
cmake ..
make && sudo make install

Running Tests

To run the test suite from a command prompt, using a Makefile-like generator, execute the following:

git clone https://github.com/ulises-jeremias/fft-parallel.git
cd fft-parallel
mkdir build
cd build
cmake .. <build options>
make && ctest

Build Options

Running Benchmarks

To run the benchmark suite from a command prompt, using a Makefile-like generator, execute the following:

git clone https://github.com/ulises-jeremias/fft-parallel.git
cd fft-parallel
mkdir build
cd build
cmake .. <build options>
make
./build/benchmark/benchmark_scic_fft_static --times=10
# or ./build/benchmark/benchmark_scic_fft_shared --times=10

Build Options

  • FFT_BUILD_SHARED: (Default ON) Controls if the shared library is built
cmake .. -DFFT_BUILD_SHARED=ON
cmake .. -DFFT_BUILD_SHARED=OFF
  • FFT_BUILD_STATIC: (Default ON) Controls if the static library is built
cmake .. -DFFT_BUILD_STATIC=ON
cmake .. -DFFT_BUILD_STATIC=OFF
  • FFT_BUILD_TESTS: (Default ON) Build the unit tests
cmake .. -DFFT_BUILD_TESTS=ON
cmake .. -DFFT_BUILD_TESTS=OFF
  • CMAKE_BUILD_TYPE: (Default Release) Set this to 'Release' or 'Debug'
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake .. -DCMAKE_BUILD_TYPE=Debug
  • CMAKE_INSTALL_PREFIX: (Default /usr/local) Allows you to specify where make install sends the output.
cmake .. -DCMAKE_INSTALL_PREFIX=~/fft/
cmake .. -DCMAKE_INSTALL_PREFIX=~/Projects/myproject/
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/

About

Different pure C implementations of FFT Algorithms using PThreads and OpenMP

License:MIT License


Languages

Language:C 55.7%Language:CMake 22.0%Language:Shell 21.8%Language:Batchfile 0.5%