PLASMA
Parallel Linear Algebra Software for Multicore Architectures

\( B = \alpha \;op(A)\; B \) or \( B = \alpha B \;op(A) \) where \( A \) is triangular More...

Functions

int plasma_ctrmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, int m, int n, plasma_complex32_t alpha, plasma_complex32_t *pA, int lda, plasma_complex32_t *pB, int ldb)
 
void plasma_omp_ctrmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, plasma_complex32_t alpha, plasma_desc_t A, plasma_desc_t B, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_dtrmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, int m, int n, double alpha, double *pA, int lda, double *pB, int ldb)
 
void plasma_omp_dtrmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, double alpha, plasma_desc_t A, plasma_desc_t B, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_strmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, int m, int n, float alpha, float *pA, int lda, float *pB, int ldb)
 
void plasma_omp_strmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, float alpha, plasma_desc_t A, plasma_desc_t B, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_ztrmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, int m, int n, plasma_complex64_t alpha, plasma_complex64_t *pA, int lda, plasma_complex64_t *pB, int ldb)
 
void plasma_omp_ztrmm (plasma_enum_t side, plasma_enum_t uplo, plasma_enum_t transa, plasma_enum_t diag, plasma_complex64_t alpha, plasma_desc_t A, plasma_desc_t B, plasma_sequence_t *sequence, plasma_request_t *request)
 

Detailed Description

\( B = \alpha \;op(A)\; B \) or \( B = \alpha B \;op(A) \) where \( A \) is triangular

Function Documentation

int plasma_ctrmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
int  m,
int  n,
plasma_complex32_t  alpha,
plasma_complex32_t *  pA,
int  lda,
plasma_complex32_t *  pB,
int  ldb 
)

Performs a triangular matrix-matrix multiply of the form

\[B = \alpha [op(A) \times B] \]

, if side = PlasmaLeft or

\[B = \alpha [B \times op(A)] \]

, if side = PlasmaRight

where op( X ) is one of:

    - op(A) = A   or
    - op(A) = A^T or
    - op(A) = A^H

alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]mThe number of rows of matrix B. m >= 0.
[in]nThe number of columns of matrix B. n >= 0.
[in]alphaThe scalar alpha.
[in]pAThe triangular matrix A of dimension lda-by-k, where k is m when side='L' or 'l' and k is n when when side='R' or 'r'. If uplo = PlasmaUpper, the leading k-by-k upper triangular part of the array A contains the upper triangular matrix, and the strictly lower triangular part of A is not referenced. If uplo = PlasmaLower, the leading k-by-k lower triangular part of the array A contains the lower triangular matrix, and the strictly upper triangular part of A is not referenced. If diag = PlasmaUnit, the diagonal elements of A are also not referenced and are assumed to be 1.
[in]ldaThe leading dimension of the array A. When side='L' or 'l', lda >= max(1,m), when side='R' or 'r' then lda >= max(1,n).
[in,out]pBOn entry, the matrix B of dimension ldb-by-n. On exit, the result of a triangular matrix-matrix multiply ( alpha*op(A)*B ) or ( alpha*B*op(A) ).
[in]ldbThe leading dimension of the array B. ldb >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
See also
plasma_omp_ctrmm
plasma_ctrmm
plasma_dtrmm
plasma_strmm
void plasma_omp_ctrmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
plasma_complex32_t  alpha,
plasma_desc_t  A,
plasma_desc_t  B,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Performs triangular matrix multiplication. Non-blocking tile version of plasma_ctrmm(). May return before the computation is finished. Operates on matrices stored by tiles. All matrices are passed through descriptors. All dimensions are taken from the descriptors. Allows for pipelining of operations at runtime.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]alphaThe scalar alpha.
[in]ADescriptor of the triangular matrix A.
[in,out]BDescriptor of matrix B.
[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).
Return values
voidErrors are returned by setting sequence->status and request->status to error values. The sequence->status and request->status should never be set to PlasmaSuccess (the initial values) since another async call may be setting a failure value at the same time.
See also
plasma_ctrmm
plasma_omp_ctrmm
plasma_omp_dtrmm
plasma_omp_strmm
int plasma_dtrmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
int  m,
int  n,
double  alpha,
double *  pA,
int  lda,
double *  pB,
int  ldb 
)

Performs a triangular matrix-matrix multiply of the form

\[B = \alpha [op(A) \times B] \]

, if side = PlasmaLeft or

\[B = \alpha [B \times op(A)] \]

, if side = PlasmaRight

where op( X ) is one of:

    - op(A) = A   or
    - op(A) = A^T or
    - op(A) = A^T

alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]mThe number of rows of matrix B. m >= 0.
[in]nThe number of columns of matrix B. n >= 0.
[in]alphaThe scalar alpha.
[in]pAThe triangular matrix A of dimension lda-by-k, where k is m when side='L' or 'l' and k is n when when side='R' or 'r'. If uplo = PlasmaUpper, the leading k-by-k upper triangular part of the array A contains the upper triangular matrix, and the strictly lower triangular part of A is not referenced. If uplo = PlasmaLower, the leading k-by-k lower triangular part of the array A contains the lower triangular matrix, and the strictly upper triangular part of A is not referenced. If diag = PlasmaUnit, the diagonal elements of A are also not referenced and are assumed to be 1.
[in]ldaThe leading dimension of the array A. When side='L' or 'l', lda >= max(1,m), when side='R' or 'r' then lda >= max(1,n).
[in,out]pBOn entry, the matrix B of dimension ldb-by-n. On exit, the result of a triangular matrix-matrix multiply ( alpha*op(A)*B ) or ( alpha*B*op(A) ).
[in]ldbThe leading dimension of the array B. ldb >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
See also
plasma_omp_dtrmm
plasma_ctrmm
plasma_dtrmm
plasma_strmm
void plasma_omp_dtrmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
double  alpha,
plasma_desc_t  A,
plasma_desc_t  B,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Performs triangular matrix multiplication. Non-blocking tile version of plasma_dtrmm(). May return before the computation is finished. Operates on matrices stored by tiles. All matrices are passed through descriptors. All dimensions are taken from the descriptors. Allows for pipelining of operations at runtime.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]alphaThe scalar alpha.
[in]ADescriptor of the triangular matrix A.
[in,out]BDescriptor of matrix B.
[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).
Return values
voidErrors are returned by setting sequence->status and request->status to error values. The sequence->status and request->status should never be set to PlasmaSuccess (the initial values) since another async call may be setting a failure value at the same time.
See also
plasma_dtrmm
plasma_omp_ctrmm
plasma_omp_dtrmm
plasma_omp_strmm
int plasma_strmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
int  m,
int  n,
float  alpha,
float *  pA,
int  lda,
float *  pB,
int  ldb 
)

Performs a triangular matrix-matrix multiply of the form

\[B = \alpha [op(A) \times B] \]

, if side = PlasmaLeft or

\[B = \alpha [B \times op(A)] \]

, if side = PlasmaRight

where op( X ) is one of:

    - op(A) = A   or
    - op(A) = A^T or
    - op(A) = A^T

alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]mThe number of rows of matrix B. m >= 0.
[in]nThe number of columns of matrix B. n >= 0.
[in]alphaThe scalar alpha.
[in]pAThe triangular matrix A of dimension lda-by-k, where k is m when side='L' or 'l' and k is n when when side='R' or 'r'. If uplo = PlasmaUpper, the leading k-by-k upper triangular part of the array A contains the upper triangular matrix, and the strictly lower triangular part of A is not referenced. If uplo = PlasmaLower, the leading k-by-k lower triangular part of the array A contains the lower triangular matrix, and the strictly upper triangular part of A is not referenced. If diag = PlasmaUnit, the diagonal elements of A are also not referenced and are assumed to be 1.
[in]ldaThe leading dimension of the array A. When side='L' or 'l', lda >= max(1,m), when side='R' or 'r' then lda >= max(1,n).
[in,out]pBOn entry, the matrix B of dimension ldb-by-n. On exit, the result of a triangular matrix-matrix multiply ( alpha*op(A)*B ) or ( alpha*B*op(A) ).
[in]ldbThe leading dimension of the array B. ldb >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
See also
plasma_omp_strmm
plasma_ctrmm
plasma_dtrmm
plasma_strmm
void plasma_omp_strmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
float  alpha,
plasma_desc_t  A,
plasma_desc_t  B,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Performs triangular matrix multiplication. Non-blocking tile version of plasma_strmm(). May return before the computation is finished. Operates on matrices stored by tiles. All matrices are passed through descriptors. All dimensions are taken from the descriptors. Allows for pipelining of operations at runtime.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]alphaThe scalar alpha.
[in]ADescriptor of the triangular matrix A.
[in,out]BDescriptor of matrix B.
[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).
Return values
voidErrors are returned by setting sequence->status and request->status to error values. The sequence->status and request->status should never be set to PlasmaSuccess (the initial values) since another async call may be setting a failure value at the same time.
See also
plasma_strmm
plasma_omp_ctrmm
plasma_omp_dtrmm
plasma_omp_strmm
int plasma_ztrmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
int  m,
int  n,
plasma_complex64_t  alpha,
plasma_complex64_t *  pA,
int  lda,
plasma_complex64_t *  pB,
int  ldb 
)

Performs a triangular matrix-matrix multiply of the form

\[B = \alpha [op(A) \times B] \]

, if side = PlasmaLeft or

\[B = \alpha [B \times op(A)] \]

, if side = PlasmaRight

where op( X ) is one of:

    - op(A) = A   or
    - op(A) = A^T or
    - op(A) = A^H

alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]mThe number of rows of matrix B. m >= 0.
[in]nThe number of columns of matrix B. n >= 0.
[in]alphaThe scalar alpha.
[in]pAThe triangular matrix A of dimension lda-by-k, where k is m when side='L' or 'l' and k is n when when side='R' or 'r'. If uplo = PlasmaUpper, the leading k-by-k upper triangular part of the array A contains the upper triangular matrix, and the strictly lower triangular part of A is not referenced. If uplo = PlasmaLower, the leading k-by-k lower triangular part of the array A contains the lower triangular matrix, and the strictly upper triangular part of A is not referenced. If diag = PlasmaUnit, the diagonal elements of A are also not referenced and are assumed to be 1.
[in]ldaThe leading dimension of the array A. When side='L' or 'l', lda >= max(1,m), when side='R' or 'r' then lda >= max(1,n).
[in,out]pBOn entry, the matrix B of dimension ldb-by-n. On exit, the result of a triangular matrix-matrix multiply ( alpha*op(A)*B ) or ( alpha*B*op(A) ).
[in]ldbThe leading dimension of the array B. ldb >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
See also
plasma_omp_ztrmm
plasma_ctrmm
plasma_dtrmm
plasma_strmm
void plasma_omp_ztrmm ( plasma_enum_t  side,
plasma_enum_t  uplo,
plasma_enum_t  transa,
plasma_enum_t  diag,
plasma_complex64_t  alpha,
plasma_desc_t  A,
plasma_desc_t  B,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Performs triangular matrix multiplication. Non-blocking tile version of plasma_ztrmm(). May return before the computation is finished. Operates on matrices stored by tiles. All matrices are passed through descriptors. All dimensions are taken from the descriptors. Allows for pipelining of operations at runtime.

Parameters
[in]sideSpecifies whether op( A ) appears on the left or on the right of B:
  • PlasmaLeft: alpha*op( A )*B
  • PlasmaRight: alpha*B*op( A )
[in]uploSpecifies whether the matrix A is upper triangular or lower triangular:
  • PlasmaUpper: Upper triangle of A is stored;
  • PlasmaLower: Lower triangle of A is stored.
[in]transaSpecifies whether the matrix A is transposed, not transposed or conjugate transposed:
  • PlasmaNoTrans: A is transposed;
  • PlasmaTrans: A is not transposed;
  • PlasmaConjTrans: A is conjugate transposed.
[in]diagSpecifies whether or not A is unit triangular:
  • PlasmaNonUnit: A is non-unit triangular;
  • PlasmaUnit: A is unit triangular.
[in]alphaThe scalar alpha.
[in]ADescriptor of the triangular matrix A.
[in,out]BDescriptor of matrix B.
[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).
Return values
voidErrors are returned by setting sequence->status and request->status to error values. The sequence->status and request->status should never be set to PlasmaSuccess (the initial values) since another async call may be setting a failure value at the same time.
See also
plasma_ztrmm
plasma_omp_ctrmm
plasma_omp_dtrmm
plasma_omp_strmm