PLASMA
Parallel Linear Algebra Software for Multicore Architectures
or/unmqr: Multiplies by Q from QR factorization

Functions

int plasma_cunmqr (plasma_enum_t side, plasma_enum_t trans, int m, int n, int k, plasma_complex32_t *pA, int lda, plasma_desc_t T, plasma_complex32_t *pC, int ldc)
 
void plasma_omp_cunmqr (plasma_enum_t side, plasma_enum_t trans, plasma_desc_t A, plasma_desc_t T, plasma_desc_t C, plasma_workspace_t work, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_dormqr (plasma_enum_t side, plasma_enum_t trans, int m, int n, int k, double *pA, int lda, plasma_desc_t T, double *pC, int ldc)
 
void plasma_omp_dormqr (plasma_enum_t side, plasma_enum_t trans, plasma_desc_t A, plasma_desc_t T, plasma_desc_t C, plasma_workspace_t work, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_sormqr (plasma_enum_t side, plasma_enum_t trans, int m, int n, int k, float *pA, int lda, plasma_desc_t T, float *pC, int ldc)
 
void plasma_omp_sormqr (plasma_enum_t side, plasma_enum_t trans, plasma_desc_t A, plasma_desc_t T, plasma_desc_t C, plasma_workspace_t work, plasma_sequence_t *sequence, plasma_request_t *request)
 
int plasma_zunmqr (plasma_enum_t side, plasma_enum_t trans, int m, int n, int k, plasma_complex64_t *pA, int lda, plasma_desc_t T, plasma_complex64_t *pC, int ldc)
 
void plasma_omp_zunmqr (plasma_enum_t side, plasma_enum_t trans, plasma_desc_t A, plasma_desc_t T, plasma_desc_t C, plasma_workspace_t work, plasma_sequence_t *sequence, plasma_request_t *request)
 

Detailed Description

Function Documentation

int plasma_cunmqr ( plasma_enum_t  side,
plasma_enum_t  trans,
int  m,
int  n,
int  k,
plasma_complex32_t *  pA,
int  lda,
plasma_desc_t  T,
plasma_complex32_t *  pC,
int  ldc 
)

Overwrites the general complex m-by-n matrix C with

                           side = PlasmaLeft     side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = Plasma_ConjTrans Q^H * C C * Q^H

where Q is an orthogonal (or unitary) matrix defined as the product of k elementary reflectors

  Q = H(1) H(2) . . . H(k)

as returned by plasma_cgeqrf. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^H from the left;
  • PlasmaRight: apply Q or Q^H from the right.
[in]transIntended usage:
  • PlasmaNoTrans: No transpose, apply Q;
  • Plasma_ConjTrans: Transpose, apply Q^H.
[in]mThe number of rows of the matrix C. m >= 0.
[in]nThe number of columns of the matrix C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the QR factorization of the original matrix A as returned by plasma_cgeqrf.
[in]ldaThe leading dimension of the array A. If side == PlasmaLeft, lda >= max(1,m). If side == PlasmaRight, lda >= max(1,n).
[in]TAuxiliary factorization data, computed by plasma_cgeqrf.
[in,out]pCOn entry, pointer to the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^H*C, C*Q, or C*Q^H.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value
See also
plasma_omp_cunmqr
plasma_cunmqr
plasma_dormqr
plasma_sormqr
plasma_cgeqrf
void plasma_omp_cunmqr ( plasma_enum_t  side,
plasma_enum_t  trans,
plasma_desc_t  A,
plasma_desc_t  T,
plasma_desc_t  C,
plasma_workspace_t  work,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Non-blocking tile version of plasma_cunmqr(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^H from the left;
  • PlasmaRight: apply Q or Q^H from the right.
[in]transIntended usage:
  • PlasmaNoTrans: apply Q;
  • Plasma_ConjTrans: apply Q^H.
[in]ADescriptor of matrix A stored in the tile layout. Details of the QR factorization of the original matrix A as returned by plasma_cgeqrf.
[in]TDescriptor of matrix T. Auxiliary factorization data, computed by plasma_cgeqrf.
[in,out]CDescriptor of matrix C. On entry, the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^H*C, C*Q, or C*Q^H.
[in]workWorkspace for the auxiliary arrays needed by some coreblas kernels. For multiplication by Q contains preallocated space for work arrays. Allocated by the plasma_workspace_create function.
[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_cunmqr
plasma_omp_cunmqr
plasma_omp_dormqr
plasma_omp_sormqr
plasma_omp_cgeqrf
int plasma_dormqr ( plasma_enum_t  side,
plasma_enum_t  trans,
int  m,
int  n,
int  k,
double *  pA,
int  lda,
plasma_desc_t  T,
double *  pC,
int  ldc 
)

Overwrites the general complex m-by-n matrix C with

                           side = PlasmaLeft     side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = PlasmaTrans Q^T * C C * Q^T

where Q is an orthogonal (or orthogonal) matrix defined as the product of k elementary reflectors

  Q = H(1) H(2) . . . H(k)

as returned by plasma_dgeqrf. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^T from the left;
  • PlasmaRight: apply Q or Q^T from the right.
[in]transIntended usage:
  • PlasmaNoTrans: No transpose, apply Q;
  • PlasmaTrans: Transpose, apply Q^T.
[in]mThe number of rows of the matrix C. m >= 0.
[in]nThe number of columns of the matrix C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the QR factorization of the original matrix A as returned by plasma_dgeqrf.
[in]ldaThe leading dimension of the array A. If side == PlasmaLeft, lda >= max(1,m). If side == PlasmaRight, lda >= max(1,n).
[in]TAuxiliary factorization data, computed by plasma_dgeqrf.
[in,out]pCOn entry, pointer to the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^T*C, C*Q, or C*Q^T.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value
See also
plasma_omp_dormqr
plasma_cunmqr
plasma_dormqr
plasma_sormqr
plasma_dgeqrf
void plasma_omp_dormqr ( plasma_enum_t  side,
plasma_enum_t  trans,
plasma_desc_t  A,
plasma_desc_t  T,
plasma_desc_t  C,
plasma_workspace_t  work,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Non-blocking tile version of plasma_dormqr(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^T from the left;
  • PlasmaRight: apply Q or Q^T from the right.
[in]transIntended usage:
  • PlasmaNoTrans: apply Q;
  • PlasmaTrans: apply Q^T.
[in]ADescriptor of matrix A stored in the tile layout. Details of the QR factorization of the original matrix A as returned by plasma_dgeqrf.
[in]TDescriptor of matrix T. Auxiliary factorization data, computed by plasma_dgeqrf.
[in,out]CDescriptor of matrix C. On entry, the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^T*C, C*Q, or C*Q^T.
[in]workWorkspace for the auxiliary arrays needed by some coreblas kernels. For multiplication by Q contains preallocated space for work arrays. Allocated by the plasma_workspace_create function.
[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_dormqr
plasma_omp_cunmqr
plasma_omp_dormqr
plasma_omp_sormqr
plasma_omp_dgeqrf
int plasma_sormqr ( plasma_enum_t  side,
plasma_enum_t  trans,
int  m,
int  n,
int  k,
float *  pA,
int  lda,
plasma_desc_t  T,
float *  pC,
int  ldc 
)

Overwrites the general complex m-by-n matrix C with

                           side = PlasmaLeft     side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = PlasmaTrans Q^T * C C * Q^T

where Q is an orthogonal (or orthogonal) matrix defined as the product of k elementary reflectors

  Q = H(1) H(2) . . . H(k)

as returned by plasma_sgeqrf. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^T from the left;
  • PlasmaRight: apply Q or Q^T from the right.
[in]transIntended usage:
  • PlasmaNoTrans: No transpose, apply Q;
  • PlasmaTrans: Transpose, apply Q^T.
[in]mThe number of rows of the matrix C. m >= 0.
[in]nThe number of columns of the matrix C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the QR factorization of the original matrix A as returned by plasma_sgeqrf.
[in]ldaThe leading dimension of the array A. If side == PlasmaLeft, lda >= max(1,m). If side == PlasmaRight, lda >= max(1,n).
[in]TAuxiliary factorization data, computed by plasma_sgeqrf.
[in,out]pCOn entry, pointer to the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^T*C, C*Q, or C*Q^T.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value
See also
plasma_omp_sormqr
plasma_cunmqr
plasma_dormqr
plasma_sormqr
plasma_sgeqrf
void plasma_omp_sormqr ( plasma_enum_t  side,
plasma_enum_t  trans,
plasma_desc_t  A,
plasma_desc_t  T,
plasma_desc_t  C,
plasma_workspace_t  work,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Non-blocking tile version of plasma_sormqr(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^T from the left;
  • PlasmaRight: apply Q or Q^T from the right.
[in]transIntended usage:
  • PlasmaNoTrans: apply Q;
  • PlasmaTrans: apply Q^T.
[in]ADescriptor of matrix A stored in the tile layout. Details of the QR factorization of the original matrix A as returned by plasma_sgeqrf.
[in]TDescriptor of matrix T. Auxiliary factorization data, computed by plasma_sgeqrf.
[in,out]CDescriptor of matrix C. On entry, the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^T*C, C*Q, or C*Q^T.
[in]workWorkspace for the auxiliary arrays needed by some coreblas kernels. For multiplication by Q contains preallocated space for work arrays. Allocated by the plasma_workspace_create function.
[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_sormqr
plasma_omp_cunmqr
plasma_omp_dormqr
plasma_omp_sormqr
plasma_omp_sgeqrf
int plasma_zunmqr ( plasma_enum_t  side,
plasma_enum_t  trans,
int  m,
int  n,
int  k,
plasma_complex64_t *  pA,
int  lda,
plasma_desc_t  T,
plasma_complex64_t *  pC,
int  ldc 
)

Overwrites the general complex m-by-n matrix C with

                           side = PlasmaLeft     side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = Plasma_ConjTrans Q^H * C C * Q^H

where Q is an orthogonal (or unitary) matrix defined as the product of k elementary reflectors

  Q = H(1) H(2) . . . H(k)

as returned by plasma_zgeqrf. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^H from the left;
  • PlasmaRight: apply Q or Q^H from the right.
[in]transIntended usage:
  • PlasmaNoTrans: No transpose, apply Q;
  • Plasma_ConjTrans: Transpose, apply Q^H.
[in]mThe number of rows of the matrix C. m >= 0.
[in]nThe number of columns of the matrix C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the QR factorization of the original matrix A as returned by plasma_zgeqrf.
[in]ldaThe leading dimension of the array A. If side == PlasmaLeft, lda >= max(1,m). If side == PlasmaRight, lda >= max(1,n).
[in]TAuxiliary factorization data, computed by plasma_zgeqrf.
[in,out]pCOn entry, pointer to the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^H*C, C*Q, or C*Q^H.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value
See also
plasma_omp_zunmqr
plasma_cunmqr
plasma_dormqr
plasma_sormqr
plasma_zgeqrf
void plasma_omp_zunmqr ( plasma_enum_t  side,
plasma_enum_t  trans,
plasma_desc_t  A,
plasma_desc_t  T,
plasma_desc_t  C,
plasma_workspace_t  work,
plasma_sequence_t *  sequence,
plasma_request_t *  request 
)

Non-blocking tile version of plasma_zunmqr(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sideIntended usage:
  • PlasmaLeft: apply Q or Q^H from the left;
  • PlasmaRight: apply Q or Q^H from the right.
[in]transIntended usage:
  • PlasmaNoTrans: apply Q;
  • Plasma_ConjTrans: apply Q^H.
[in]ADescriptor of matrix A stored in the tile layout. Details of the QR factorization of the original matrix A as returned by plasma_zgeqrf.
[in]TDescriptor of matrix T. Auxiliary factorization data, computed by plasma_zgeqrf.
[in,out]CDescriptor of matrix C. On entry, the m-by-n matrix C. On exit, C is overwritten by Q*C, Q^H*C, C*Q, or C*Q^H.
[in]workWorkspace for the auxiliary arrays needed by some coreblas kernels. For multiplication by Q contains preallocated space for work arrays. Allocated by the plasma_workspace_create function.
[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_zunmqr
plasma_omp_cunmqr
plasma_omp_dormqr
plasma_omp_sormqr
plasma_omp_zgeqrf