GEMM - SSB

General matrix multiplication functions for computing \( C \leftarrow \alpha A^H B + \beta C \) with stripe-stripe-block distribution.

General matrix multiplication functions for computing \( C \leftarrow \alpha A^H B + \beta C \) with stripe-stripe-block distribution, where computation may be limited to triangular part.

  ------ T     ------
  |    |       |    |
  |    |       |    |
  ------       ------
  |    |       |    |        -------         -------
  |    |       |    |        |  |  |         |  |  |
  ------   *   ------    +   -------   -->   -------
  |    |       |    |        |  |  |         |  |  |
  |    |       |    |        -------         -------
  ------       ------           C               C
  |    |       |    |
  |    |       |    |
  ------       ------
    A            B
  ------ T     ------
  |    |       |    |
  |    |       |    |
  ------       ------
  |    |       |    |        -------         -------
  |    |       |    |        |  |  |         |  |  |
  ------   *   ------    +   -------   -->   -------
  |    |       |    |           |  |         |  |  |
  |    |       |    |           ----            ----
  ------       ------           C               C
  |    |       |    |
  |    |       |    |
  ------       ------
    A            B

Functions

SplaError spla_psgemm_ssb(int m, int n, int kLocal, SplaOperation opA, float alpha, const float *A, int lda, const float *B, int ldb, float beta, float *C, int ldc, int cRowOffset, int cColOffset, SplaMatrixDistribution distC, SplaContext ctx)

Computes a distributed general matrix multiplication of the form \( C \leftarrow \alpha A^H B + \beta C \) in single precision.

\(A\) and \(B\) are only split along the row dimension (stripes), while \(C\) can be distributed as any supported SplaMatrixDistribution type.

Parameters
  • m[in] Number of rows of \(A^H\)

  • n[in] Number of columns of \(B\)

  • kLocal[in] Number rows of \(B\) and number of columns of \(A^H\) stored at calling MPI rank. This number may differ for each rank.

  • opA[in] Operation applied when reading matrix A. Must be SPLA_OP_TRANSPOSE or

  • alpha[in] Scaling of multiplication of \(A^H\) and \(B\)

  • A[in] Pointer to matrix \(A\).

  • lda[in] Leading dimension of \(A\) with lda \(\geq\) kLocal.

  • B[in] Pointer to matrix \(B\).

  • ldb[in] Leading dimension of \(B\) with ldb \(\geq\) kLocal.

  • beta[in] Scaling of \(C\) before summation.

  • C[out] Pointer to global matrix \(C\).

  • ldc[in] Leading dimension of \(C\) with ldc \(\geq\) loc(m), where loc(m) is the number of locally stored rows of \(C\).

  • cRowOffset[in] Row offset in the global matrix \(C\), identifying the first row of the submatrix \(C\).

  • cColOffset[in] Column offset in the global matrix \(C\), identifying the first coloumn of the submatrix \(C\).

  • distC[in] Matrix distribution of global matrix \(C\).

  • ctx[in] Context, which provides configuration settings and reusable resources.

SplaError spla_pdgemm_ssb(int m, int n, int kLocal, SplaOperation opA, double alpha, const double *A, int lda, const double *B, int ldb, double beta, double *C, int ldc, int cRowOffset, int cColOffset, SplaMatrixDistribution distC, SplaContext ctx)

Computes a distributed general matrix multiplication of the form \( C \leftarrow \alpha A^H B + \beta C \) in double precision.

See documentation above.

SplaError spla_pcgemm_ssb(int m, int n, int kLocal, SplaOperation opA, const void *alpha, const void *A, int lda, const void *B, int ldb, const void *beta, void *C, int ldc, int cRowOffset, int cColOffset, SplaMatrixDistribution distC, SplaContext ctx)

Computes a distributed general matrix multiplication of the form \( C \leftarrow \alpha A^H B + \beta C \) in single precision for complex types.

See documentation above.

SplaError spla_pzgemm_ssb(int m, int n, int kLocal, SplaOperation opA, const void *alpha, const void *A, int lda, const void *B, int ldb, const void *beta, void *C, int ldc, int cRowOffset, int cColOffset, SplaMatrixDistribution distC, SplaContext ctx)

Computes a distributed general matrix multiplication of the form \( C \leftarrow \alpha A^H B + \beta C \) in double precision for complex types.

See documentation above.