Next: , Previous: , Up: Distributed-memory FFTW with MPI   [Contents][Index]

6.9 Avoiding MPI Deadlocks

An MPI program can deadlock if one process is waiting for a message from another process that never gets sent. To avoid deadlocks when using FFTW’s MPI routines, it is important to know which functions are collective: that is, which functions must always be called in the same order from every process in a given communicator. (For example, MPI_Barrier is the canonical example of a collective function in the MPI standard.)

The functions in FFTW that are always collective are: every function beginning with ‘fftw_mpi_plan’, as well as fftw_mpi_broadcast_wisdom and fftw_mpi_gather_wisdom. Also, the following functions from the ordinary FFTW interface are collective when they are applied to a plan created by an ‘fftw_mpi_plan’ function: fftw_execute, fftw_destroy_plan, and fftw_flops.