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.