Skip to content

Class TempLat::FFTMPIDomainSplit

template <size_t NDim>

ClassList > TempLat > FFTMPIDomainSplit

A class which combines the MPIDomainSplit with theFFTLibrarySelector limits on domain splitting.More...

  • #include <fftmpidomainsplit.h>

Public Static Functions

Type Name
std::vector< int > makeDomainDecomposition (MPICommReference baseGroup, const device::IdxArray< NDim > & nGridPoints)
Build the MPI domain decomposition that matches the FFT backend selected for this (baseGroup.size(), nGridPoints) combination. If the backend pinned an explicit grid shape (e.g. ParaFaFT's probe), that shape is honoured verbatim; otherwiseMPIDomainSplit factors the rank count over the backend's allowed number of split dimensions.
MPICartesianGroup makeMPIGroup (MPICommReference baseGroup, const device::IdxArray< NDim > & nGridPoints)
Build the Cartesian group on the FFT backend's own communicator.
MPICartesianGroup makeMPIGroup (const device::IdxArray< NDim > & nGridPoints)

Detailed Description

Unit test: ctest -R test-fftmpidomainsplit

Public Static Functions Documentation

function makeDomainDecomposition

Build the MPI domain decomposition that matches the FFT backend selected for this (baseGroup.size(), nGridPoints) combination. If the backend pinned an explicit grid shape (e.g. ParaFaFT's probe), that shape is honoured verbatim; otherwiseMPIDomainSplit factors the rank count over the backend's allowed number of split dimensions.

static inline std::vector< int > TempLat::FFTMPIDomainSplit::makeDomainDecomposition (
    MPICommReference baseGroup,
    const device::IdxArray< NDim > & nGridPoints
) 


function makeMPIGroup [1/2]

Build the Cartesian group on the FFT backend's own communicator.

static inline MPICartesianGroup TempLat::FFTMPIDomainSplit::makeMPIGroup (
    MPICommReference baseGroup,
    const device::IdxArray< NDim > & nGridPoints
) 

The group is created over topology.comm with no reordering, and its coordinates are cross-checked against the backend's. So the group does not merely have the same shape as the backend's decomposition — it has the backend's actual rank ordering, which is what the layout's local starts are derived from.


function makeMPIGroup [2/2]

static inline MPICartesianGroup TempLat::FFTMPIDomainSplit::makeMPIGroup (
    const device::IdxArray< NDim > & nGridPoints
) 


The documentation for this class was generated from the following file cosmolatticeweb/tmp/code_source/templat/include/TempLat/fft/fftmpidomainsplit.h