Cabana 0.8.0-dev
 
Loading...
Searching...
No Matches
Cabana::Grid::DimBlockPartitioner< NumSpaceDim > Class Template Reference

Dimension-only partitioner. More...

#include <Cabana_Grid_Partitioner.hpp>

Inheritance diagram for Cabana::Grid::DimBlockPartitioner< NumSpaceDim >:
Collaboration diagram for Cabana::Grid::DimBlockPartitioner< NumSpaceDim >:

Public Member Functions

 DimBlockPartitioner ()
 Default constructor (automatically partitioned in all dimensions).
 
 DimBlockPartitioner (const int dim)
 Constructor for NumSpaceDim-1 (1d for 2d system).
 
 DimBlockPartitioner (const int dim_1, const int dim_2)
 Constructor for 1d decomposition (3d systems only).
 
std::array< int, NumSpaceDim > ranksPerDimension (MPI_Comm comm, const std::array< int, NumSpaceDim > &) const override
 Get the MPI ranks per dimension.
 
void ownedCellInfo (MPI_Comm cart_comm, const std::array< int, num_space_dim > &global_cells_per_dim, std::array< int, num_space_dim > &owned_num_cell, std::array< int, num_space_dim > &global_cell_offset) const override
 Get the owned number of cells and the global cell offset of the current MPI rank.
 
std::array< int, num_space_dimownedCellsPerDimension (MPI_Comm cart_comm, const std::array< int, num_space_dim > &global_cells_per_dim) const
 Get the owned number of cells of the current MPI rank.
 
- Public Member Functions inherited from Cabana::Grid::BlockPartitioner< NumSpaceDim >
virtual std::array< int, num_space_dimranksPerDimension (MPI_Comm comm, const std::array< int, num_space_dim > &global_cells_per_dim) const =0
 Get the number of MPI ranks in each dimension of the grid.
 

Static Public Attributes

static constexpr std::size_t num_space_dim = NumSpaceDim
 Spatial dimension.
 
- Static Public Attributes inherited from Cabana::Grid::BlockPartitioner< NumSpaceDim >
static constexpr std::size_t num_space_dim = NumSpaceDim
 Spatial dimension.
 

Detailed Description

template<std::size_t NumSpaceDim>
class Cabana::Grid::DimBlockPartitioner< NumSpaceDim >

Dimension-only partitioner.

Template Parameters
NumSpaceDimSpatial dimension. Use MPI to compute the most uniform block distribution possible (i.e. the one that has the minimal number of neighbor communication messages in halo exchange). This distribution is independent of mesh parameters - only the size of the communicator is considered. Depending on the problem, this may not be the optimal partitioning depending on cell-counts and workloads as the reduced number of MPI messages may be overshadowed by the load imbalance during computation.

Constructor & Destructor Documentation

◆ DimBlockPartitioner() [1/2]

template<std::size_t NumSpaceDim>
Cabana::Grid::DimBlockPartitioner< NumSpaceDim >::DimBlockPartitioner ( const int dim)
inline

Constructor for NumSpaceDim-1 (1d for 2d system).

Parameters
dimDimension to ignore for MPI decomposition.

◆ DimBlockPartitioner() [2/2]

template<std::size_t NumSpaceDim>
Cabana::Grid::DimBlockPartitioner< NumSpaceDim >::DimBlockPartitioner ( const int dim_1,
const int dim_2 )
inline

Constructor for 1d decomposition (3d systems only).

Parameters
dim_1First dimension to ignore for MPI decomposition.
dim_2Second dimension to ignore for MPI decomposition.

Member Function Documentation

◆ ownedCellInfo()

template<std::size_t NumSpaceDim>
void Cabana::Grid::DimBlockPartitioner< NumSpaceDim >::ownedCellInfo ( MPI_Comm cart_comm,
const std::array< int, num_space_dim > & global_cells_per_dim,
std::array< int, num_space_dim > & owned_num_cell,
std::array< int, num_space_dim > & global_cell_offset ) const
inlineoverridevirtual

Get the owned number of cells and the global cell offset of the current MPI rank.

Parameters
cart_commThe MPI Cartesian communicator for the partitioning.
global_cells_per_dimThe number of global cells in each dimension.
owned_num_cell(Return) The owned number of cells of the current MPI rank in each dimension.
global_cell_offset(Return) The global cell offset of the current MPI rank in each dimension

Implements Cabana::Grid::BlockPartitioner< NumSpaceDim >.

◆ ownedCellsPerDimension()

template<std::size_t NumSpaceDim>
std::array< int, num_space_dim > Cabana::Grid::DimBlockPartitioner< NumSpaceDim >::ownedCellsPerDimension ( MPI_Comm cart_comm,
const std::array< int, num_space_dim > & global_cells_per_dim ) const
inline

Get the owned number of cells of the current MPI rank.

Parameters
cart_commThe MPI Cartesian communicator for the partitioning.
global_cells_per_dimThe number of global cells in each dimension.
Returns
The owned number of cells of the current MPI rank in each dimension.

◆ ranksPerDimension()

template<std::size_t NumSpaceDim>
std::array< int, NumSpaceDim > Cabana::Grid::DimBlockPartitioner< NumSpaceDim >::ranksPerDimension ( MPI_Comm comm,
const std::array< int, NumSpaceDim > &  ) const
inlineoverride

Get the MPI ranks per dimension.

Parameters
commMPI communicator.

The documentation for this class was generated from the following file: