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