Next: , Previous: , Up: Multi-threaded FFTW   [Contents][Index]

5.1 Installation and Supported Hardware/Software

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.