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

Functions

int plasma_cunmlq (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_cunmlq (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_dormlq (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_dormlq (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_sormlq (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_sormlq (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_zunmlq (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_zunmlq (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_cunmlq ( 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_cgelqf. 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: apply Q;
  • Plasma_ConjTrans: 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 rows of elementary tile reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the LQ factorization of the original matrix A as returned by plasma_cgelqf.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TAuxiliary factorization data, computed by plasma_cgelqf.
[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_cunmlq
plasma_cunmlq
plasma_dormlq
plasma_sormlq
plasma_cgelqf
void plasma_omp_cunmlq ( 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_cunmlq(). 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_cunmlq
plasma_omp_cunmlq
plasma_omp_dormlq
plasma_omp_sormlq
plasma_omp_cgelqf
int plasma_dormlq ( 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_dgelqf. 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: apply Q;
  • PlasmaTrans: 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 rows of elementary tile reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the LQ factorization of the original matrix A as returned by plasma_dgelqf.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TAuxiliary factorization data, computed by plasma_dgelqf.
[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_dormlq
plasma_cunmlq
plasma_dormlq
plasma_sormlq
plasma_dgelqf
void plasma_omp_dormlq ( 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_dormlq(). 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_dormlq
plasma_omp_cunmlq
plasma_omp_dormlq
plasma_omp_sormlq
plasma_omp_dgelqf
int plasma_sormlq ( 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_sgelqf. 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: apply Q;
  • PlasmaTrans: 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 rows of elementary tile reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the LQ factorization of the original matrix A as returned by plasma_sgelqf.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TAuxiliary factorization data, computed by plasma_sgelqf.
[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_sormlq
plasma_cunmlq
plasma_dormlq
plasma_sormlq
plasma_sgelqf
void plasma_omp_sormlq ( 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_sormlq(). 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_sormlq
plasma_omp_cunmlq
plasma_omp_dormlq
plasma_omp_sormlq
plasma_omp_sgelqf
int plasma_zunmlq ( 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_zgelqf. 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: apply Q;
  • Plasma_ConjTrans: 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 rows of elementary tile reflectors whose product defines the matrix Q. If side == PlasmaLeft, m >= k >= 0. If side == PlasmaRight, n >= k >= 0.
[in]pADetails of the LQ factorization of the original matrix A as returned by plasma_zgelqf.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TAuxiliary factorization data, computed by plasma_zgelqf.
[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_zunmlq
plasma_cunmlq
plasma_dormlq
plasma_sormlq
plasma_zgelqf
void plasma_omp_zunmlq ( 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_zunmlq(). 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_zunmlq
plasma_omp_cunmlq
plasma_omp_dormlq
plasma_omp_sormlq
plasma_omp_zgelqf