Matrix Distribution
-
class MatrixDistribution
- #include <matrix_distribution.hpp>
Public Functions
-
MatrixDistribution(MatrixDistribution&&) = default
Default move constructor.
-
MatrixDistribution(const MatrixDistribution&) = default
Default copy constructor.
-
MatrixDistribution &operator=(MatrixDistribution&&) = default
Default move assignment operator.
-
MatrixDistribution &operator=(const MatrixDistribution&) = default
Default copy assignment operator.
-
int proc_grid_rows() const
Access a distribution parameter.
- Returns:
Number of rows in process grid.
-
int proc_grid_cols() const
Access a distribution parameter.
- Returns:
Number of coloumns in process grid.
-
int row_block_size() const
Access a distribution parameter.
- Returns:
Row block size used for matrix partitioning.
-
int col_block_size() const
Access a distribution parameter.
- Returns:
Coloumn block size used for matrix partitioning.
-
SplaDistributionType type() const
Access a distribution parameter.
- Returns:
Distribution type
-
MPI_Comm comm()
Access a distribution parameter.
- Returns:
Communicator used internally. Order of ranks may differ from communicator provided for creation of distribution.
-
void set_row_block_size(int rowBlockSize)
Set row block size used for matrix partitioning.
- Parameters:
rowBlockSize – [in] Row block size.
-
void set_col_block_size(int colBlockSize)
Set coloumn block size used for matrix partitioning.
- Parameters:
colBlockSize – [in] Coloumn block size.
Public Static Functions
-
static MatrixDistribution create_blacs_block_cyclic(MPI_Comm comm, char order, int procGridRows, int procGridCols, int rowBlockSize, int colBlockSize)
Create a blacs block cyclic matrix distribution with row major or coloumn major ordering of MPI ranks.
- Parameters:
comm – [in] MPI communicator to be used.
order – [in] Either ‘R’ for row major ordering or ‘C’ for coloumn major ordering.
procGridRows – [in] Number of rows in process grid.
procGridCols – [in] Number of coloumns in process grid.
rowBlockSize – [in] Row block size for matrix partitioning.
colBlockSize – [in] Coloumn block size for matrix partitioning.
-
static MatrixDistribution create_blacs_block_cyclic_from_mapping(MPI_Comm comm, const int *mapping, int procGridRows, int procGridCols, int rowBlockSize, int colBlockSize)
Create a blacs block cyclic matrix distribution with given process grid mapping.
- Parameters:
comm – [in] MPI communicator to be used.
mapping – [in] Pointer to array of size procGridRows * procGridCols mapping MPI ranks onto a coloumn major process grid.
procGridRows – [in] Number of rows in process grid.
procGridCols – [in] Number of coloumns in process grid.
rowBlockSize – [in] Row block size for matrix partitioning.
colBlockSize – [in] Coloumn block size for matrix partitioning.
-
static MatrixDistribution create_mirror(MPI_Comm comm)
Create a mirror distribution, where the full matrix is stored on each MPI rank.
- Parameters:
comm – [in] MPI communicator to be used.
-
MatrixDistribution(MatrixDistribution&&) = default