Template Function combigrid::CombiCom::distributedGlobalSubspaceReduce

Function Documentation

template<typename SparseGridType, bool communicateAllAllocated = false>
void combigrid::CombiCom::distributedGlobalSubspaceReduce(SparseGridType &dsg, uint32_t maxMiBToSendPerThread, RankType globalReduceRankThatCollects = MPI_PROC_NULL)

perform distributed global subspace reduce or outgroup sparse grid reduce

sets of subspaces are reduced between the groups that have space allocated for them, with a communicator for each set (this is why subspace reduce cannot be used for really large combination schemes / numbers of subspaces and process groups)

The differences between sparse grid reduce, subspace reduce, and outgroup reduce are discussed in more detail in http://elib.uni-stuttgart.de/handle/11682/14229 , section 4.4.

Template Parameters:
  • SparseGridType – (derived from) DistributedSparseGridUniform

  • communicateAllAllocated – if false, all subspaces stored by communicator in the distributed sparse grid are communicated (different sets -> subspace reduce); if true, all allocated subspaces are communicated (a single set of subspaces -> outgroup reduce).

Parameters:
  • dsg – sparse grid of type SparseGridType

  • maxMiBToSendPerThread – the maximum number of MiB to send per OpenMP thread (~= per core) at once

  • globalReduceRankThatCollects – the rank that collects the data, or MPI_PROC_NULL if allreduce