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
Function musolverDnDormtr
musolverStatus_t MUSOLVERAPI musolverDnDormtr(musolverDnHandle_t handle, const mublasSideMode_t side, const mublasFillMode_t uplo, const mublasOperation_t trans, const int m, const int n, double *A, const int lda, double *ipiv, double *C, const int ldc)
Parameters:
- musolverDnHandle_t handle
- const mublasSideMode_t side
- const mublasFillMode_t uplo
- const mublasOperation_t trans
- const int m
- const int n
- double * A
- const int lda
- double * ipiv
- double * C
- const int ldc
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCunmtr
musolverStatus_t MUSOLVERAPI musolverDnCunmtr(musolverDnHandle_t handle, const mublasSideMode_t side, const mublasFillMode_t uplo, const mublasOperation_t trans, const int m, const int n, muComplex *A, const int lda, muComplex *ipiv, muComplex *C, const int ldc)
UNMTR multiplies a unitary 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":"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 \\]"}]}
The order q of the unitary 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 HETRD 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 HETRD 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 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. - A: pointer to type. Array on the GPU of size lda*q.
On entry, the Householder vectors as returned by HETRD. - 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 HETRD. - 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
- muComplex * A
- const int lda
- muComplex * ipiv
- muComplex * C
- const int ldc
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZunmtr
musolverStatus_t MUSOLVERAPI musolverDnZunmtr(musolverDnHandle_t handle, const mublasSideMode_t side, const mublasFillMode_t uplo, const mublasOperation_t trans, const int m, const int n, muDoubleComplex *A, const int lda, muDoubleComplex *ipiv, muDoubleComplex *C, const int ldc)
Parameters:
- musolverDnHandle_t handle
- const mublasSideMode_t side
- const mublasFillMode_t uplo
- const mublasOperation_t trans
- const int m
- const int n
- muDoubleComplex * A
- const int lda
- muDoubleComplex * ipiv
- muDoubleComplex * C
- const int ldc
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSbdsqr
musolverStatus_t MUSOLVERAPI musolverDnSbdsqr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, const int nv, const int nu, const int nc, float *D, float *E, float *V, const int ldv, float *U, const int ldu, float *C, const int ldc, int *info)
BDSQR computes the singular value decomposition (SVD) of an n-by-n bidiagonal matrix B, using the implicit QR algorithm.
The SVD of B has the form:
formula {"type":"element","name":"formula","attributes":{"id":"18"},"children":[{"type":"text","text":"\\[\n B = QSP'\n \\]"}]}
where S is the n-by-n diagonal matrix of singular values of B, the columns of Q are the left singular vectors of B, and the columns of P are its right singular vectors.
The computation of the singular vectors is optional; this function accepts input matrices U (of size nu-by-n) and V (of size n-by-nv) that are overwritten with formula {"type":"element","name":"formula","attributes":{"id":"19"},"children":[{"type":"text","text":"$UQ$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"20"},"children":[{"type":"text","text":"$P'V$"}]}. If nu = 0 no left vectors are computed; if nv = 0 no right vectors are computed.
Optionally, this function can also compute formula {"type":"element","name":"formula","attributes":{"id":"21"},"children":[{"type":"text","text":"$Q'C$"}]} for a given n-by-nc input matrix C.
Parameters:
- handle: musolverDnHandle_t .
- uplo: mublasFillMode_t .
Specifies whether B is upper or lower bidiagonal. - n: int. n >= 0.
The number of rows and columns of matrix B. - nv: int. nv >= 0.
The number of columns of matrix V. - nu: int. nu >= 0.
The number of rows of matrix U. - nc: int. nu >= 0.
The number of columns of matrix C. - D: pointer to real type. Array on the GPU of dimension n.
On entry, the diagonal elements of B. On exit, if info = 0, the singular values of B in decreasing order; if info > 0, the diagonal elements of a bidiagonal matrix orthogonally equivalent to B. - E: pointer to real type. Array on the GPU of dimension n-1.
On entry, the off-diagonal elements of B. On exit, if info > 0, the off-diagonal elements of a bidiagonal matrix orthogonally equivalent to B (if info = 0 this matrix converges to zero). - V: pointer to type. Array on the GPU of dimension ldv*nv.
On entry, the matrix V. On exit, it is overwritten with P'*V. (Not referenced if nv = 0). - ldv: int. ldv >= n if nv > 0, or ldv >=1 if nv = 0.
The leading dimension of V. - U: pointer to type. Array on the GPU of dimension ldun.
On entry, the matrix U. On exit, it is overwritten with UQ. (Not referenced if nu = 0). - ldu: int. ldu >= nu.
The leading dimension of U. - C: pointer to type. Array on the GPU of dimension ldc*nc.
On entry, the matrix C. On exit, it is overwritten with Q'*C. (Not referenced if nc = 0). - ldc: int. ldc >= n if nc > 0, or ldc >=1 if nc = 0.
The leading dimension of C. - info: pointer to a int on the GPU.
If info = 0, successful exit. If info = i > 0, i elements of E have not converged to zero.
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- const int nv
- const int nu
- const int nc
- float * D
- float * E
- float * V
- const int ldv
- float * U
- const int ldu
- float * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDbdsqr
musolverStatus_t MUSOLVERAPI musolverDnDbdsqr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, const int nv, const int nu, const int nc, double *D, double *E, double *V, const int ldv, double *U, const int ldu, double *C, const int ldc, int *info)
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- const int nv
- const int nu
- const int nc
- double * D
- double * E
- double * V
- const int ldv
- double * U
- const int ldu
- double * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCbdsqr
musolverStatus_t MUSOLVERAPI musolverDnCbdsqr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, const int nv, const int nu, const int nc, float *D, float *E, muComplex *V, const int ldv, muComplex *U, const int ldu, muComplex *C, const int ldc, int *info)
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- const int nv
- const int nu
- const int nc
- float * D
- float * E
- muComplex * V
- const int ldv
- muComplex * U
- const int ldu
- muComplex * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZbdsqr
musolverStatus_t MUSOLVERAPI musolverDnZbdsqr(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, const int nv, const int nu, const int nc, double *D, double *E, muDoubleComplex *V, const int ldv, muDoubleComplex *U, const int ldu, muDoubleComplex *C, const int ldc, int *info)
Parameters:
- musolverDnHandle_t handle
- const mublasFillMode_t uplo
- const int n
- const int nv
- const int nu
- const int nc
- double * D
- double * E
- muDoubleComplex * V
- const int ldv
- muDoubleComplex * U
- const int ldu
- muDoubleComplex * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSstedc
musolverStatus_t MUSOLVERAPI musolverDnSstedc(musolverDnHandle_t handle, const mublasEvect evect, const int n, float *D, float *E, float *C, const int ldc, int *info)
STEDC computes the eigenvalues and (optionally) eigenvectors of a symmetric tridiagonal matrix.
This function uses the divide and conquer method to compute the eigenvectors. The eigenvalues are returned in increasing order.
The matrix is not represented explicitly, but rather as the array of diagonal elements D and the array of symmetric off-diagonal elements E. When D and E correspond to the tridiagonal form of a full symmetric/Hermitian matrix, as returned by, e.g., SYTRD or HETRD, the eigenvectors of the original matrix can also be computed, depending on the value of evect.
Parameters:
- handle: musolverDnHandle_t .
- evect: mublasEvect.
Specifies how the eigenvectors are computed. - n: int. n >= 0.
The number of rows and columns of the tridiagonal matrix. - D: pointer to real type. Array on the GPU of dimension n.
On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in increasing order. - E: pointer to real type. Array on the GPU of dimension n-1.
On entry, the off-diagonal elements of the tridiagonal matrix. On exit, if info = 0, the values of this array are destroyed. - C: pointer to type. Array on the GPU of dimension ldc*n.
On entry, if evect is original, the orthogonal/unitary matrix used for the reduction to tridiagonal form as returned by, e.g., ORGTR or UNGTR. On exit, if info = 0, it is overwritten with the eigenvectors of the original symmetric/Hermitian matrix (if evect is original), or the eigenvectors of the tridiagonal matrix (if evect is tridiagonal). (Not referenced if evect is none). - ldc: int. ldc >= n if evect is original or tridiagonal.
Specifies the leading dimension of C. (Not referenced if evect is none). - info: pointer to a int on the GPU.
If info = 0, successful exit. If info = i > 0, STEDC failed to compute an eigenvalue on the sub-matrix formed by the rows and columns info/(n+1) through mod(info,n+1).
Parameters:
- musolverDnHandle_t handle
- const mublasEvect evect
- const int n
- float * D
- float * E
- float * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDstedc
musolverStatus_t MUSOLVERAPI musolverDnDstedc(musolverDnHandle_t handle, const mublasEvect evect, const int n, double *D, double *E, double *C, const int ldc, int *info)
Parameters:
- musolverDnHandle_t handle
- const mublasEvect evect
- const int n
- double * D
- double * E
- double * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCstedc
musolverStatus_t MUSOLVERAPI musolverDnCstedc(musolverDnHandle_t handle, const mublasEvect evect, const int n, float *D, float *E, muComplex *C, const int ldc, int *info)
Parameters:
- musolverDnHandle_t handle
- const mublasEvect evect
- const int n
- float * D
- float * E
- muComplex * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZstedc
musolverStatus_t MUSOLVERAPI musolverDnZstedc(musolverDnHandle_t handle, const mublasEvect evect, const int n, double *D, double *E, muDoubleComplex *C, const int ldc, int *info)
Parameters:
- musolverDnHandle_t handle
- const mublasEvect evect
- const int n
- double * D
- double * E
- muDoubleComplex * C
- const int ldc
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgetrf
musolverStatus_t MUSOLVERAPI musolverDnSgetrf(musolverDnHandle_t handle, int m, int n, float *A, int lda, float *Workspace, int *devIpiv, int *devInfo)
GETRF computes the LU factorization of a general m-by-n matrix A using partial pivoting with row interchanges.
(This is the blocked Level-3-BLAS version of the algorithm. An optimized internal implementation without muBLAS calls could be executed with mid-size matrices if optimizations are enabled (default option). For more details, see the "Tuning muSOLVER performance" section of the Library Design Guide).
The factorization has the form
formula {"type":"element","name":"formula","attributes":{"id":"22"},"children":[{"type":"text","text":"\\[\n A = PLU\n \\]"}]}
where P is a permutation matrix, L is lower triangular with unit diagonal elements (lower trapezoidal if m > n), and U is upper triangular (upper trapezoidal if m < n).
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of the matrix A. - n: int. n >= 0.
The number of columns of the matrix A. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the m-by-n matrix A to be factored. On exit, the factors L and U from the factorization. The unit diagonal elements of L are not stored. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to int. Array on the GPU of dimension min(m,n).
The vector of pivot indices. Elements of ipiv are 1-based indices. For 1 <= i <= min(m,n), the row i of the matrix was interchanged with row ipiv[i]. Matrix P of the factorization can be derived from ipiv. - info: pointer to a int on the GPU.
If info = 0, successful exit. If info = i > 0, U is singular. U[i,i] is the first zero pivot.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- float * A
- int lda
- float * Workspace
- int * devIpiv
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgetrf
musolverStatus_t MUSOLVERAPI musolverDnDgetrf(musolverDnHandle_t handle, int m, int n, double *A, int lda, double *Workspace, int *devIpiv, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- double * A
- int lda
- double * Workspace
- int * devIpiv
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgetrf
musolverStatus_t MUSOLVERAPI musolverDnCgetrf(musolverDnHandle_t handle, int m, int n, muComplex *A, int lda, muComplex *Workspace, int *devIpiv, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- muComplex * A
- int lda
- muComplex * Workspace
- int * devIpiv
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgetrf
musolverStatus_t MUSOLVERAPI musolverDnZgetrf(musolverDnHandle_t handle, int m, int n, muDoubleComplex *A, int lda, muDoubleComplex *Workspace, int *devIpiv, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- muDoubleComplex * A
- int lda
- muDoubleComplex * Workspace
- int * devIpiv
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgetrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnSgetrf_bufferSize(musolverDnHandle_t handle, int m, int n, float *A, int lda, int *Lwork)
get buffer size to compute LU factorization.
{@
This function computes the required workspace size for GETRF 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
- float * A
- int lda
- int * Lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgetrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnDgetrf_bufferSize(musolverDnHandle_t handle, int m, int n, double *A, int lda, int *Lwork)
get buffer size to compute LU factorization.
{@
This function computes the required workspace size for GETRF 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
- double * A
- int lda
- int * Lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgetrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnCgetrf_bufferSize(musolverDnHandle_t handle, int m, int n, muComplex *A, int lda, int *Lwork)
get buffer size to compute LU factorization.
{@
This function computes the required workspace size for GETRF 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
- muComplex * A
- int lda
- int * Lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgetrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnZgetrf_bufferSize(musolverDnHandle_t handle, int m, int n, muDoubleComplex *A, int lda, int *Lwork)
get buffer size to compute LU factorization.
{@
This function computes the required workspace size for GETRF 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
- muDoubleComplex * A
- int lda
- int * Lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgetrfBatched
musolverStatus_t MUSOLVERAPI musolverDnSgetrfBatched(musolverDnHandle_t handle, const int m, const int n, float *const A[], const int lda, float *buffer, int *ipiv, const int strideP, int *info, const int batch_count)
GETRF_BATCHED computes the LU factorization of a batch of general m-by-n matrices using partial pivoting with row interchanges.
(This is the blocked Level-3-BLAS version of the algorithm. An optimized internal implementation without muBLAS calls could be executed with mid-size matrices if optimizations are enabled (default option). For more details, see the "Tuning muSOLVER performance" section of the Library Design Guide).
The factorization of matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} in the batch has the form
formula {"type":"element","name":"formula","attributes":{"id":"24"},"children":[{"type":"text","text":"\\[\n A_j = P_jL_jU_j\n \\]"}]}
where formula {"type":"element","name":"formula","attributes":{"id":"25"},"children":[{"type":"text","text":"$P_j$"}]} is a permutation matrix, formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} is lower triangular with unit diagonal elements (lower trapezoidal if m > n), and formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} is upper triangular (upper trapezoidal if m < n).
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of all matrices A_j in the batch. - n: int. n >= 0.
The number of columns of all matrices A_j in the batch. - A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
On entry, the m-by-n matrices A_j to be factored. On exit, the factors L_j and U_j from the factorizations. The unit diagonal elements of L_j are not stored. - lda: int. lda >= m.
Specifies the leading dimension of matrices A_j. - ipiv: pointer to int. Array on the GPU (the size depends on the value of strideP).
Contains the vectors of pivot indices ipiv_j (corresponding to A_j). Dimension of ipiv_j is min(m,n). Elements of ipiv_j are 1-based indices. For each instance A_j in the batch and for 1 <= i <= min(m,n), the row i of the matrix A_j was interchanged with row ipiv_j[i]. Matrix P_j of the factorization can be derived from ipiv_j. - strideP: int.
Stride from the start of one vector ipiv_j to the next one ipiv_(j+1). There is no restriction for the value of strideP. Normal use case is strideP >= min(m,n). - info: pointer to int. Array of batch_count integers on the GPU.
If info[j] = 0, successful exit for factorization of A_j. If info[j] = i > 0, U_j is singular. U_j[i,i] is the first zero pivot. - batch_count: int. batch_count >= 0.
Number of matrices in the batch.
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- float *const A
- const int lda
- float * buffer
- int * ipiv
- const int strideP
- int * info
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgetrfBatched
musolverStatus_t MUSOLVERAPI musolverDnDgetrfBatched(musolverDnHandle_t handle, const int m, const int n, double *const A[], const int lda, double *buffer, int *ipiv, const int strideP, int *info, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- double *const A
- const int lda
- double * buffer
- int * ipiv
- const int strideP
- int * info
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgetrfBatched
musolverStatus_t MUSOLVERAPI musolverDnCgetrfBatched(musolverDnHandle_t handle, const int m, const int n, muComplex *const A[], const int lda, muComplex *buffer, int *ipiv, const int strideP, int *info, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muComplex *const A
- const int lda
- muComplex * buffer
- int * ipiv
- const int strideP
- int * info
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgetrfBatched
musolverStatus_t MUSOLVERAPI musolverDnZgetrfBatched(musolverDnHandle_t handle, const int m, const int n, muDoubleComplex *const A[], const int lda, muDoubleComplex *buffer, int *ipiv, const int strideP, int *info, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muDoubleComplex *const A
- const int lda
- muDoubleComplex * buffer
- int * ipiv
- const int strideP
- int * info
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgetrfBatched_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnSgetrfBatched_bufferSize(musolverDnHandle_t handle, const int m, const int n, float *const A[], const int lda, const int batch_count, int *buffersize)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- float *const A
- const int lda
- const int batch_count
- int * buffersize
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgetrfBatched_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnDgetrfBatched_bufferSize(musolverDnHandle_t handle, const int m, const int n, double *const A[], const int lda, const int batch_count, int *buffersize)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- double *const A
- const int lda
- const int batch_count
- int * buffersize
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgetrfBatched_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnCgetrfBatched_bufferSize(musolverDnHandle_t handle, const int m, const int n, muComplex *const A[], const int lda, const int batch_count, int *buffersize)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muComplex *const A
- const int lda
- const int batch_count
- int * buffersize
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgetrfBatched_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnZgetrfBatched_bufferSize(musolverDnHandle_t handle, const int m, const int n, muDoubleComplex *const A[], const int lda, const int batch_count, int *buffersize)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muDoubleComplex *const A
- const int lda
- const int batch_count
- int * buffersize
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgeqrf
musolverStatus_t MUSOLVERAPI musolverDnSgeqrf(musolverDnHandle_t handle, int m, int n, float *A, int lda, float *TAU, float *Workspace, int Lwork, int *devInfo)
GEQRF computes a QR factorization of a general m-by-n matrix A.
(This is the blocked version of the algorithm).
The factorization has the form
formula {"type":"element","name":"formula","attributes":{"id":"28"},"children":[{"type":"text","text":"\\[\n A = Q\\left[\\begin{array}{c}\n R\\\\\n 0\n \\end{array}\\right]\n \\]"}]}
where R is upper triangular (upper trapezoidal if m < n), and Q is a m-by-m orthogonal/unitary matrix represented as the product of Householder matrices
formula {"type":"element","name":"formula","attributes":{"id":"29"},"children":[{"type":"text","text":"\\[\n Q = H_1H_2\\cdots H_k, \\quad \\text{with} \\: k = \\text{min}(m,n)\n \\]"}]}
Each Householder matrix formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} is given by
formula {"type":"element","name":"formula","attributes":{"id":"30"},"children":[{"type":"text","text":"\\[\n H_i = I - \\text{ipiv}[i] \\cdot v_i v_i'\n \\]"}]}
where the first i-1 elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"31"},"children":[{"type":"text","text":"$v_i[i] = 1$"}]}.
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of the matrix A. - n: int. n >= 0.
The number of columns of the matrix A. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the m-by-n matrix to be factored. On exit, the elements on and above the diagonal contain the factor R; the elements below the diagonal are the last m - i elements of Householder vector v_i. - lda: int. lda >= m.
Specifies the leading dimension of A. - ipiv: pointer to type. Array on the GPU of dimension min(m,n).
The Householder scalars. - bufferSize: int.
Specifies the size of buffer. - devInfo: pointer to int.
Specifies status of current API.
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- float * A
- int lda
- float * TAU
- float * Workspace
- int Lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgeqrf
musolverStatus_t MUSOLVERAPI musolverDnDgeqrf(musolverDnHandle_t handle, int m, int n, double *A, int lda, double *TAU, double *Workspace, int Lwork, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- double * A
- int lda
- double * TAU
- double * Workspace
- int Lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgeqrf
musolverStatus_t MUSOLVERAPI musolverDnCgeqrf(musolverDnHandle_t handle, int m, int n, muComplex *A, int lda, muComplex *TAU, muComplex *Workspace, int Lwork, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- muComplex * A
- int lda
- muComplex * TAU
- muComplex * Workspace
- int Lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgeqrf
musolverStatus_t MUSOLVERAPI musolverDnZgeqrf(musolverDnHandle_t handle, int m, int n, muDoubleComplex *A, int lda, muDoubleComplex *TAU, muDoubleComplex *Workspace, int Lwork, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- int m
- int n
- muDoubleComplex * A
- int lda
- muDoubleComplex * TAU
- muDoubleComplex * Workspace
- int Lwork
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgeqrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnSgeqrf_bufferSize(musolverDnHandle_t handle, int m, int n, float *A, int lda, int *lwork)
get buffer size to compute QR factorization.
{@
This function computes the required workspace size for GEQRF 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
- float * A
- int lda
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgeqrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnDgeqrf_bufferSize(musolverDnHandle_t handle, int m, int n, double *A, int lda, int *lwork)
get buffer size to compute QR factorization.
{@
This function computes the required workspace size for GEQRF 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
- double * A
- int lda
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgeqrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnCgeqrf_bufferSize(musolverDnHandle_t handle, int m, int n, muComplex *A, int lda, int *lwork)
get buffer size to compute QR factorization.
{@
This function computes the required workspace size for GEQRF 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
- muComplex * A
- int lda
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgeqrf_bufferSize
musolverStatus_t MUSOLVERAPI musolverDnZgeqrf_bufferSize(musolverDnHandle_t handle, int m, int n, muDoubleComplex *A, int lda, int *lwork)
get buffer size to compute QR factorization.
{@
This function computes the required workspace size for GEQRF 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
- muDoubleComplex * A
- int lda
- int * lwork
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgeqrfBatched
musolverStatus_t MUSOLVERAPI musolverDnSgeqrfBatched(musolverDnHandle_t handle, const int m, const int n, float *const A[], const int lda, float *ipiv, const int strideP, const int batch_count)
GEQRF_BATCHED computes the QR factorization of a batch of general m-by-n matrices.
(This is the blocked version of the algorithm).
The factorization of matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} in the batch has the form
formula {"type":"element","name":"formula","attributes":{"id":"32"},"children":[{"type":"text","text":"\\[\n A_j = Q_j\\left[\\begin{array}{c}\n R_j\\\\\n 0\n \\end{array}\\right]\n \\]"}]}
where formula {"type":"element","name":"formula","attributes":{"id":"33"},"children":[{"type":"text","text":"$R_j$"}]} is upper triangular (upper trapezoidal if m < n), and formula {"type":"element","name":"formula","attributes":{"id":"34"},"children":[{"type":"text","text":"$Q_j$"}]} is a m-by-m orthogonal/unitary matrix represented as the product of Householder matrices
formula {"type":"element","name":"formula","attributes":{"id":"35"},"children":[{"type":"text","text":"\\[\n Q_j = H_{j_1}H_{j_2}\\cdots H_{j_k}, \\quad \\text{with} \\: k =\n\\text{min}(m,n) \\]"}]}
Each Householder matrix formula {"type":"element","name":"formula","attributes":{"id":"36"},"children":[{"type":"text","text":"$H_{j_i}$"}]} is given by
formula {"type":"element","name":"formula","attributes":{"id":"37"},"children":[{"type":"text","text":"\\[\n H_{j_i} = I - \\text{ipiv}_j[i] \\cdot v_{j_i} v_{j_i}'\n \\]"}]}
where the first i-1 elements of Householder vector formula {"type":"element","name":"formula","attributes":{"id":"38"},"children":[{"type":"text","text":"$v_{j_i}$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"39"},"children":[{"type":"text","text":"$v_{j_i}[i] = 1$"}]}.
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of all the matrices A_j in the batch. - n: int. n >= 0.
The number of columns of all the matrices A_j in the batch. - A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
On entry, the m-by-n matrices A_j to be factored. On exit, the elements on and above the diagonal contain the factor R_j. The elements below the diagonal are the last m - i elements of Householder vector v_(j_i). - lda: int. lda >= m.
Specifies the leading dimension of matrices A_j. - ipiv: pointer to type. Array on the GPU (the size depends on the value of strideP).
Contains the vectors ipiv_j of corresponding Householder scalars. - strideP: int.
Stride from the start of one vector ipiv_j to the next one ipiv_(j+1). There is no restriction for the value of strideP. Normal use is strideP >= min(m,n). - batch_count: int. batch_count >= 0.
Number of matrices in the batch.
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- float *const A
- const int lda
- float * ipiv
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgeqrfBatched
musolverStatus_t MUSOLVERAPI musolverDnDgeqrfBatched(musolverDnHandle_t handle, const int m, const int n, double *const A[], const int lda, double *ipiv, const int strideP, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- double *const A
- const int lda
- double * ipiv
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgeqrfBatched
musolverStatus_t MUSOLVERAPI musolverDnCgeqrfBatched(musolverDnHandle_t handle, const int m, const int n, muComplex *const A[], const int lda, muComplex *ipiv, const int strideP, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muComplex *const A
- const int lda
- muComplex * ipiv
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgeqrfBatched
musolverStatus_t MUSOLVERAPI musolverDnZgeqrfBatched(musolverDnHandle_t handle, const int m, const int n, muDoubleComplex *const A[], const int lda, muDoubleComplex *ipiv, const int strideP, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muDoubleComplex *const A
- const int lda
- muDoubleComplex * ipiv
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgebrd
musolverStatus_t MUSOLVERAPI musolverDnSgebrd(musolverDnHandle_t handle, const int m, const int n, float *A, const int lda, float *D, float *E, float *tauq, float *taup)
GEBRD computes the bidiagonal form of a general m-by-n matrix A.
(This is the blocked version of the algorithm).
The bidiagonal form is given by:
formula {"type":"element","name":"formula","attributes":{"id":"40"},"children":[{"type":"text","text":"\\[\n B = Q' A P\n \\]"}]}
where B is upper bidiagonal if m >= n and lower bidiagonal if m < n, and Q and P are orthogonal/unitary matrices represented as the product of Householder matrices
formula {"type":"element","name":"formula","attributes":{"id":"41"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Q = H_1H_2\\cdots H_n\\: \\text{and} \\: P = G_1G_2\\cdots G_{n-1}, & \\:\n\\text{if}\\: m >= n, \\:\\text{or}\\\\ Q = H_1H_2\\cdots H_{m-1}\\: \\text{and} \\: P\n= G_1G_2\\cdots G_{m}, & \\: \\text{if}\\: m < n. \\end{array} \\]"}]}
Each Householder matrix formula {"type":"element","name":"formula","attributes":{"id":"7"},"children":[{"type":"text","text":"$H_i$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"42"},"children":[{"type":"text","text":"$G_i$"}]} is given by
formula {"type":"element","name":"formula","attributes":{"id":"43"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n H_i = I - \\text{tauq}[i] \\cdot v_i v_i', & \\: \\text{and}\\\\\n G_i = I - \\text{taup}[i] \\cdot u_i' u_i.\n \\end{array}\n \\]"}]}
If m >= n, the first i-1 elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"31"},"children":[{"type":"text","text":"$v_i[i] = 1$"}]}; while the first i elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"44"},"children":[{"type":"text","text":"$u_i$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"45"},"children":[{"type":"text","text":"$u_i[i+1] = 1$"}]}. If m < n, the first i elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"8"},"children":[{"type":"text","text":"$v_i$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"46"},"children":[{"type":"text","text":"$v_i[i+1] =\n1$"}]}; while the first i-1 elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"44"},"children":[{"type":"text","text":"$u_i$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"47"},"children":[{"type":"text","text":"$u_i[i] = 1$"}]}.
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of the matrix A. - n: int. n >= 0.
The number of columns of the matrix A. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the m-by-n matrix to be factored. On exit, the elements on the diagonal and superdiagonal (if m >= n), or subdiagonal (if m < n) contain the bidiagonal form B. If m >= n, the elements below the diagonal are the last m - i elements of Householder vector v_i, and the elements above the superdiagonal are the last n - i - 1 elements of Householder vector u_i. If m < n, the elements below the subdiagonal are the last m - i - 1 elements of Householder vector v_i, and the elements above the diagonal are the last n - i elements of Householder vector u_i. - lda: int. lda >= m.
specifies the leading dimension of A. - D: pointer to real type. Array on the GPU of dimension min(m,n).
The diagonal elements of B. - E: pointer to real type. Array on the GPU of dimension min(m,n)-1.
The off-diagonal elements of B. - tauq: pointer to type. Array on the GPU of dimension min(m,n).
The Householder scalars associated with matrix Q. - taup: pointer to type. Array on the GPU of dimension min(m,n).
The Householder scalars associated with matrix P.
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- float * A
- const int lda
- float * D
- float * E
- float * tauq
- float * taup
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgebrd
musolverStatus_t MUSOLVERAPI musolverDnDgebrd(musolverDnHandle_t handle, const int m, const int n, double *A, const int lda, double *D, double *E, double *tauq, double *taup)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- double * A
- const int lda
- double * D
- double * E
- double * tauq
- double * taup
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgebrd
musolverStatus_t MUSOLVERAPI musolverDnCgebrd(musolverDnHandle_t handle, const int m, const int n, muComplex *A, const int lda, float *D, float *E, muComplex *tauq, muComplex *taup)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muComplex * A
- const int lda
- float * D
- float * E
- muComplex * tauq
- muComplex * taup
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgebrd
musolverStatus_t MUSOLVERAPI musolverDnZgebrd(musolverDnHandle_t handle, const int m, const int n, muDoubleComplex *A, const int lda, double *D, double *E, muDoubleComplex *tauq, muDoubleComplex *taup)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muDoubleComplex * A
- const int lda
- double * D
- double * E
- muDoubleComplex * tauq
- muDoubleComplex * taup
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgebrdBatched
musolverStatus_t MUSOLVERAPI musolverDnSgebrdBatched(musolverDnHandle_t handle, const int m, const int n, float *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, float *tauq, const int strideQ, float *taup, const int strideP, const int batch_count)
GEBRD_BATCHED computes the bidiagonal form of a batch of general m-by-n matrices.
(This is the blocked version of the algorithm).
For each instance in the batch, the bidiagonal form is given by:
formula {"type":"element","name":"formula","attributes":{"id":"48"},"children":[{"type":"text","text":"\\[\n B_j = Q_j' A_j P_j\n \\]"}]}
where formula {"type":"element","name":"formula","attributes":{"id":"49"},"children":[{"type":"text","text":"$B_j$"}]} is upper bidiagonal if m >= n and lower bidiagonal if m < n, and formula {"type":"element","name":"formula","attributes":{"id":"34"},"children":[{"type":"text","text":"$Q_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"25"},"children":[{"type":"text","text":"$P_j$"}]} are orthogonal/unitary matrices represented as the product of Householder matrices
formula {"type":"element","name":"formula","attributes":{"id":"50"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Q_j = H_{j_1}H_{j_2}\\cdots H_{j_n}\\: \\text{and} \\: P_j =\nG_{j_1}G_{j_2}\\cdots G_{j_{n-1}}, & \\: \\text{if}\\: m >= n, \\:\\text{or}\\\\ Q_j\n= H_{j_1}H_{j_2}\\cdots H_{j_{m-1}}\\: \\text{and} \\: P_j =\nG_{j_1}G_{j_2}\\cdots G_{j_m}, & \\: \\text{if}\\: m < n. \\end{array} \\]"}]}
Each Householder matrix formula {"type":"element","name":"formula","attributes":{"id":"36"},"children":[{"type":"text","text":"$H_{j_i}$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"51"},"children":[{"type":"text","text":"$G_{j_i}$"}]} is given by
formula {"type":"element","name":"formula","attributes":{"id":"52"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n H_{j_i} = I - \\text{tauq}_j[i] \\cdot v_{j_i} v_{j_i}', & \\: \\text{and}\\\\\n G_{j_i} = I - \\text{taup}_j[i] \\cdot u_{j_i}' u_{j_i}.\n \\end{array}\n \\]"}]}
If m >= n, the first i-1 elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"38"},"children":[{"type":"text","text":"$v_{j_i}$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"39"},"children":[{"type":"text","text":"$v_{j_i}[i] = 1$"}]}; while the first i elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"53"},"children":[{"type":"text","text":"$u_{j_i}$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"54"},"children":[{"type":"text","text":"$u_{j_i}[i+1] = 1$"}]}. If m < n, the first i elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"38"},"children":[{"type":"text","text":"$v_{j_i}$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"55"},"children":[{"type":"text","text":"$v_{j_i}[i+1] = 1$"}]}; while the first i-1 elements of the Householder vector formula {"type":"element","name":"formula","attributes":{"id":"53"},"children":[{"type":"text","text":"$u_{j_i}$"}]} are zero, and formula {"type":"element","name":"formula","attributes":{"id":"56"},"children":[{"type":"text","text":"$u_{j_i}[i] = 1$"}]}.
Parameters:
- handle: musolverDnHandle_t .
- m: int. m >= 0.
The number of rows of all the matrices A_j in the batch. - n: int. n >= 0.
The number of columns of all the matrices A_j in the batch. - A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
On entry, the m-by-n matrices A_j to be factored. On exit, the elements on the diagonal and superdiagonal (if m >= n), or subdiagonal (if m < n) contain the bidiagonal form B_j. If m >= n, the elements below the diagonal are the last m - i elements of Householder vector v_(j_i), and the elements above the superdiagonal are the last n - i - 1 elements of Householder vector u_(j_i). If m < n, the elements below the subdiagonal are the last m - i - 1 elements of Householder vector v_(j_i), and the elements above the diagonal are the last n - i elements of Householder vector u_(j_i). - lda: int. lda >= m.
Specifies the leading dimension of matrices A_j. - D: pointer to real type. Array on the GPU (the size depends on the value of strideD).
The diagonal elements of B_j. - strideD: int.
Stride from the start of one vector D_j to the next one D_(j+1). There is no restriction for the value of strideD. Normal use case is strideD >= min(m,n). - E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
The off-diagonal elements of B_j. - strideE: int.
Stride from the start of one vector E_j to the next one E_(j+1). There is no restriction for the value of strideE. Normal use case is strideE >= min(m,n)-1. - tauq: pointer to type. Array on the GPU (the size depends on the value of strideQ).
Contains the vectors tauq_j of Householder scalars associated with matrices Q_j. - strideQ: int.
Stride from the start of one vector tauq_j to the next one tauq_(j+1). There is no restriction for the value of strideQ. Normal use is strideQ >= min(m,n). - taup: pointer to type. Array on the GPU (the size depends on the value of strideP).
Contains the vectors taup_j of Householder scalars associated with matrices P_j. - strideP: int.
Stride from the start of one vector taup_j to the next one taup_(j+1). There is no restriction for the value of strideP. Normal use is strideP >= min(m,n). - batch_count: int. batch_count >= 0.
Number of matrices in the batch.
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- float *const A
- const int lda
- float * D
- const int strideD
- float * E
- const int strideE
- float * tauq
- const int strideQ
- float * taup
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgebrdBatched
musolverStatus_t MUSOLVERAPI musolverDnDgebrdBatched(musolverDnHandle_t handle, const int m, const int n, double *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, double *tauq, const int strideQ, double *taup, const int strideP, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- double *const A
- const int lda
- double * D
- const int strideD
- double * E
- const int strideE
- double * tauq
- const int strideQ
- double * taup
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgebrdBatched
musolverStatus_t MUSOLVERAPI musolverDnCgebrdBatched(musolverDnHandle_t handle, const int m, const int n, muComplex *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, muComplex *tauq, const int strideQ, muComplex *taup, const int strideP, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muComplex *const A
- const int lda
- float * D
- const int strideD
- float * E
- const int strideE
- muComplex * tauq
- const int strideQ
- muComplex * taup
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgebrdBatched
musolverStatus_t MUSOLVERAPI musolverDnZgebrdBatched(musolverDnHandle_t handle, const int m, const int n, muDoubleComplex *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, muDoubleComplex *tauq, const int strideQ, muDoubleComplex *taup, const int strideP, const int batch_count)
Parameters:
- musolverDnHandle_t handle
- const int m
- const int n
- muDoubleComplex *const A
- const int lda
- double * D
- const int strideD
- double * E
- const int strideE
- muDoubleComplex * tauq
- const int strideQ
- muDoubleComplex * taup
- const int strideP
- const int batch_count
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgetrs
musolverStatus_t MUSOLVERAPI musolverDnSgetrs(musolverDnHandle_t handle, mublasOperation_t trans, int n, int nrhs, const float *A, int lda, const int *devIpiv, float *B, int ldb, int *devInfo)
GETRS solves a system of n linear equations on n variables in its factorized form.
It solves one of the following systems, depending on the value of trans:
formula {"type":"element","name":"formula","attributes":{"id":"57"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = B & \\: \\text{not transposed,}\\\\\n A^T X = B & \\: \\text{transposed, or}\\\\\n A^H X = B & \\: \\text{conjugate transposed.}\n \\end{array}\n \\]"}]}
Matrix A is defined by its triangular factors as returned by GETRF.
Parameters:
- handle: musolverDnHandle_t .
- trans: mublasOperation_t.
Specifies the form of the system of equations. - n: int. n >= 0.
The order of the system, i.e. the number of columns and rows of A. - nrhs: int. nrhs >= 0.
The number of right hand sides, i.e., the number of columns of the matrix B. - A: pointer to type. Array on the GPU of dimension ldan.
The factors L and U of the factorization A = PL*U returned by GETRF. - lda: int. lda >= n.
The leading dimension of A. - ipiv: pointer to int. Array on the GPU of dimension n.
The pivot indices returned by GETRF. - B: pointer to type. Array on the GPU of dimension ldb*nrhs.
On entry, the right hand side matrix B. On exit, the solution matrix X. - ldb: int. ldb >= n.
The leading dimension of B.
Parameters:
- musolverDnHandle_t handle
- mublasOperation_t trans
- int n
- int nrhs
- const float * A
- int lda
- const int * devIpiv
- float * B
- int ldb
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgetrs
musolverStatus_t MUSOLVERAPI musolverDnDgetrs(musolverDnHandle_t handle, mublasOperation_t trans, int n, int nrhs, const double *A, int lda, const int *devIpiv, double *B, int ldb, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- mublasOperation_t trans
- int n
- int nrhs
- const double * A
- int lda
- const int * devIpiv
- double * B
- int ldb
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgetrs
musolverStatus_t MUSOLVERAPI musolverDnCgetrs(musolverDnHandle_t handle, mublasOperation_t trans, int n, int nrhs, const muComplex *A, int lda, const int *devIpiv, muComplex *B, int ldb, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- mublasOperation_t trans
- int n
- int nrhs
- const muComplex * A
- int lda
- const int * devIpiv
- muComplex * B
- int ldb
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgetrs
musolverStatus_t MUSOLVERAPI musolverDnZgetrs(musolverDnHandle_t handle, mublasOperation_t trans, int n, int nrhs, const muDoubleComplex *A, int lda, const int *devIpiv, muDoubleComplex *B, int ldb, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- mublasOperation_t trans
- int n
- int nrhs
- const muDoubleComplex * A
- int lda
- const int * devIpiv
- muDoubleComplex * B
- int ldb
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgetrsBatched
musolverStatus_t MUSOLVERAPI musolverDnSgetrsBatched(musolverDnHandle_t handle, const mublasOperation_t trans, const int n, const int nrhs, float *const A[], const int lda, const int *ipiv, const int strideP, float *const B[], const int ldb, const int batch_count, int *devInfo)
GETRS_BATCHED solves a batch of systems of n linear equations on n variables in its factorized forms.
For each instance j in the batch, it solves one of the following systems, depending on the value of trans:
formula {"type":"element","name":"formula","attributes":{"id":"58"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = B_j & \\: \\text{not transposed,}\\\\\n A_j^T X_j = B_j & \\: \\text{transposed, or}\\\\\n A_j^H X_j = B_j & \\: \\text{conjugate transposed.}\n \\end{array}\n \\]"}]}
Matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is defined by its triangular factors as returned by GETRF_BATCHED.
Parameters:
- handle: musolverDnHandle_t .
- trans: mublasOperation_t.
Specifies the form of the system of equations of each instance in the batch. - n: int. n >= 0.
The order of the system, i.e. the number of columns and rows of all A_j matrices. - nrhs: int. nrhs >= 0.
The number of right hand sides, i.e., the number of columns of all the matrices B_j. - A: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldan.
The factors L_j and U_j of the factorization A_j = P_jL_j*U_j returned by GETRF_BATCHED. - lda: int. lda >= n.
The leading dimension of matrices A_j. - ipiv: pointer to int. Array on the GPU (the size depends on the value of strideP).
Contains the vectors ipiv_j of pivot indices returned by GETRF_BATCHED. - strideP: int.
Stride from the start of one vector ipiv_j to the next one ipiv_(j+1). There is no restriction for the value of strideP. Normal use case is strideP >= n. - B: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*nrhs.
On entry, the right hand side matrices B_j. On exit, the solution matrix X_j of each system in the batch. - ldb: int. ldb >= n.
The leading dimension of matrices B_j. - batch_count: int. batch_count >= 0.
Number of instances (systems) in the batch.
Parameters:
- musolverDnHandle_t handle
- const mublasOperation_t trans
- const int n
- const int nrhs
- float *const A
- const int lda
- const int * ipiv
- const int strideP
- float *const B
- const int ldb
- const int batch_count
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgetrsBatched
musolverStatus_t MUSOLVERAPI musolverDnDgetrsBatched(musolverDnHandle_t handle, const mublasOperation_t trans, const int n, const int nrhs, double *const A[], const int lda, const int *ipiv, const int strideP, double *const B[], const int ldb, const int batch_count, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- const mublasOperation_t trans
- const int n
- const int nrhs
- double *const A
- const int lda
- const int * ipiv
- const int strideP
- double *const B
- const int ldb
- const int batch_count
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnCgetrsBatched
musolverStatus_t MUSOLVERAPI musolverDnCgetrsBatched(musolverDnHandle_t handle, const mublasOperation_t trans, const int n, const int nrhs, muComplex *const A[], const int lda, const int *ipiv, const int strideP, muComplex *const B[], const int ldb, const int batch_count, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- const mublasOperation_t trans
- const int n
- const int nrhs
- muComplex *const A
- const int lda
- const int * ipiv
- const int strideP
- muComplex *const B
- const int ldb
- const int batch_count
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnZgetrsBatched
musolverStatus_t MUSOLVERAPI musolverDnZgetrsBatched(musolverDnHandle_t handle, const mublasOperation_t trans, const int n, const int nrhs, muDoubleComplex *const A[], const int lda, const int *ipiv, const int strideP, muDoubleComplex *const B[], const int ldb, const int batch_count, int *devInfo)
Parameters:
- musolverDnHandle_t handle
- const mublasOperation_t trans
- const int n
- const int nrhs
- muDoubleComplex *const A
- const int lda
- const int * ipiv
- const int strideP
- muDoubleComplex *const B
- const int ldb
- const int batch_count
- int * devInfo
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnSgesv
musolverStatus_t MUSOLVERAPI musolverDnSgesv(musolverDnHandle_t handle, const int n, const int nrhs, float *A, const int lda, int *ipiv, float *B, const int ldb, int *info)
GESV solves a general system of n linear equations on n variables.
The linear system is of the form
formula {"type":"element","name":"formula","attributes":{"id":"59"},"children":[{"type":"text","text":"\\[\n A X = B\n \\]"}]}
where A is a general n-by-n matrix. Matrix A is first factorized in triangular factors L and U using GETRF; then, the solution is computed with GETRS.
Parameters:
- handle: musolverDnHandle_t .
- n: int. n >= 0.
The order of the system, i.e. the number of columns and rows of A. - nrhs: int. nrhs >= 0.
The number of right hand sides, i.e., the number of columns of the matrix B. - A: pointer to type. Array on the GPU of dimension lda*n.
On entry, the matrix A. On exit, if info = 0, the factors L and U of the LU decomposition of A returned by GETRF. - lda: int. lda >= n.
The leading dimension of A. - ipiv: pointer to int. Array on the GPU of dimension n.
The pivot indices returned by GETRF. - B: pointer to type. Array on the GPU of dimension ldb*nrhs.
On entry, the right hand side matrix B. On exit, the solution matrix X. - ldb: int. ldb >= n.
The leading dimension of B. - info: pointer to a int on the GPU.
If info = 0, successful exit. If info = i > 0, U is singular, and the solution could not be computed. U[i,i] is the first zero element in the diagonal.
Parameters:
- musolverDnHandle_t handle
- const int n
- const int nrhs
- float * A
- const int lda
- int * ipiv
- float * B
- const int ldb
- int * info
Return type: musolverStatus_t MUSOLVERAPI
Function musolverDnDgesv
musolverStatus_t MUSOLVERAPI musolverDnDgesv(musolverDnHandle_t handle, const int n, const int nrhs, double *A, const int lda, int *ipiv, double *B, const int ldb, int *info)
Parameters:
- musolverDnHandle_t handle
- const int n
- const int nrhs
- double * A
- const int lda
- int * ipiv
- double * B
- const int ldb
- int * info
Return type: musolverStatus_t MUSOLVERAPI