All of the FFTW threads code is located in the threads
subdirectory of the FFTW package. On Unix systems, the FFTW threads
libraries and header files can be automatically configured, compiled,
and installed along with the uniprocessor FFTW libraries simply by
including --enable-threads
in the flags to the configure
script (see Installation on Unix), or --enable-openmp
to use
OpenMP threads.
The threads routines require your operating system to have some sort
of shared-memory threads support. Specifically, the FFTW threads
package works with POSIX threads (available on most Unix variants,
from GNU/Linux to MacOS X) and Win32 threads. OpenMP threads, which
are supported in many common compilers (e.g. gcc) are also supported,
and may give better performance on some systems. (OpenMP threads are
also useful if you are employing OpenMP in your own code, in order to
minimize conflicts between threading models.) If you have a
shared-memory machine that uses a different threads API, it should be
a simple matter of programming to include support for it; see the file
threads/threads.c
for more detail.
You can compile FFTW with both --enable-threads
and
--enable-openmp
at the same time, since they install libraries
with different names (‘fftw3_threads’ and ‘fftw3_omp’, as
described below). However, your programs may only link to one
of these two libraries at a time.
Ideally, of course, you should also have multiple processors in order to get any benefit from the threaded transforms.