cannam@127: cannam@127: cannam@127: cannam@127: cannam@127:
cannam@127:cannam@127: Next: Distributed-memory FFTW with MPI, Previous: FFTW Reference, Up: Top [Contents][Index]
cannam@127:In this chapter we document the parallel FFTW routines for cannam@127: shared-memory parallel hardware. These routines, which support cannam@127: parallel one- and multi-dimensional transforms of both real and cannam@127: complex data, are the easiest way to take advantage of multiple cannam@127: processors with FFTW. They work just like the corresponding cannam@127: uniprocessor transform routines, except that you have an extra cannam@127: initialization routine to call, and there is a routine to set the cannam@127: number of threads to employ. Any program that uses the uniprocessor cannam@127: FFTW can therefore be trivially modified to use the multi-threaded cannam@127: FFTW. cannam@127:
cannam@127:A shared-memory machine is one in which all CPUs can directly access cannam@127: the same main memory, and such machines are now common due to the cannam@127: ubiquity of multi-core CPUs. FFTW’s multi-threading support allows cannam@127: you to utilize these additional CPUs transparently from a single cannam@127: program. However, this does not necessarily translate into cannam@127: performance gains—when multiple threads/CPUs are employed, there is cannam@127: an overhead required for synchronization that may outweigh the cannam@127: computatational parallelism. Therefore, you can only benefit from cannam@127: threads if your problem is sufficiently large. cannam@127: cannam@127: cannam@127:
cannam@127:• Installation and Supported Hardware/Software: | cannam@127: | |
• Usage of Multi-threaded FFTW: | cannam@127: | |
• How Many Threads to Use?: | cannam@127: | |
• Thread safety: | cannam@127: |