PLASMA
Parallel Linear Algebra Software for Multicore Architectures

\( C = \alpha A B + \beta C \) or \( C = \alpha B A + \beta C \) where \( A \) is Hermitian More...

Functions

int plasma_chemm (plasma_enum_t side, plasma_enum_t uplo, int m, int n, plasma_complex32_t alpha, plasma_complex32_t *pA, int lda, plasma_complex32_t *pB, int ldb, plasma_complex32_t beta, plasma_complex32_t *pC, int ldc)
 
void plasma_omp_chemm (plasma_enum_t side, plasma_enum_t uplo, plasma_complex32_t alpha, plasma_desc_t A, plasma_desc_t B, plasma_complex32_t beta, plasma_desc_t C, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_zhemm (plasma_enum_t side, plasma_enum_t uplo, int m, int n, plasma_complex64_t alpha, plasma_complex64_t *pA, int lda, plasma_complex64_t *pB, int ldb, plasma_complex64_t beta, plasma_complex64_t *pC, int ldc)
 
void plasma_omp_zhemm (plasma_enum_t side, plasma_enum_t uplo, plasma_complex64_t alpha, plasma_desc_t A, plasma_desc_t B, plasma_complex64_t beta, plasma_desc_t C, plasma_sequence_t *sequence, plasma_request_t *request)
 

Detailed Description

\( C = \alpha A B + \beta C \) or \( C = \alpha B A + \beta C \) where \( A \) is Hermitian

Function Documentation

int plasma_chemm ( plasma_enum_t  side,
plasma_enum_t  uplo,
int  m,
int  n,
plasma_complex32_t  alpha,
plasma_complex32_t *  pA,
int  lda,
plasma_complex32_t *  pB,
int  ldb,
plasma_complex32_t  beta,
plasma_complex32_t *  pC,
int  ldc 
)

Performs one of the matrix-matrix operations

\[ C = \alpha \times A \times B + \beta \times C \]

or

\[ C = \alpha \times B \times A + \beta \times C \]

where alpha and beta are scalars, A is a Hermitian matrix and B and C are m-by-n matrices.

Parameters
[in]sideSpecifies whether the Hermitian matrix A appears on the left or right in the operation as follows:
  • PlasmaLeft:

    \[ C = \alpha \times A \times B + \beta \times C \]

  • PlasmaRight:

    \[ C = \alpha \times B \times A + \beta \times C \]

[in]uploSpecifies whether the upper or lower triangular part of the Hermitian matrix A is to be referenced as follows:
  • PlasmaLower: Only the lower triangular part of the Hermitian matrix A is to be referenced.
  • PlasmaUpper: Only the upper triangular part of the Hermitian matrix A is to be referenced.
[in]mThe number of rows of the matrix C. m >= 0.
[in]nThe number of columns of the matrix C. n >= 0.
[in]alphaThe scalar alpha.
[in]pAA is an lda-by-ka matrix, where ka is m when side = PlasmaLeft, and is n otherwise. Only the uplo triangular part is referenced.
[in]ldaThe leading dimension of the array A. lda >= max(1,ka).
[in]pBB is an ldb-by-n matrix, where the leading m-by-n part of the array B must contain the matrix B.
[in]ldbThe leading dimension of the array B. ldb >= max(1,m).
[in]betaThe scalar beta.
[in,out]pCC is an ldc-by-n matrix. On exit, the array is overwritten by the m-by-n updated matrix.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
See also
plasma_omp_chemm
plasma_chemm
void plasma_omp_chemm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_complex32_t  alpha,
plasma_desc_t  A,
plasma_desc_t  B,
plasma_complex32_t  beta,
plasma_desc_t  C,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Performs Hermitian matrix multiplication. Non-blocking tile version of plasma_chemm(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sideSpecifies whether the Hermitian matrix A appears on the left or right in the operation as follows:
  • PlasmaLeft:

    \[ C = \alpha \times A \times B + \beta \times C \]

  • PlasmaRight:

    \[ C = \alpha \times B \times A + \beta \times C \]

[in]uploSpecifies whether the upper or lower triangular part of the Hermitian matrix A is to be referenced as follows:
  • PlasmaLower: Only the lower triangular part of the Hermitian matrix A is to be referenced.
  • PlasmaUpper: Only the upper triangular part of the Hermitian matrix A is to be referenced.
[in]alphaThe scalar alpha.
[in]ADescriptor of matrix A.
[in]BDescriptor of matrix B.
[in]betaThe scalar beta.
[in,out]CDescriptor of matrix C.
[in]sequenceIdentifies the sequence of function calls that this call belongs to (for completion checks and exception handling purposes).
[out]requestIdentifies this function call (for exception handling purposes).
See also
plasma_chemm
plasma_omp_chemm
int plasma_zhemm ( plasma_enum_t  side,
plasma_enum_t  uplo,
int  m,
int  n,
plasma_complex64_t  alpha,
plasma_complex64_t *  pA,
int  lda,
plasma_complex64_t *  pB,
int  ldb,
plasma_complex64_t  beta,
plasma_complex64_t *  pC,
int  ldc 
)

Performs one of the matrix-matrix operations

\[ C = \alpha \times A \times B + \beta \times C \]

or

\[ C = \alpha \times B \times A + \beta \times C \]

where alpha and beta are scalars, A is a Hermitian matrix and B and C are m-by-n matrices.

Parameters
[in]sideSpecifies whether the Hermitian matrix A appears on the left or right in the operation as follows:
  • PlasmaLeft:

    \[ C = \alpha \times A \times B + \beta \times C \]

  • PlasmaRight:

    \[ C = \alpha \times B \times A + \beta \times C \]

[in]uploSpecifies whether the upper or lower triangular part of the Hermitian matrix A is to be referenced as follows:
  • PlasmaLower: Only the lower triangular part of the Hermitian matrix A is to be referenced.
  • PlasmaUpper: Only the upper triangular part of the Hermitian matrix A is to be referenced.
[in]mThe number of rows of the matrix C. m >= 0.
[in]nThe number of columns of the matrix C. n >= 0.
[in]alphaThe scalar alpha.
[in]pAA is an lda-by-ka matrix, where ka is m when side = PlasmaLeft, and is n otherwise. Only the uplo triangular part is referenced.
[in]ldaThe leading dimension of the array A. lda >= max(1,ka).
[in]pBB is an ldb-by-n matrix, where the leading m-by-n part of the array B must contain the matrix B.
[in]ldbThe leading dimension of the array B. ldb >= max(1,m).
[in]betaThe scalar beta.
[in,out]pCC is an ldc-by-n matrix. On exit, the array is overwritten by the m-by-n updated matrix.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
See also
plasma_omp_zhemm
plasma_chemm
void plasma_omp_zhemm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_complex64_t  alpha,
plasma_desc_t  A,
plasma_desc_t  B,
plasma_complex64_t  beta,
plasma_desc_t  C,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Performs Hermitian matrix multiplication. Non-blocking tile version of plasma_zhemm(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sideSpecifies whether the Hermitian matrix A appears on the left or right in the operation as follows:
  • PlasmaLeft:

    \[ C = \alpha \times A \times B + \beta \times C \]

  • PlasmaRight:

    \[ C = \alpha \times B \times A + \beta \times C \]

[in]uploSpecifies whether the upper or lower triangular part of the Hermitian matrix A is to be referenced as follows:
  • PlasmaLower: Only the lower triangular part of the Hermitian matrix A is to be referenced.
  • PlasmaUpper: Only the upper triangular part of the Hermitian matrix A is to be referenced.
[in]alphaThe scalar alpha.
[in]ADescriptor of matrix A.
[in]BDescriptor of matrix B.
[in]betaThe scalar beta.
[in,out]CDescriptor of matrix C.
[in]sequenceIdentifies the sequence of function calls that this call belongs to (for completion checks and exception handling purposes).
[out]requestIdentifies this function call (for exception handling purposes).
See also
plasma_zhemm
plasma_omp_chemm