Welcome to the home page of benchFFT, a program to benchmark FFT software, assembled by Matteo Frigo and Steven G. Johnson at MIT.
The benchmark incorporates a large number of publicly available FFT implementations, in both C and Fortran, and measures their performance and accuracy over a range of transform sizes. It benchmarks both real and complex transforms in one, two, and three dimensions.
The FFT implementations in the benchmark were written by various authors over a period of more than 35 years. Except for small tweaks to get things to compile, we used the unmodified original codes.
We have run the benchmark on a number of different computer architectures in order to gain a sense of how the relative performance of different codes varies with hardware. Whenever the author of the FFT routine explicitly specifies a compiler and a set of compiler flags, we used the specified compiler and flags. Otherwise, we used a uniform set of "good" compiler flags. Graphs, the raw data, and a more complete description of the methodology can be found on the Speed Results page.
We also benchmarked the accuracy of the different codes, for 1d FFTs, only, on a smaller number of machines, as described and graphed on the Accuracy Results page.
If you have an architecture that is not represented in the graphs, and are interested in letting us run the benchmark on your machine over a weekend, please let us know. (We are mainly interested in benchmarking new CPU types, not so much in the latest clock-speed advances.)
You can download the complete benchFFT source code, including the source code of many of the benchmarked FFTs, if you have more questions about the methodology or want to run it yourself.
Running the benchmark requires a Unix-like environment to use the
Makefiles and shell scripts. For each machine, we typically set up a
small script to set environment variables to indicate library
locations, compiler flags, etcetera, and to run the benchmark;
examples are included, see the