# Matrix Shapes

The BLACS routines recognize the two most common classes of matrices for dense linear algebra. The first of these classes consists of general rectangular matrices, which in machine storage are 2D arrays consisting of m rows and n columns, with a leading dimension, lda, that determines the distance between successive columns in memory.

The general rectangular matrices take the following parameters as input when determining what array to operate on:

m

  (input) INTEGER. The number of matrix rows to be operated on.

n

  (input) INTEGER. The number of matrix columns to be operated on.

a

  (input/output) TYPE (depends on routine), array of dimension `(lda,n)`.

  A pointer to the beginning of the (sub)array to be sent.

lda

  (input) INTEGER. The distance between two elements in matrix row.

The second class of matrices recognized by the BLACS are trapezoidal matrices (triangular matrices are a sub-class of trapezoidal). Trapezoidal arrays are defined by m, n, and lda, as above, but they have two additional parameters as well. These parameters are:

uplo

  (input) CHARACTER*1 . Indicates whether the matrix is upper or lower trapezoidal, as discussed below.

diag

  (input) CHARACTER*1 . Indicates whether the diagonal of the matrix is unit diagonal (will not be operated on) or otherwise (will be operated on).

The shape of the trapezoidal arrays is determined by these parameters as follows:

Trapezoidal Arrays Shapes

The packing of arrays, if required, so that they may be sent efficiently is hidden, allowing the user to concentrate on the logical matrix, rather than on how the data is organized in the system memory.

Parent topic: BLACS Routines