cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: FFTW 3.3.8: Advanced distributed-transpose interface cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167:
cannam@167:

cannam@167: Next: , Previous: , Up: FFTW MPI Transposes   [Contents][Index]

cannam@167:
cannam@167:
cannam@167: cannam@167:

6.7.2 Advanced distributed-transpose interface

cannam@167: cannam@167:

The above routines are for a transpose of a matrix of numbers (of type cannam@167: double), using FFTW’s default block sizes. More generally, one cannam@167: can perform transposes of tuples of numbers, with cannam@167: user-specified block sizes for the input and output: cannam@167:

cannam@167:
cannam@167:
fftw_plan fftw_mpi_plan_many_transpose
cannam@167:                 (ptrdiff_t n0, ptrdiff_t n1, ptrdiff_t howmany,
cannam@167:                  ptrdiff_t block0, ptrdiff_t block1,
cannam@167:                  double *in, double *out, MPI_Comm comm, unsigned flags);
cannam@167: 
cannam@167: cannam@167: cannam@167:

In this case, one is transposing an n0 by n1 matrix of cannam@167: howmany-tuples (e.g. howmany = 2 for complex numbers). cannam@167: The input is distributed along the n0 dimension with block size cannam@167: block0, and the n1 by n0 output is distributed cannam@167: along the n1 dimension with block size block1. If cannam@167: FFTW_MPI_DEFAULT_BLOCK (0) is passed for a block size then FFTW cannam@167: uses its default block size. To get the local size of the data on cannam@167: each process, you should then call fftw_mpi_local_size_many_transposed. cannam@167: cannam@167: cannam@167:

cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: