Skip to content

MikeSWang/FFTW-Age

FFTW-Age: FFTW Wisdom Generation

Release CI pre-commit.ci-Status Codacy-Badge

"With age comes wisdom, but sometimes age comes alone."  — Oscar Wilde

FFTW-Age is a lightweight C++ utility for generating FFTW wisdom files for OpenMP-multithreaded 3‑d FFT transforms as a replacement for fftw-wisdom.

For background information, please refer to FFTW Wisdom.

Installation

The C++ program can built with make, provided that dependency requirements (FFTW3 and OpenMP libraries) are satisfied.

Important

Ensure the C++ compiler used supports OpenMP and the FFTW3 library is installed/configured accordingly. The default Makefile (located at the repository directory root) assumes the GCC compiler and OpenMP library.

First git clone the desired branch/release from the GitHub repository and change into the repository directory path:

git clone git@github.com:MikeSWang/FFTW-Age.git --branch <branch-or-release>
cd FFTW-Age

Then, execute in shell:

make clean
make install

Usage

Once installed, the FFTW-Age utility can be called from the command line:

fftw-age [--rigour=<tplan>] [--outdir=<wisdom-dir>] <tdir>-<dimx>x<dimy>x<dimz>

where

  • fftw-age is assumed to be executable (include the path if it is not in the current working directory);
  • <tdir> is the transform direction, either "f" for FFTW_FORWARD and "b" for FFTW_BACKWARD;
  • <dimx>, <dimy> and <dimz> are the dimensions of the 3-d transform;
  • <tplan> corresponds to the FFTW planner flag/rigour level, with "m" (measured; default) for FFTW_MEASURE and "p" (patient) for FFTW_PATIENT;
  • <wisdom-dir> is the output wisdom file directory (absolute or relative to the current working directory).

The output wisdom file will have the filename fftw_omp_<ttype><ttarr><tdir>_<dimx>x<dimy>x<dimz>_<tplan>.wisdom.

Note

Only complex-to-complex, in-place transforms are currently supported. Hence <ttype> is fixed to "c" (complex-to-complex) and <ttarr> is fixed to "i" (in-place) for now.

See also the help message generated by fftw-age --help.

For more information about FFTW planner flags, please refer to FFTW Planner Flags.

Attribution

To acknowledge the use of FFTW-Age in your published research, please cite this repository; you can refer to the file CITATION.cff for the relevant information.

Acknowledgement

This C++ utility makes use of the argparse library.

Contributing/Development

C++-Standard

Release-Date Commits-Since

Build-Issues Bug-Issues Feature-Issues Pull-Requests

pre-commit

Codespaces

User feedback and contributions are very welcome. Please refer to the contribution guidelines.

Discussions & Wiki

Discussions

A community forum for users and developers exists, where you can receive announcements, post questions, share ideas and get updates.

A wiki site collects wisdoms for specific use cases and user environments.

Releases

Release notes are included in the change log.

Licence

Licence

FFTW-Age is made freely available under the GPL-3.0 licence (or any later version). Please see LICENCE (located at the repository directory root) for full terms and conditions.

© 2024 Mike S Wang