### 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.