muSOLVER API 参考
目录
- File musolverDn.h
- File musolverMg.h
- File musolverRf.h
- File musolverSp.h
- File musolver.h
- File musolver_common.h
File musolverDn.h
Location: musolverDn.h
musolverDn.h provides dense Lapack functionality for musa_toolkit platform.
Includes
Included by
Function musolverDnSorgqr
musolverStatus_t MUSOLVERAPI musolverDnSorgqr(musolverDnHandle_t handle, int m, int n, int k, float *A, int lda, float *tau, float *work, int lwork, int *info)
ORGQR generates an m-by-n Matrix Q with orthonormal columns.
(This is the blocked version of the algorithm).
The matrix Q is defined as the first n columns of the product of k Householder reflectors of order m
formula {"type":"element","name":"formula","attributes":{"id":"6"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k\n \\]"}]}
The Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} and scalars formula {"type":"element","name":"formula","attributes":{"id":"9"},"children":[{"type":"text","text":"$\\text{ipiv}[i]$"}]}, as returned by GEQRF.
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of the matrix Q. - n: int. 0 <= n <= m.
The number of columns of the matrix Q. - k: int. 0 <= k <= n.
The number of Householder reflectors. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the matrix A as returned by GEQRF, with the Householder vectors in the first k columns. On exit, the computed matrix Q. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension at least k.
The Householder scalars as returned by GEQRF.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- float * A
- int lda
- float * tau
- float * work
- int lwork
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDorgqr
musolverStatus_t MUSOLVERAPI musolverDnDorgqr(musolverDnHandle_t handle, int m, int n, int k, double *A, int lda, double *tau, double *work, int lwork, int *info)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- double * A
- int lda
- double * tau
- double * work
- int lwork
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCungqr
musolverStatus_t MUSOLVERAPI musolverDnCungqr(musolverDnHandle_t handle, int m, int n, int k, muComplex *A, int lda, muComplex *tau, muComplex *work, int lwork, int *info)
UNGQR generates an m-by-n complex Matrix Q with orthonormal columns.
(This is the blocked version of the algorithm).
The matrix Q is defined as the first n columns of the product of k Householder reflectors of order m
formula {"type":"element","name":"formula","attributes":{"id":"6"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k\n \\]"}]}
Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} and scalars formula {"type":"element","name":"formula","attributes":{"id":"9"},"children":[{"type":"text","text":"$\\text{ipiv}[i]$"}]}, as returned by GEQRF.
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of the matrix Q. - n: int. 0 <= n <= m.
The number of columns of the matrix Q. - k: int. 0 <= k <= n.
The number of Householder reflectors. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the matrix A as returned by GEQRF, with the Householder vectors in the first k columns. On exit, the computed matrix Q. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension at least k.
The Householder scalars as returned by GEQRF.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- muComplex * A
- int lda
- muComplex * tau
- muComplex * work
- int lwork
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZungqr
musolverStatus_t MUSOLVERAPI musolverDnZungqr(musolverDnHandle_t handle, int m, int n, int k, muDoubleComplex *A, int lda, muDoubleComplex *tau, muDoubleComplex *work, int lwork, int *info)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- muDoubleComplex * A
- int lda
- muDoubleComplex * tau
- muDoubleComplex * work
- int lwork
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSorgqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnSorgqr_bufferSize(musolverDnHandle_t handle, int m, int n, int k, const float *A, int lda, const float *tau, int *lwork)
get buffer size to generate orthogonal matrix Q.
{@
This function computes the required workspace size for ORGQR operation.
Parameters:
- handle: musolverDnHandle_t.
- m: int. The number of rows of the matrix A.
- n: int. The number of columns of the matrix A.
- A: pointer to type. Array on the GPU containing the matrix A.
- lda: int. The leading dimension of A.
- lwork: pointer to int. Returns the required workspace size.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- const float * A
- int lda
- const float * tau
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDorgqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnDorgqr_bufferSize(musolverDnHandle_t handle, int m, int n, int k, const double *A, int lda, const double *tau, int *lwork)
get buffer size to generate orthogonal matrix Q.
{@
This function computes the required workspace size for ORGQR operation.
Parameters:
- handle: musolverDnHandle_t.
- m: int. The number of rows of the matrix A.
- n: int. The number of columns of the matrix A.
- A: pointer to type. Array on the GPU containing the matrix A.
- lda: int. The leading dimension of A.
- lwork: pointer to int. Returns the required workspace size.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- const double * A
- int lda
- const double * tau
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCungqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnCungqr_bufferSize(musolverDnHandle_t handle, int m, int n, int k, const muComplex *A, int lda, const muComplex *tau, int *lwork)
get buffer size to generate unitary matrix Q.
{@
This function computes the required workspace size for UNGQR operation.
Parameters:
- handle: musolverDnHandle_t.
- m: int. The number of rows of the matrix A.
- n: int. The number of columns of the matrix A.
- A: pointer to type. Array on the GPU containing the matrix A.
- lda: int. The leading dimension of A.
- lwork: pointer to int. Returns the required workspace size.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- const muComplex * A
- int lda
- const muComplex * tau
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZungqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnZungqr_bufferSize(musolverDnHandle_t handle, int m, int n, int k, const muDoubleComplex *A, int lda, const muDoubleComplex *tau, int *lwork)
get buffer size to generate unitary matrix Q.
{@
This function computes the required workspace size for UNGQR operation.
Parameters:
- handle: musolverDnHandle_t.
- m: int. The number of rows of the matrix A.
- n: int. The number of columns of the matrix A.
- A: pointer to type. Array on the GPU containing the matrix A.
- lda: int. The leading dimension of A.
- lwork: pointer to int. Returns the required workspace size.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- int k
- const muDoubleComplex * A
- int lda
- const muDoubleComplex * tau
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSorgbr
musolverStatus_t MUSOLVERAPI musolverDnSorgbr(musolverDnHandle_t handle, const mublasStorev storev, const int m, const int n, const int k, float *A, const int lda, float *ipiv)
ORGBR generates an m-by-n Matrix Q with orthonormal rows or columns.
If storev is column-wise, then the matrix Q has orthonormal columns. If m >= k, Q is defined as the first n columns of the product of k Householder reflectors of order m
formula {"type":"element","name":"formula","attributes":{"id":"6"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k\n \\]"}]}
If m < k, Q is defined as the product of Householder reflectors of order m
formula {"type":"element","name":"formula","attributes":{"id":"10"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_{m-1}\n \\]"}]}
On the other hand, if storev is row-wise, then the matrix Q has orthonormal rows. If n > k, Q is defined as the first m rows of the product of k Householder reflectors of order n
formula {"type":"element","name":"formula","attributes":{"id":"11"},"children":[{"type":"text","text":"\\[\n Q = H_kH_{k-1}\\cdots H_1\n \\]"}]}
If n <= k, Q is defined as the product of Householder reflectors of order n
formula {"type":"element","name":"formula","attributes":{"id":"12"},"children":[{"type":"text","text":"\\[\n Q = H_{n-1}H_{n-2}\\cdots H_1\n \\]"}]}
The Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} and scalars formula {"type":"element","name":"formula","attributes":{"id":"9"},"children":[{"type":"text","text":"$\\text{ipiv}[i]$"}]}, as returned by GEBRD in its arguments A and tauq or taup.
Parameters:
- handle: musolverDnHandle_t .
- storev: mublasStorev.
Specifies whether to work column-wise or row-wise. - m: int. m >= 0.
The number of rows of the matrix Q. If row-wise, then min(n,k) <= m <= n. - n: int. n >= 0.
The number of columns of the matrix Q. If column-wise, then min(m,k) <= n <= m. - k: int. k >= 0.
The number of columns (if storev is column-wise) or rows (if row-wise) of the original matrix reduced by GEBRD. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the Householder vectors as returned by GEBRD. On exit, the computed matrix Q. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension min(m,k) if column-wise, or min(n,k) if row-wise.
The Householder scalars as returned by GEBRD.
Parameters:
- musolverDnHandle_t handle
- const mublasStorev storev
- const int m
- const int n
- const int k
- float * A
- const int lda
- float * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDorgbr
musolverStatus_t MUSOLVERAPI musolverDnDorgbr(musolverDnHandle_t handle, const mublasStorev storev, const int m, const int n, const int k, double *A, const int lda, double *ipiv)
Parameters:
- musolverDnHandle_t handle
- const mublasStorev storev
- const int m
- const int n
- const int k
- double * A
- const int lda
- double * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCungbr
musolverStatus_t MUSOLVERAPI musolverDnCungbr(musolverDnHandle_t handle, const mublasStorev storev, const int m, const int n, const int k, muComplex *A, const int lda, muComplex *ipiv)
UNGBR generates an m-by-n complex Matrix Q with orthonormal rows or columns.
If storev is column-wise, then the matrix Q has orthonormal columns. If m >= k, Q is defined as the first n columns of the product of k Householder reflectors of order m
formula {"type":"element","name":"formula","attributes":{"id":"6"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k\n \\]"}]}
If m < k, Q is defined as the product of Householder reflectors of order m
formula {"type":"element","name":"formula","attributes":{"id":"10"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_{m-1}\n \\]"}]}
On the other hand, if storev is row-wise, then the matrix Q has orthonormal rows. If n > k, Q is defined as the first m rows of the product of k Householder reflectors of order n
formula {"type":"element","name":"formula","attributes":{"id":"11"},"children":[{"type":"text","text":"\\[\n Q = H_kH_{k-1}\\cdots H_1\n \\]"}]}
If n <= k, Q is defined as the product of Householder reflectors of order n
formula {"type":"element","name":"formula","attributes":{"id":"12"},"children":[{"type":"text","text":"\\[\n Q = H_{n-1}H_{n-2}\\cdots H_1\n \\]"}]}
The Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} and scalars formula {"type":"element","name":"formula","attributes":{"id":"9"},"children":[{"type":"text","text":"$\\text{ipiv}[i]$"}]}, as returned by GEBRD in its arguments A and tauq or taup.
Parameters:
- handle: musolverDnHandle_t .
- storev: mublasStorev.
Specifies whether to work column-wise or row-wise. - m: int. m >= 0.
The number of rows of the matrix Q. If row-wise, then min(n,k) <= m <= n. - n: int. n >= 0.
The number of columns of the matrix Q. If column-wise, then min(m,k) <= n <= m. - k: int. k >= 0.
The number of columns (if storev is column-wise) or rows (if row-wise) of the original matrix reduced by GEBRD. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the Householder vectors as returned by GEBRD. On exit, the computed matrix Q. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension min(m,k) if column-wise, or min(n,k) if row-wise.
The Householder scalars as returned by GEBRD.
Parameters:
- musolverDnHandle_t handle
- const mublasStorev storev
- const int m
- const int n
- const int k
- muComplex * A
- const int lda
- muComplex * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZungbr
musolverStatus_t MUSOLVERAPI musolverDnZungbr(musolverDnHandle_t handle, const mublasStorev storev, const int m, const int n, const int k, muDoubleComplex *A, const int lda, muDoubleComplex *ipiv)
Parameters:
- musolverDnHandle_t handle
- const mublasStorev storev
- const int m
- const int n
- const int k
- muDoubleComplex * A
- const int lda
- muDoubleComplex * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSorgtr
musolverStatus_t MUSOLVERAPI musolverDnSorgtr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *ipiv)
ORGTR generates an n-by-n orthogonal Matrix Q.
Q is defined as the product of n-1 Householder reflectors of order n. If uplo indicates upper, then Q has the form
formula {"type":"element","name":"formula","attributes":{"id":"12"},"children":[{"type":"text","text":"\\[\n Q = H_{n-1}H_{n-2}\\cdots H_1\n \\]"}]}
On the other hand, if uplo indicates lower, then Q has the form
formula {"type":"element","name":"formula","attributes":{"id":"13"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_{n-1}\n \\]"}]}
The Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} and scalars formula {"type":"element","name":"formula","attributes":{"id":"9"},"children":[{"type":"text","text":"$\\text{ipiv}[i]$"}]}, as returned by SYTRD in its arguments A and tau.
Parameters:
- handle: musolverDnHandle_t .
- uplo: mublasFillMode_t .
Specifies whether the SYTRD factorization was upper or lower triangular. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used. - n: int. n >= 0.
The number of rows and columns of the matrix Q. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the Householder vectors as returned by SYTRD. On exit, the computed matrix Q. - lda: int. lda >= n.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension n-1.
The Householder scalars as returned by SYTRD.
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- float * A
- const int lda
- float * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDorgtr
musolverStatus_t MUSOLVERAPI musolverDnDorgtr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *ipiv)
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- double * A
- const int lda
- double * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCungtr
musolverStatus_t MUSOLVERAPI musolverDnCungtr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, muComplex *ipiv)
UNGTR generates an n-by-n unitary Matrix Q.
Q is defined as the product of n-1 Householder reflectors of order n. If uplo indicates upper, then Q has the form
formula {"type":"element","name":"formula","attributes":{"id":"12"},"children":[{"type":"text","text":"\\[\n Q = H_{n-1}H_{n-2}\\cdots H_1\n \\]"}]}
On the other hand, if uplo indicates lower, then Q has the form
formula {"type":"element","name":"formula","attributes":{"id":"13"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_{n-1}\n \\]"}]}
The Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} and scalars formula {"type":"element","name":"formula","attributes":{"id":"9"},"children":[{"type":"text","text":"$\\text{ipiv}[i]$"}]}, as returned by HETRD in its arguments A and tau.
Parameters:
- handle: musolverDnHandle_t .
- uplo: mublasFillMode_t .
Specifies whether the HETRD factorization was upper or lower triangular. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used. - n: int. n >= 0.
The number of rows and columns of the matrix Q. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the Householder vectors as returned by HETRD. On exit, the computed matrix Q. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension n-1.
The Householder scalars as returned by HETRD.
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- muComplex * A
- const int lda
- muComplex * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZungtr
musolverStatus_t MUSOLVERAPI musolverDnZungtr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, muDoubleComplex *ipiv)
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- muDoubleComplex * A
- const int lda
- muDoubleComplex * ipiv
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSormqr
musolverStatus_t MUSOLVERAPI musolverDnSormqr(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, float *A, int lda, float *tau, float *C, int ldc, float *work, int lwork, int *devInfo)
ORMQR multiplies a matrix Q with orthonormal columns by a general m-by-n matrix C.
(This is the blocked version of the algorithm).
The matrix Q is applied in one of the following forms, depending on the values of side and trans:
formula {"type":"element","name":"formula","attributes":{"id":"14"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n QC & \\: \\text{No transpose from the left,}\\\\\n Q^TC & \\: \\text{Transpose from the left,}\\\\\n CQ & \\: \\text{No transpose from the right, and}\\\\\n CQ^T & \\: \\text{Transpose from the right.}\n \\end{array}\n \\]"}]}
Q is defined as the product of k Householder reflectors
formula {"type":"element","name":"formula","attributes":{"id":"6"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k\n \\]"}]}
of order m if applying from the left, or n if applying from the right. Q is never stored, it is calculated from the Householder vectors and scalars returned by the QR factorization GEQRF.
Parameters:
- handle: musolverDnHandle_t .
- side: mublasSideMode_t.
Specifies from which side to apply Q. - trans: mublasOperation_t.
Specifies whether the matrix Q or its transpose is to be applied. - m: int. m >= 0.
Number of rows of matrix C. - n: int. n >= 0.
Number of columns of matrix C. - k: int. k >= 0; k <= m if side is left, k <= n if side is right.
The number of Householder reflectors that form Q. - A: pointer to type. Array on the GPU of size lda*k.
The Householder vectors as returned by GEQRF in the first k columns of its argument A. - lda: int. lda >= m if side is left, or lda >= n if side is right.
Leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension at least k.
The Householder scalars as returned by GEQRF. - C: pointer to type. Array on the GPU of size ldcn.
On entry, the matrix C. On exit, it is overwritten with QC, C*Q, Q'C, or CQ'. - ldc: int. ldc >= m.
Leading dimension of C.
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- float * A
- int lda
- float * tau
- float * C
- int ldc
- float * work
- int lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDormqr
musolverStatus_t MUSOLVERAPI musolverDnDormqr(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, double *A, int lda, double *tau, double *C, int ldc, double *work, int lwork, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- double * A
- int lda
- double * tau
- double * C
- int ldc
- double * work
- int lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSormqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnSormqr_bufferSize(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, const float *A, int lda, const float *tau, const float *C, int ldc, int *lwork)
get buffer size to compute Q**Tb in solve min||Ax = b||.
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- const float * A
- int lda
- const float * tau
- const float * C
- int ldc
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDormqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnDormqr_bufferSize(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, const double *A, int lda, const double *tau, const double *C, int ldc, int *lwork)
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- const double * A
- int lda
- const double * tau
- const double * C
- int ldc
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCunmqr
musolverStatus_t MUSOLVERAPI musolverDnCunmqr(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, muComplex *A, int lda, muComplex *tau, muComplex *C, int ldc, muComplex *work, int lwork, int *devInfo)
UNMQR multiplies a complex matrix Q with orthonormal columns by a general m-by-n matrix C.
(This is the blocked version of the algorithm).
The matrix Q is applied in one of the following forms, depending on the values of side and trans:
formula {"type":"element","name":"formula","attributes":{"id":"15"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n QC & \\: \\text{No transpose from the left,}\\\\\n Q^HC & \\: \\text{Conjugate transpose from the left,}\\\\\n CQ & \\: \\text{No transpose from the right, and}\\\\\n CQ^H & \\: \\text{Conjugate transpose from the right.}\n \\end{array}\n \\]"}]}
Q is defined as the product of k Householder reflectors
formula {"type":"element","name":"formula","attributes":{"id":"6"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k\n \\]"}]}
of order m if applying from the left, or n if applying from the right. Q is never stored, it is calculated from the Householder vectors and scalars returned by the QR factorization GEQRF.
Parameters:
- handle: musolverDnHandle_t .
- side: mublasSideMode_t.
Specifies from which side to apply Q. - trans: mublasOperation_t.
Specifies whether the matrix Q or its conjugate transpose is to be applied. - m: int. m >= 0.
Number of rows of matrix C. - n: int. n >= 0.
Number of columns of matrix C. - k: int. k >= 0; k <= m if side is left, k <= n if side is right.
The number of Householder reflectors that form Q. - A: pointer to type. Array on the GPU of size lda*k.
The Householder vectors as returned by GEQRF in the first k columns of its argument A. - lda: int. lda >= m if side is left, or lda >= n if side is right.
Leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension at least k.
The Householder scalars as returned by GEQRF. - C: pointer to type. Array on the GPU of size ldcn.
On entry, the matrix C. On exit, it is overwritten with QC, C*Q, Q'C, or CQ'. - ldc: int. ldc >= m.
Leading dimension of C.
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- muComplex * A
- int lda
- muComplex * tau
- muComplex * C
- int ldc
- muComplex * work
- int lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZunmqr
musolverStatus_t MUSOLVERAPI musolverDnZunmqr(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, muDoubleComplex *A, int lda, muDoubleComplex *tau, muDoubleComplex *C, int ldc, muDoubleComplex *work, int lwork, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- muDoubleComplex * A
- int lda
- muDoubleComplex * tau
- muDoubleComplex * C
- int ldc
- muDoubleComplex * work
- int lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCunmqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnCunmqr_bufferSize(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, const muComplex *A, int lda, const muComplex *tau, const muComplex *C, int ldc, int *lwork)
get buffer size to compute Q**Tb in solve min||Ax = b||.
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- const muComplex * A
- int lda
- const muComplex * tau
- const muComplex * C
- int ldc
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZunmqr_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnZunmqr_bufferSize(musolverDnHandle_t handle, mublasSideMode_t side, mublasOperation_t trans, int m, int n, int k, const muDoubleComplex *A, int lda, const muDoubleComplex *tau, const muDoubleComplex *C, int ldc, int *lwork)
Parameters:
- musolverDnHandle_t handle
- mublasSideMode_t side
- mublasOperation_t trans
- int m
- int n
- int k
- const muDoubleComplex * A
- int lda
- const muDoubleComplex * tau
- const muDoubleComplex * C
- int ldc
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSormtr
musolverStatus_t MUSOLVERAPI musolverDnSormtr(musolverDnHandle_t handle, const mublasSideMode_t side, const mublasFillMode_t uplo, const mublasOperation_t trans, const int m, const int n, float *A, const int lda, float *ipiv, float *C, const int ldc)
ORMTR multiplies an orthogonal matrix Q by a general m-by-n matrix C.
The matrix Q is applied in one of the following forms, depending on the values of side and trans:
formula {"type":"element","name":"formula","attributes":{"id":"14"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n QC & \\: \\text{No transpose from the left,}\\\\\n Q^TC & \\: \\text{Transpose from the left,}\\\\\n CQ & \\: \\text{No transpose from the right, and}\\\\\n CQ^T & \\: \\text{Transpose from the right.}\n \\end{array}\n \\]"}]}
The order q of the orthogonal matrix Q is q = m if applying from the left, or q = n if applying from the right.
Q is defined as a product of q-1 Householder reflectors. If uplo indicates upper, then Q has the form
formula {"type":"element","name":"formula","attributes":{"id":"16"},"children":[{"type":"text","text":"\\[\n Q = H_{q-1}H_{q-2}\\cdots H_1.\n \\]"}]}
On the other hand, if uplo indicates lower, then Q has the form
formula {"type":"element","name":"formula","attributes":{"id":"17"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_{q-1}\n \\]"}]}
The Householder matrices formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} are never stored, they are computed from its corresponding Householder vectors and scalars as returned by SYTRD in its arguments A and tau.
Parameters:
- handle: musolverDnHandle_t .
- side: mublasSideMode_t.
Specifies from which side to apply Q. - uplo: mublasFillMode_t .
Specifies whether the SYTRD factorization was upper or lower triangular. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used. - trans: mublasOperation_t.
Specifies whether the matrix Q or its transpose is to be applied. - m: int. m >= 0.
Number of rows of matrix C. - n: int. n >= 0.
Number of columns of matrix C. - A: pointer to type. Array on the GPU of size lda*q.
On entry, the Householder vectors as returned by SYTRD. - lda: int. lda >= q.
Leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension at least q-1.
The Householder scalars as returned by SYTRD. - C: pointer to type. Array on the GPU of size ldcn.
On entry, the matrix C. On exit, it is overwritten with QC, C*Q, Q'C, or CQ'. - ldc: int. ldc >= m.
Leading dimension of C.
Parameters:
- musolverDnHandle_t handle
- const mublasSideMode_t side
- const mublasFillMode_t uplo
- const mublasOperation_t trans
- const int m
- const int n
- float * A
- const int lda
- float * ipiv
- float * C
- const int ldc
Return type: musolverStatus_t MUSOLVERAPI