跳到主要内容

muSOLVER API 参考

目录​


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:

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:

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:

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:

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 Q
    C, 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 Q
    C, 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 Q
    C, 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 Q
    C, 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 U
    Q. (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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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 = P
    L*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_j
    L_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

Function musolverDnCgesv​

musolverStatus_t MUSOLVERAPI musolverDnCgesv(musolverDnHandle_t handle, const int n, const int nrhs, muComplex *A, const int lda, int *ipiv, muComplex *B, const int ldb, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • const int nrhs
  • muComplex * A
  • const int lda
  • int * ipiv
  • muComplex * B
  • const int ldb
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesv​

musolverStatus_t MUSOLVERAPI musolverDnZgesv(musolverDnHandle_t handle, const int n, const int nrhs, muDoubleComplex *A, const int lda, int *ipiv, muDoubleComplex *B, const int ldb, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • const int nrhs
  • muDoubleComplex * A
  • const int lda
  • int * ipiv
  • muDoubleComplex * B
  • const int ldb
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvBatched​

musolverStatus_t MUSOLVERAPI musolverDnSgesvBatched(musolverDnHandle_t handle, const int n, const int nrhs, float *const A[], const int lda, int *ipiv, const int strideP, float *const B[], const int ldb, int *info, const int batch_count)

GESV_BATCHED solves a batch of general systems of n linear equations on n variables.

The linear systems are of the form

formula {"type":"element","name":"formula","attributes":{"id":"60"},"children":[{"type":"text","text":"\\[\n A_j X_j = B_j\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is a general n-by-n matrix. Matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is first factorized in triangular factors formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} using GETRF_BATCHED; then, the solutions are computed with GETRS_BATCHED.

Parameters:

  • handle: musolverDnHandle_t .
  • 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 lda*n.
    On entry, the matrices A_j. On exit, if info_j = 0, the factors L_j and U_j of the LU decomposition of A_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).
    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.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for A_j. If info[i] = j > 0, U_i is singular, and the solution could not be computed. U_j[i,i] is the first zero element in the diagonal.
  • batch_count: int. batch_count >= 0.
    Number of instances (systems) in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • const int nrhs
  • float *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • float *const B
  • const int ldb
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvBatched​

musolverStatus_t MUSOLVERAPI musolverDnDgesvBatched(musolverDnHandle_t handle, const int n, const int nrhs, double *const A[], const int lda, int *ipiv, const int strideP, double *const B[], const int ldb, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • const int nrhs
  • double *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • double *const B
  • const int ldb
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvBatched​

musolverStatus_t MUSOLVERAPI musolverDnCgesvBatched(musolverDnHandle_t handle, const int n, const int nrhs, muComplex *const A[], const int lda, int *ipiv, const int strideP, muComplex *const B[], const int ldb, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • const int nrhs
  • muComplex *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • muComplex *const B
  • const int ldb
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvBatched​

musolverStatus_t MUSOLVERAPI musolverDnZgesvBatched(musolverDnHandle_t handle, const int n, const int nrhs, muDoubleComplex *const A[], const int lda, int *ipiv, const int strideP, muDoubleComplex *const B[], const int ldb, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • const int nrhs
  • muDoubleComplex *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • muDoubleComplex *const B
  • const int ldb
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgetri​

musolverStatus_t MUSOLVERAPI musolverDnSgetri(musolverDnHandle_t handle, const int n, float *A, const int lda, int *ipiv, int *info)

GETRI inverts a general n-by-n matrix A using the LU factorization computed by GETRF.

The inverse is computed by solving the linear system

formula {"type":"element","name":"formula","attributes":{"id":"61"},"children":[{"type":"text","text":"\\[\n A^{-1}L = U^{-1}\n \\]"}]}

where L is the lower triangular factor of A with unit diagonal elements, and U is the upper triangular factor.

Parameters:

  • handle: musolverDnHandle_t .
  • n: int. n >= 0.
    The number of rows and columns of the matrix A.
  • A: pointer to type. Array on the GPU of dimension ldan.
    On entry, the factors L and U of the factorization A = P
    L*U returned by GETRF. On exit, the inverse of A if info = 0; otherwise undefined.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • ipiv: pointer to int. Array on the GPU of dimension n.
    The pivot indices returned by GETRF.
  • 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:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgetri​

musolverStatus_t MUSOLVERAPI musolverDnDgetri(musolverDnHandle_t handle, const int n, double *A, const int lda, int *ipiv, int *info)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgetri​

musolverStatus_t MUSOLVERAPI musolverDnCgetri(musolverDnHandle_t handle, const int n, muComplex *A, const int lda, int *ipiv, int *info)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgetri​

musolverStatus_t MUSOLVERAPI musolverDnZgetri(musolverDnHandle_t handle, const int n, muDoubleComplex *A, const int lda, int *ipiv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • muDoubleComplex * A
  • const int lda
  • int * ipiv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgetriBatched​

musolverStatus_t MUSOLVERAPI musolverDnSgetriBatched(musolverDnHandle_t handle, const int n, float *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

GETRI_BATCHED inverts a batch of general n-by-n matrices using the LU factorization computed by GETRF_BATCHED.

The inverse of matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} in the batch is computed by solving the linear system

formula {"type":"element","name":"formula","attributes":{"id":"62"},"children":[{"type":"text","text":"\\[\n A_j^{-1} L_j = U_j^{-1}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} is the lower triangular factor of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} with unit diagonal elements, and formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} is the upper triangular factor.

Parameters:

  • handle: musolverDnHandle_t .
  • n: int. n >= 0.
    The number of rows and 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 ldan.
    On entry, the factors L_j and U_j of the factorization A = P_j
    L_j*U_j returned by GETRF_BATCHED. On exit, the inverses of A_j if info[j] = 0; otherwise undefined.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • ipiv: pointer to int. Array on the GPU (the size depends on the value of strideP).
    The pivot indices returned by GETRF_BATCHED.
  • strideP: int.
    Stride from the start of one vector ipiv_j to the next one ipiv_(i+j). There is no restriction for the value of strideP. Normal use case is strideP >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for inversion 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 n
  • float *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgetriBatched​

musolverStatus_t MUSOLVERAPI musolverDnDgetriBatched(musolverDnHandle_t handle, const int n, double *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • double *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgetriBatched​

musolverStatus_t MUSOLVERAPI musolverDnCgetriBatched(musolverDnHandle_t handle, const int n, muComplex *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • muComplex *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgetriBatched​

musolverStatus_t MUSOLVERAPI musolverDnZgetriBatched(musolverDnHandle_t handle, const int n, muDoubleComplex *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgels​

musolverStatus_t MUSOLVERAPI musolverDnSgels(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, float *A, const int lda, float *B, const int ldb, int *info, void *buffer)

GELS solves an overdetermined (or underdetermined) linear system defined by an m-by-n matrix A, and a corresponding matrix B, using the QR factorization computed by GEQRF (or the LQ factorization computed by GELQF).

Depending on the value of trans, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"63"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = B & \\: \\text{not transposed, or}\\\\\n A' X = B & \\: \\text{transposed if real, or conjugate transposed if\ncomplex} \\end{array} \\]"}]}

If m >= n (or m < n in the case of transpose/conjugate transpose), the system is overdetermined and a least-squares solution approximating X is found by minimizing

formula {"type":"element","name":"formula","attributes":{"id":"64"},"children":[{"type":"text","text":"\\[\n || B - A X || \\quad \\text{(or} \\: || B - A' X ||\\text{)}\n \\]"}]}

If m < n (or m >= n in the case of transpose/conjugate transpose), the system is underdetermined and a unique solution for X is chosen such that formula {"type":"element","name":"formula","attributes":{"id":"65"},"children":[{"type":"text","text":"$|| X ||$"}]} is minimal.

Parameters:

  • handle: musolverDnHandle_t .
  • trans: mublasOperation_t.
    Specifies the form of the system of equations.
  • m: int. m >= 0.
    The number of rows of matrix A.
  • n: int. n >= 0.
    The number of columns of matrix A.
  • nrhs: int. nrhs >= 0.
    The number of columns of matrices B and X; i.e., the columns on the right hand side.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the QR (or LQ) factorization of A as returned by GEQRF (or GELQF).
  • lda: int. lda >= m.
    Specifies the leading dimension of matrix A.
  • B: pointer to type. Array on the GPU of dimension ldb*nrhs.
    On entry, the matrix B. On exit, when info = 0, B is overwritten by the solution vectors (and the residuals in the overdetermined cases) stored as columns.
  • ldb: int. ldb >= max(m,n).
    Specifies the leading dimension of matrix B.
  • info: pointer to int on the GPU.
    If info = 0, successful exit. If info = i > 0, the solution could not be computed because input matrix A is rank deficient; the i-th diagonal element of its triangular factor is zero.

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • float * A
  • const int lda
  • float * B
  • const int ldb
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgels​

musolverStatus_t MUSOLVERAPI musolverDnDgels(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, double *A, const int lda, double *B, const int ldb, int *info, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • double * A
  • const int lda
  • double * B
  • const int ldb
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgels​

musolverStatus_t MUSOLVERAPI musolverDnCgels(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, muComplex *A, const int lda, muComplex *B, const int ldb, int *info, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • muComplex * A
  • const int lda
  • muComplex * B
  • const int ldb
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgels​

musolverStatus_t MUSOLVERAPI musolverDnZgels(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, muDoubleComplex *A, const int lda, muDoubleComplex *B, const int ldb, int *info, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • muDoubleComplex * A
  • const int lda
  • muDoubleComplex * B
  • const int ldb
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgels_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSgels_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgels_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDgels_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgels_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCgels_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgels_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZgels_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgelsBatched​

musolverStatus_t MUSOLVERAPI musolverDnSgelsBatched(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, float *const A[], const int lda, float *const B[], const int ldb, int *info, const int batch_count, void *buffer)

GELS_BATCHED solves a batch of overdetermined (or underdetermined) linear systems defined by a set of m-by-n matrices formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}, and corresponding matrices formula {"type":"element","name":"formula","attributes":{"id":"49"},"children":[{"type":"text","text":"$B_j$"}]}, using the QR factorizations computed by GEQRF_BATCHED (or the LQ factorizations computed by GELQF_BATCHED).

For each instance in the batch, depending on the value of trans, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"66"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = B_j & \\: \\text{not transposed, or}\\\\\n A_j' X_j = B_j & \\: \\text{transposed if real, or conjugate transposed if\ncomplex} \\end{array} \\]"}]}

If m >= n (or m < n in the case of transpose/conjugate transpose), the system is overdetermined and a least-squares solution approximating X_j is found by minimizing

formula {"type":"element","name":"formula","attributes":{"id":"67"},"children":[{"type":"text","text":"\\[\n || B_j - A_j X_j || \\quad \\text{(or} \\: || B_j - A_j' X_j ||\\text{)}\n \\]"}]}

If m < n (or m >= n in the case of transpose/conjugate transpose), the system is underdetermined and a unique solution for X_j is chosen such that formula {"type":"element","name":"formula","attributes":{"id":"68"},"children":[{"type":"text","text":"$|| X_j ||$"}]} is minimal.

Parameters:

  • handle: musolverDnHandle_t .
  • trans: mublasOperation_t.
    Specifies the form of the system of equations.
  • 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.
  • nrhs: int. nrhs >= 0.
    The number of columns of all matrices B_j and X_j in the batch; i.e., the columns on the right hand side.
  • A: array of pointer to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the QR (or LQ) factorizations of A_j as returned by GEQRF_BATCHED (or GELQF_BATCHED).
  • lda: int. lda >= m.
    Specifies the leading dimension of matrices A_j.
  • B: array of pointer to type. Each pointer points to an array on the GPU of dimension ldb*nrhs.
    On entry, the matrices B_j. On exit, when info[j] = 0, B_j is overwritten by the solution vectors (and the residuals in the overdetermined cases) stored as columns.
  • ldb: int. ldb >= max(m,n).
    Specifies the leading dimension of matrices B_j.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for solution of A_j. If info[j] = i > 0, the solution of A_j could not be computed because input matrix A_j is rank deficient; the i-th diagonal element of its triangular factor is zero.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • float *const A
  • const int lda
  • float *const B
  • const int ldb
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgelsBatched​

musolverStatus_t MUSOLVERAPI musolverDnDgelsBatched(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, double *const A[], const int lda, double *const B[], const int ldb, int *info, const int batch_count, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • double *const A
  • const int lda
  • double *const B
  • const int ldb
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgelsBatched​

musolverStatus_t MUSOLVERAPI musolverDnCgelsBatched(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, muComplex *const A[], const int lda, muComplex *const B[], const int ldb, int *info, const int batch_count, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • muComplex *const A
  • const int lda
  • muComplex *const B
  • const int ldb
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgelsBatched​

musolverStatus_t MUSOLVERAPI musolverDnZgelsBatched(musolverDnHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, muDoubleComplex *const A[], const int lda, muDoubleComplex *const B[], const int ldb, int *info, const int batch_count, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • muDoubleComplex *const A
  • const int lda
  • muDoubleComplex *const B
  • const int ldb
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgelsBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSgelsBatched_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, const int batch_count, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgelsBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDgelsBatched_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, const int batch_count, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgelsBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCgelsBatched_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, const int batch_count, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgelsBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZgelsBatched_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, const int batch_count, size_t *buffersize)

Parameters:

  • mublasOperation_t trans
  • const int m
  • const int n
  • const int nrhs
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotrf​

musolverStatus_t MUSOLVERAPI musolverDnSpotrf(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, float *A, int lda, float *Workspace, int Lwork, int *devInfo)

POTRF computes the Cholesky factorization of a real symmetric (complex Hermitian) positive definite matrix A.

(This is the blocked version of the algorithm).

The factorization has the form:

formula {"type":"element","name":"formula","attributes":{"id":"69"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A = U'U & \\: \\text{if uplo is upper, or}\\\\\n A = LL' & \\: \\text{if uplo is lower.}\n \\end{array}\n \\]"}]}

U is an upper triangular matrix and L is lower triangular.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the factorization is 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 matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A to be factored. On exit, the lower or upper triangular factor.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • info: pointer to a int on the GPU.
    If info = 0, successful factorization of matrix A. If info = i > 0, the leading minor of order i of A is not positive definite. The factorization stopped at this point.

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • float * A
  • int lda
  • float * Workspace
  • int Lwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotrf​

musolverStatus_t MUSOLVERAPI musolverDnDpotrf(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, double *A, int lda, double *Workspace, int Lwork, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • double * A
  • int lda
  • double * Workspace
  • int Lwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotrf​

musolverStatus_t MUSOLVERAPI musolverDnCpotrf(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, muComplex *A, int lda, muComplex *Workspace, int Lwork, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • muComplex * A
  • int lda
  • muComplex * Workspace
  • int Lwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotrf​

musolverStatus_t MUSOLVERAPI musolverDnZpotrf(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, muDoubleComplex *A, int lda, muDoubleComplex *Workspace, int Lwork, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • muDoubleComplex * A
  • int lda
  • muDoubleComplex * Workspace
  • int Lwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotrf_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSpotrf_bufferSize(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, float *A, int lda, int *Lwork)

get buffer size to compute Cholesky factorization.

{@

This function computes the required workspace size for POTRF 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:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotrf_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDpotrf_bufferSize(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, double *A, int lda, int *Lwork)

get buffer size to compute Cholesky factorization.

{@

This function computes the required workspace size for POTRF 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:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotrf_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCpotrf_bufferSize(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, muComplex *A, int lda, int *Lwork)

get buffer size to compute Cholesky factorization.

{@

This function computes the required workspace size for POTRF 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:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotrf_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZpotrf_bufferSize(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, muDoubleComplex *A, int lda, int *Lwork)

get buffer size to compute Cholesky factorization.

{@

This function computes the required workspace size for POTRF 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
  • mublasFillMode_t uplo
  • int n
  • muDoubleComplex * A
  • int lda
  • int * Lwork

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnSpotrfBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, float *Aarray[], int lda, int *infoArray, int batchSize)

POTRF_BATCHED computes the Cholesky factorization of a batch of real symmetric (complex Hermitian) positive definite 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":"70"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j = U_j'U_j & \\: \\text{if uplo is upper, or}\\\\\n A_j = L_jL_j' & \\: \\text{if uplo is lower.}\n \\end{array}\n \\]"}]}

formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} is an upper triangular matrix and formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} is lower triangular.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the factorization is 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 matrix A_j.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j to be factored. On exit, the upper or lower triangular factors.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful factorization of matrix A_j. If info[j] = i > 0, the leading minor of order i of A_j is not positive definite. The j-th factorization stopped at this point.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • float * Aarray
  • int lda
  • int * infoArray
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnDpotrfBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, double *Aarray[], int lda, int *infoArray, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • double * Aarray
  • int lda
  • int * infoArray
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnCpotrfBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, muComplex *Aarray[], int lda, int *infoArray, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • muComplex * Aarray
  • int lda
  • int * infoArray
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnZpotrfBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, muDoubleComplex *Aarray[], int lda, int *infoArray, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • muDoubleComplex * Aarray
  • int lda
  • int * infoArray
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotrs​

musolverStatus_t MUSOLVERAPI musolverDnSpotrs(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, float *A, int lda, float *B, int ldb, int *devInfo)

POTRS solves a symmetric/hermitian system of n linear equations on n variables in its factorized form.

It solves the system

formula {"type":"element","name":"formula","attributes":{"id":"59"},"children":[{"type":"text","text":"\\[\n A X = B\n \\]"}]}

where A is a real symmetric (complex hermitian) positive definite matrix defined by its triangular factor

formula {"type":"element","name":"formula","attributes":{"id":"69"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A = U'U & \\: \\text{if uplo is upper, or}\\\\\n A = LL' & \\: \\text{if uplo is lower.}\n \\end{array}\n \\]"}]}

as returned by POTRF.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the factorization is 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 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.
    The factor L or U of the Cholesky factorization of A returned by POTRF.
  • lda: int. lda >= n.
    The leading dimension of A.
  • 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
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • float * A
  • int lda
  • float * B
  • int ldb
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotrs​

musolverStatus_t MUSOLVERAPI musolverDnDpotrs(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, double *A, int lda, double *B, int ldb, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • double * A
  • int lda
  • double * B
  • int ldb
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotrs​

musolverStatus_t MUSOLVERAPI musolverDnCpotrs(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, muComplex *A, int lda, muComplex *B, int ldb, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • muComplex * A
  • int lda
  • muComplex * B
  • int ldb
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotrs​

musolverStatus_t MUSOLVERAPI musolverDnZpotrs(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, muDoubleComplex *A, int lda, muDoubleComplex *B, int ldb, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • muDoubleComplex * A
  • int lda
  • muDoubleComplex * B
  • int ldb
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotrsBatched​

musolverStatus_t MUSOLVERAPI musolverDnSpotrsBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, float *A[], int lda, float *B[], int ldb, int *info, int batchSize)

POTRS_BATCHED solves a batch of symmetric/hermitian systems of n linear equations on n variables in its factorized forms.

For each instance j in the batch, it solves the system

formula {"type":"element","name":"formula","attributes":{"id":"60"},"children":[{"type":"text","text":"\\[\n A_j X_j = B_j\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is a real symmetric (complex hermitian) positive definite matrix defined by its triangular factor

formula {"type":"element","name":"formula","attributes":{"id":"70"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j = U_j'U_j & \\: \\text{if uplo is upper, or}\\\\\n A_j = L_jL_j' & \\: \\text{if uplo is lower.}\n \\end{array}\n \\]"}]}

as returned by POTRF_BATCHED.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the factorization is 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 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 lda*n.
    The factor L_j or U_j of the Cholesky factorization of A_j returned by POTRF_BATCHED.
  • lda: int. lda >= n.
    The leading dimension of matrices A_j.
  • 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
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • float * A
  • int lda
  • float * B
  • int ldb
  • int * info
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotrsBatched​

musolverStatus_t MUSOLVERAPI musolverDnDpotrsBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, double *A[], int lda, double *B[], int ldb, int *info, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • double * A
  • int lda
  • double * B
  • int ldb
  • int * info
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotrsBatched​

musolverStatus_t MUSOLVERAPI musolverDnCpotrsBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, muComplex *A[], int lda, muComplex *B[], int ldb, int *info, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • muComplex * A
  • int lda
  • muComplex * B
  • int ldb
  • int * info
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotrsBatched​

musolverStatus_t MUSOLVERAPI musolverDnZpotrsBatched(musolverDnHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, muDoubleComplex *A[], int lda, muDoubleComplex *B[], int ldb, int *info, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • mublasFillMode_t uplo
  • int n
  • int nrhs
  • muDoubleComplex * A
  • int lda
  • muDoubleComplex * B
  • int ldb
  • int * info
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotri​

musolverStatus_t MUSOLVERAPI musolverDnSpotri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *A, const int lda, int *info)

POTRI inverts a symmetric/hermitian positive definite matrix A.

The inverse of matrix formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]} is computed as

formula {"type":"element","name":"formula","attributes":{"id":"72"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A^{-1} = U^{-1} {U^{-1}}' & \\: \\text{if uplo is upper, or}\\\\\n A^{-1} = {L^{-1}}' L^{-1} & \\: \\text{if uplo is lower.}\n \\end{array}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"73"},"children":[{"type":"text","text":"$U$"}]} or formula {"type":"element","name":"formula","attributes":{"id":"74"},"children":[{"type":"text","text":"$L$"}]} is the triangular factor of the Cholesky factorization of formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]} returned by POTRF.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the factorization is 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 matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the factor L or U of the Cholesky factorization of A returned by POTRF. On exit, the inverse of A if info = 0.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit for inversion of A. If info = i > 0, A is singular. L[i,i] or U[i,i] is zero.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotri​

musolverStatus_t MUSOLVERAPI musolverDnDpotri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *A, const int lda, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotri​

musolverStatus_t MUSOLVERAPI musolverDnCpotri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotri​

musolverStatus_t MUSOLVERAPI musolverDnZpotri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSpotriBatched​

musolverStatus_t MUSOLVERAPI musolverDnSpotriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, int *info, const int batch_count)

POTRI_BATCHED inverts a batch of symmetric/hermitian positive definite matrices formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}.

The inverse of matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} in the batch is computed as

formula {"type":"element","name":"formula","attributes":{"id":"75"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j^{-1} = U_j^{-1} {U_j^{-1}}' & \\: \\text{if uplo is upper, or}\\\\\n A_j^{-1} = {L_j^{-1}}' L_j^{-1} & \\: \\text{if uplo is lower.}\n \\end{array}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} or formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} is the triangular factor of the Cholesky factorization of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} returned by POTRF_BATCHED.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the factorization is 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 matrix A_j.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the factor L_j or U_j of the Cholesky factorization of A_j returned by POTRF_BATCHED. On exit, the inverses of A_j if info[j] = 0.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for inversion of A_j. If info[j] = i > 0, A_j is singular. L_j[i,i] or U_j[i,i] is zero.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDpotriBatched​

musolverStatus_t MUSOLVERAPI musolverDnDpotriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCpotriBatched​

musolverStatus_t MUSOLVERAPI musolverDnCpotriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZpotriBatched​

musolverStatus_t MUSOLVERAPI musolverDnZpotriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvd​

musolverStatus_t MUSOLVERAPI musolverDnSgesvd(musolverDnHandle_t handle, signed char jobu, signed char jobvt, int m, int n, float *A, int lda, float *S, float *U, int ldu, float *VT, int ldvt, float *work, int lwork, float *rwork, int *devInfo)

GESVD computes the singular values and optionally the singular vectors of a general m-by-n matrix A (Singular Value Decomposition).

The SVD of matrix A is given by:

formula {"type":"element","name":"formula","attributes":{"id":"76"},"children":[{"type":"text","text":"\\[\n A = U S V'\n \\]"}]}

where the m-by-n matrix S is zero except, possibly, for its min(m,n) diagonal elements, which are the singular values of A. U and V are orthogonal (unitary) matrices. The first min(m,n) columns of U and V are the left and right singular vectors of A, respectively.

The computation of the singular vectors is optional and it is controlled by the function arguments left_svect and right_svect as described below. When computed, this function returns the transpose (or transpose conjugate) of the right singular vectors, i.e. the rows of V'.

left_svect and right_svect are mublasSvect enums that can take the following values:

  • MUBLAS_SVECT_ALL: the entire matrix U (or V') is computed,

  • MUBLAS_SVECT_SINGULAR: only the singular vectors (first min(m,n) columns of U or rows of V') are computed,

  • MUBLAS_SVECT_OVERWRITE: the first columns (or rows) of A are overwritten with the singular vectors, or

  • MUBLAS_SVECT_NONE: no columns (or rows) of U (or V') are computed, i.e. no singular vectors.

left_svect and right_svect cannot both be set to overwrite. When neither is set to overwrite, the contents of A are destroyed by the time the function returns.

注意:When m >> n (or n >> m) the algorithm could be sped up by compressing the matrix A via a QR (or LQ) factorization, and working with the triangular factor afterwards (thin-SVD). If the singular vectors are also requested, its computation could be sped up as well via executing some intermediate operations out-of-place, and relying more on matrix multiplications (GEMMs); this will require, however, a larger memory workspace. The parameter fast_alg controls whether the fast algorithm is executed or not. For more details, see the "Tuning muSOLVER performance" and "Memory model" sections of the documentation.

Parameters:

  • handle: musolverDnHandle_t .
  • left_svect: mublasSvect.
    Specifies how the left singular vectors are computed.
  • right_svect: mublasSvect.
    Specifies how the right singular vectors are computed.
  • m: int. m >= 0.
    The number of rows of matrix A.
  • n: int. n >= 0.
    The number of columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, if left_svect (or right_svect) is equal to overwrite, the first columns (or rows) contain the left (or right) singular vectors; otherwise, the contents of A are destroyed.
  • lda: int. lda >= m.
    The leading dimension of A.
  • S: pointer to real type. Array on the GPU of dimension min(m,n).
    The singular values of A in decreasing order.
  • U: pointer to type. Array on the GPU of dimension ldumin(m,n) if left_svect is set to singular, or ldum when left_svect is equal to all.
    The matrix of left singular vectors stored as columns. Not referenced if left_svect is set to overwrite or none.
  • ldu: int. ldu >= m if left_svect is all or singular; ldu >= 1 otherwise.
    The leading dimension of U.
  • V: pointer to type. Array on the GPU of dimension ldv*n.
    The matrix of right singular vectors stored as rows (transposed / conjugate-transposed). Not referenced if right_svect is set to overwrite or none.
  • ldv: int. ldv >= n if right_svect is all; ldv >= min(m,n) if right_svect is set to singular; or ldv >= 1 otherwise.
    The leading dimension of V.
  • E: pointer to real type. Array on the GPU of dimension min(m,n)-1.
    This array is used to work internally with the bidiagonal matrix B associated with A (using BDSQR). On exit, if info > 0, it contains the unconverged off-diagonal elements of B (or properly speaking, a bidiagonal matrix orthogonally equivalent to B). The diagonal elements of this matrix are in S; those that converged correspond to a subset of the singular values of A (not necessarily ordered).
  • fast_alg: mublasWorkmode.
    If set to MUBLAS_OUTOFPLACE, the function will execute the fast thin-SVD version of the algorithm when possible.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, BDSQR did not converge. i elements of E did not converge to zero.

Parameters:

  • musolverDnHandle_t handle
  • signed char jobu
  • signed char jobvt
  • int m
  • int n
  • float * A
  • int lda
  • float * S
  • float * U
  • int ldu
  • float * VT
  • int ldvt
  • float * work
  • int lwork
  • float * rwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvd​

musolverStatus_t MUSOLVERAPI musolverDnDgesvd(musolverDnHandle_t handle, signed char jobu, signed char jobvt, int m, int n, double *A, int lda, double *S, double *U, int ldu, double *VT, int ldvt, double *work, int lwork, double *rwork, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • signed char jobu
  • signed char jobvt
  • int m
  • int n
  • double * A
  • int lda
  • double * S
  • double * U
  • int ldu
  • double * VT
  • int ldvt
  • double * work
  • int lwork
  • double * rwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvd​

musolverStatus_t MUSOLVERAPI musolverDnCgesvd(musolverDnHandle_t handle, signed char jobu, signed char jobvt, int m, int n, muComplex *A, int lda, float *S, muComplex *U, int ldu, muComplex *VT, int ldvt, muComplex *work, int lwork, float *rwork, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • signed char jobu
  • signed char jobvt
  • int m
  • int n
  • muComplex * A
  • int lda
  • float * S
  • muComplex * U
  • int ldu
  • muComplex * VT
  • int ldvt
  • muComplex * work
  • int lwork
  • float * rwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvd​

musolverStatus_t MUSOLVERAPI musolverDnZgesvd(musolverDnHandle_t handle, signed char jobu, signed char jobvt, int m, int n, muDoubleComplex *A, int lda, double *S, muDoubleComplex *U, int ldu, muDoubleComplex *VT, int ldvt, muDoubleComplex *work, int lwork, double *rwork, int *devInfo)

Parameters:

  • musolverDnHandle_t handle
  • signed char jobu
  • signed char jobvt
  • int m
  • int n
  • muDoubleComplex * A
  • int lda
  • double * S
  • muDoubleComplex * U
  • int ldu
  • muDoubleComplex * VT
  • int ldvt
  • muDoubleComplex * work
  • int lwork
  • double * rwork
  • int * devInfo

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSgesvd_bufferSize(musolverDnHandle_t handle, int m, int n, int *buffersize)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDgesvd_bufferSize(musolverDnHandle_t handle, int m, int n, int *buffersize)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCgesvd_bufferSize(musolverDnHandle_t handle, int m, int n, int *buffersize)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZgesvd_bufferSize(musolverDnHandle_t handle, int m, int n, int *buffersize)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnSgesvdBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, float *const A[], const int lda, float *S, const int strideS, float *U, const int ldu, const int strideU, float *V, const int ldv, const int strideV, float *E, const int strideE, const mublasWorkmode fast_alg, int *info, const int batch_count)

GESVD_BATCHED computes the singular values and optionally the singular vectors of a batch of general m-by-n matrix A (Singular Value Decomposition).

The SVD of matrix A_j in the batch is given by:

formula {"type":"element","name":"formula","attributes":{"id":"77"},"children":[{"type":"text","text":"\\[\n A_j = U_j S_j V_j'\n \\]"}]}

where the m-by-n matrix formula {"type":"element","name":"formula","attributes":{"id":"78"},"children":[{"type":"text","text":"$S_j$"}]} is zero except, possibly, for its min(m,n) diagonal elements, which are the singular values of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}. formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} are orthogonal (unitary) matrices. The first min(m,n) columns of formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} are the left and right singular vectors of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}, respectively.

The computation of the singular vectors is optional and it is controlled by the function arguments left_svect and right_svect as described below. When computed, this function returns the transpose (or transpose conjugate) of the right singular vectors, i.e. the rows of formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}.

left_svect and right_svect are mublasSvect enums that can take the following values:

  • MUBLAS_SVECT_ALL: the entire matrix formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} (or formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}) is computed,

  • MUBLAS_SVECT_SINGULAR: only the singular vectors (first min(m,n) columns of formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} or rows of formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}) are computed,

  • MUBLAS_SVECT_OVERWRITE: the first columns (or rows) of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} are overwritten with the singular vectors, or

  • MUBLAS_SVECT_NONE: no columns (or rows) of formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} (or formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}) are computed, i.e. no singular vectors.

left_svect and right_svect cannot both be set to overwrite. When neither is set to overwrite, the contents of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} are destroyed by the time the function returns.

注意:When m >> n (or n >> m) the algorithm could be sped up by compressing the matrix formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} via a QR (or LQ) factorization, and working with the triangular factor afterwards (thin-SVD). If the singular vectors are also requested, its computation could be sped up as well via executing some intermediate operations out-of-place, and relying more on matrix multiplications (GEMMs); this will require, however, a larger memory workspace. The parameter fast_alg controls whether the fast algorithm is executed or not. For more details, see the "Tuning muSOLVER performance" and "Memory model" sections of the documentation.

Parameters:

  • handle: musolverDnHandle_t .
  • left_svect: mublasSvect.
    Specifies how the left singular vectors are computed.
  • right_svect: mublasSvect.
    Specifies how the right singular vectors are computed.
  • 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 matrices A_j. On exit, if left_svect (or right_svect) is equal to overwrite, the first columns (or rows) of A_j contain the left (or right) corresponding singular vectors; otherwise, the contents of A_j are destroyed.
  • lda: int. lda >= m.
    The leading dimension of A_j.
  • S: pointer to real type. Array on the GPU (the size depends on the value of strideS).
    The singular values of A_j in decreasing order.
  • strideS: int.
    Stride from the start of one vector S_j to the next one S_(j+1). There is no restriction for the value of strideS. Normal use case is strideS >= min(m,n).
  • U: pointer to type. Array on the GPU (the side depends on the value of strideU).
    The matrices U_j of left singular vectors stored as columns. Not referenced if left_svect is set to overwrite or none.
  • ldu: int. ldu >= m if left_svect is all or singular; ldu >= 1 otherwise.
    The leading dimension of U_j.
  • strideU: int.
    Stride from the start of one matrix U_j to the next one U_(j+1). There is no restriction for the value of strideU. Normal use case is strideU >= ldumin(m,n) if left_svect is set to singular, or strideU >= ldum when left_svect is equal to all.
  • V: pointer to type. Array on the GPU (the size depends on the value of strideV).
    The matrices V_j of right singular vectors stored as rows (transposed / conjugate-transposed). Not referenced if right_svect is set to overwrite or none.
  • ldv: int. ldv >= n if right_svect is all; ldv >= min(m,n) if right_svect is set to singular; or ldv >= 1 otherwise.
    The leading dimension of V.
  • strideV: int.
    Stride from the start of one matrix V_j to the next one V_(j+1). There is no restriction for the value of strideV. Normal use case is strideV >= ldv*n.
  • E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the bidiagonal matrix B_j associated with A_j (using BDSQR). On exit, if info[j] > 0, E_j contains the unconverged off-diagonal elements of B_j (or properly speaking, a bidiagonal matrix orthogonally equivalent to B_j). The diagonal elements of this matrix are in S_j; those that converged correspond to a subset of the singular values of A_j (not necessarily ordered).
  • 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.
  • fast_alg: mublasWorkmode.
    If set to MUBLAS_OUTOFPLACE, the function will execute the fast thin-SVD version of the algorithm when possible.
  • info: pointer to a int on the GPU.
    If info[j] = 0, successful exit. If info[j] = i > 0, BDSQR did not converge. i elements of E_j did not converge to zero.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • float *const A
  • const int lda
  • float * S
  • const int strideS
  • float * U
  • const int ldu
  • const int strideU
  • float * V
  • const int ldv
  • const int strideV
  • float * E
  • const int strideE
  • const mublasWorkmode fast_alg
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnDgesvdBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, double *const A[], const int lda, double *S, const int strideS, double *U, const int ldu, const int strideU, double *V, const int ldv, const int strideV, double *E, const int strideE, const mublasWorkmode fast_alg, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • double *const A
  • const int lda
  • double * S
  • const int strideS
  • double * U
  • const int ldu
  • const int strideU
  • double * V
  • const int ldv
  • const int strideV
  • double * E
  • const int strideE
  • const mublasWorkmode fast_alg
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnCgesvdBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, muComplex *const A[], const int lda, float *S, const int strideS, muComplex *U, const int ldu, const int strideU, muComplex *V, const int ldv, const int strideV, float *E, const int strideE, const mublasWorkmode fast_alg, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • muComplex *const A
  • const int lda
  • float * S
  • const int strideS
  • muComplex * U
  • const int ldu
  • const int strideU
  • muComplex * V
  • const int ldv
  • const int strideV
  • float * E
  • const int strideE
  • const mublasWorkmode fast_alg
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnZgesvdBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, muDoubleComplex *const A[], const int lda, double *S, const int strideS, muDoubleComplex *U, const int ldu, const int strideU, muDoubleComplex *V, const int ldv, const int strideV, double *E, const int strideE, const mublasWorkmode fast_alg, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • double * S
  • const int strideS
  • muDoubleComplex * U
  • const int ldu
  • const int strideU
  • muDoubleComplex * V
  • const int ldv
  • const int strideV
  • double * E
  • const int strideE
  • const mublasWorkmode fast_alg
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvdaStridedBatched​

musolverStatus_t MUSOLVERAPI musolverDnSgesvdaStridedBatched(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, float *A, int lda, long long int strideA, float *S, long long int strideS, float *U, int ldu, long long int strideU, float *V, int ldv, long long int strideV, float *work, int lwork, int *info, double *h_R_nrmF, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • float * A
  • int lda
  • long long int strideA
  • float * S
  • long long int strideS
  • float * U
  • int ldu
  • long long int strideU
  • float * V
  • int ldv
  • long long int strideV
  • float * work
  • int lwork
  • int * info
  • double * h_R_nrmF
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvdaStridedBatched​

musolverStatus_t MUSOLVERAPI musolverDnDgesvdaStridedBatched(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, double *A, int lda, long long int strideA, double *S, long long int strideS, double *U, int ldu, long long int strideU, double *V, int ldv, long long int strideV, double *work, int lwork, int *info, double *h_R_nrmF, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • double * A
  • int lda
  • long long int strideA
  • double * S
  • long long int strideS
  • double * U
  • int ldu
  • long long int strideU
  • double * V
  • int ldv
  • long long int strideV
  • double * work
  • int lwork
  • int * info
  • double * h_R_nrmF
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvdaStridedBatched​

musolverStatus_t MUSOLVERAPI musolverDnCgesvdaStridedBatched(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, muComplex *A, int lda, long long int strideA, float *S, long long int strideS, muComplex *U, int ldu, long long int strideU, muComplex *V, int ldv, long long int strideV, muComplex *work, int lwork, int *info, double *h_R_nrmF, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • muComplex * A
  • int lda
  • long long int strideA
  • float * S
  • long long int strideS
  • muComplex * U
  • int ldu
  • long long int strideU
  • muComplex * V
  • int ldv
  • long long int strideV
  • muComplex * work
  • int lwork
  • int * info
  • double * h_R_nrmF
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvdaStridedBatched​

musolverStatus_t MUSOLVERAPI musolverDnZgesvdaStridedBatched(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, muDoubleComplex *A, int lda, long long int strideA, double *S, long long int strideS, muDoubleComplex *U, int ldu, long long int strideU, muDoubleComplex *V, int ldv, long long int strideV, muDoubleComplex *work, int lwork, int *info, double *h_R_nrmF, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • muDoubleComplex * A
  • int lda
  • long long int strideA
  • double * S
  • long long int strideS
  • muDoubleComplex * U
  • int ldu
  • long long int strideU
  • muDoubleComplex * V
  • int ldv
  • long long int strideV
  • muDoubleComplex * work
  • int lwork
  • int * info
  • double * h_R_nrmF
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvdaStridedBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSgesvdaStridedBatched_bufferSize(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, const float *A, int lda, long long int strideA, const float *S, long long int strideS, const float *U, int ldu, long long int strideU, const float *V, int ldv, long long int strideV, int *lwork, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • const float * A
  • int lda
  • long long int strideA
  • const float * S
  • long long int strideS
  • const float * U
  • int ldu
  • long long int strideU
  • const float * V
  • int ldv
  • long long int strideV
  • int * lwork
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvdaStridedBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDgesvdaStridedBatched_bufferSize(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, const double *A, int lda, long long int strideA, const double *S, long long int strideS, const double *U, int ldu, long long int strideU, const double *V, int ldv, long long int strideV, int *lwork, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • const double * A
  • int lda
  • long long int strideA
  • const double * S
  • long long int strideS
  • const double * U
  • int ldu
  • long long int strideU
  • const double * V
  • int ldv
  • long long int strideV
  • int * lwork
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvdaStridedBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCgesvdaStridedBatched_bufferSize(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, const muComplex *A, int lda, long long int strideA, const float *S, long long int strideS, const muComplex *U, int ldu, long long int strideU, const muComplex *V, int ldv, long long int strideV, int *lwork, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • const muComplex * A
  • int lda
  • long long int strideA
  • const float * S
  • long long int strideS
  • const muComplex * U
  • int ldu
  • long long int strideU
  • const muComplex * V
  • int ldv
  • long long int strideV
  • int * lwork
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvdaStridedBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZgesvdaStridedBatched_bufferSize(musolverDnHandle_t handle, musolverEigMode_t jobz, int rank, int m, int n, const muDoubleComplex *A, int lda, long long int strideA, const double *S, long long int strideS, const muDoubleComplex *U, int ldu, long long int strideU, const muDoubleComplex *V, int ldv, long long int strideV, int *lwork, int batchSize)

Parameters:

  • musolverDnHandle_t handle
  • musolverEigMode_t jobz
  • int rank
  • int m
  • int n
  • const muDoubleComplex * A
  • int lda
  • long long int strideA
  • const double * S
  • long long int strideS
  • const muDoubleComplex * U
  • int ldu
  • long long int strideU
  • const muDoubleComplex * V
  • int ldv
  • long long int strideV
  • int * lwork
  • int batchSize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvdj​

musolverStatus_t MUSOLVERAPI musolverDnSgesvdj(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, float *A, const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *S, float *U, const int ldu, float *V, const int ldv, int *info)

GESVDJ computes the singular values and optionally the singular vectors of a general m-by-n matrix A (Singular Value Decomposition).

The SVD of matrix A is given by:

formula {"type":"element","name":"formula","attributes":{"id":"76"},"children":[{"type":"text","text":"\\[\n A = U S V'\n \\]"}]}

where the m-by-n matrix S is zero except, possibly, for its min(m,n) diagonal elements, which are the singular values of A. U and V are orthogonal (unitary) matrices. The first min(m,n) columns of U and V are the left and right singular vectors of A, respectively.

The computation of the singular vectors is optional and it is controlled by the function arguments left_svect and right_svect as described below. When computed, this function returns the transpose (or transpose conjugate) of the right singular vectors, i.e. the rows of V'.

left_svect and right_svect are mublasSvect enums that can take the following values:

  • MUBLAS_SVECT_ALL: the entire matrix U (or V') is computed,

  • MUBLAS_SVECT_SINGULAR: the singular vectors (first min(m,n) columns of U or rows of V') are computed, or

  • MUBLAS_SVECT_NONE: no columns (or rows) of U (or V') are computed, i.e. no singular vectors.

The singular values are computed by applying QR factorization to AV if m >= n (resp. LQ factorization to U'A if m < n), where V (resp. U) is found as the eigenvectors of A'A (resp. AA') using the Jacobi eigenvalue algorithm.

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • left_svect: mublasSvect.
    Specifies how the left singular vectors are computed. MUBLAS_SVECT_OVERWRITE is not supported.
  • right_svect: mublasSvect.
    Specifies how the right singular vectors are computed. MUBLAS_SVECT_OVERWRITE is not supported.
  • m: int. m >= 0.
    The number of rows of matrix A.
  • n: int. n >= 0.
    The number of columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the contents of A are destroyed.
  • lda: int. lda >= m.
    The leading dimension of A.
  • abstol: real type.
    The absolute tolerance. The algorithm is considered to have converged once off(A'A) is <= norm(A'A) * abstol [resp. off(AA') <= norm(AA') abstol]. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to real type on the GPU.
    The Frobenius norm of the off-diagonal elements of A'A (resp. AA') at the final iteration.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to a int on the GPU.
    The actual number of sweeps (iterations) used by the algorithm.
  • S: pointer to real type. Array on the GPU of dimension min(m,n).
    The singular values of A in decreasing order.
  • U: pointer to type. Array on the GPU of dimension ldumin(m,n) if left_svect is set to singular, or ldum when left_svect is equal to all.
    The matrix of left singular vectors stored as columns. Not referenced if left_svect is set to none.
  • ldu: int. ldu >= m if left_svect is set to all or singular; ldu >= 1 otherwise.
    The leading dimension of U.
  • V: pointer to type. Array on the GPU of dimension ldv*n.
    The matrix of right singular vectors stored as rows (transposed / conjugate-transposed). Not referenced if right_svect is set to none.
  • ldv: int. ldv >= n if right_svect is set to all; ldv >= min(m,n) if right_svect is set to singular; or ldv >= 1 otherwise.
    The leading dimension of V.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = 1, the algorithm did not converge.

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • float * A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * S
  • float * U
  • const int ldu
  • float * V
  • const int ldv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvdj​

musolverStatus_t MUSOLVERAPI musolverDnDgesvdj(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, double *A, const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *S, double *U, const int ldu, double *V, const int ldv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • double * A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * S
  • double * U
  • const int ldu
  • double * V
  • const int ldv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvdj​

musolverStatus_t MUSOLVERAPI musolverDnCgesvdj(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, muComplex *A, const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *S, muComplex *U, const int ldu, muComplex *V, const int ldv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • muComplex * A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * S
  • muComplex * U
  • const int ldu
  • muComplex * V
  • const int ldv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvdj​

musolverStatus_t MUSOLVERAPI musolverDnZgesvdj(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, muDoubleComplex *A, const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *S, muDoubleComplex *U, const int ldu, muDoubleComplex *V, const int ldv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • muDoubleComplex * A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * S
  • muDoubleComplex * U
  • const int ldu
  • muDoubleComplex * V
  • const int ldv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSgesvdjBatched​

musolverStatus_t MUSOLVERAPI musolverDnSgesvdjBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, float *const A[], const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *S, const int strideS, float *U, const int ldu, const int strideU, float *V, const int ldv, const int strideV, int *info, const int batch_count)

GESVDJ_BATCHED computes the singular values and optionally the singular vectors of a batch of general m-by-n matrix A (Singular Value Decomposition).

The SVD of matrix A_j in the batch is given by:

formula {"type":"element","name":"formula","attributes":{"id":"77"},"children":[{"type":"text","text":"\\[\n A_j = U_j S_j V_j'\n \\]"}]}

where the m-by-n matrix formula {"type":"element","name":"formula","attributes":{"id":"78"},"children":[{"type":"text","text":"$S_j$"}]} is zero except, possibly, for its min(m,n) diagonal elements, which are the singular values of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}. formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} are orthogonal (unitary) matrices. The first min(m,n) columns of formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} are the left and right singular vectors of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}, respectively.

The computation of the singular vectors is optional and it is controlled by the function arguments left_svect and right_svect as described below. When computed, this function returns the transpose (or transpose conjugate) of the right singular vectors, i.e. the rows of formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}.

left_svect and right_svect are mublasSvect enums that can take the following values:

  • MUBLAS_SVECT_ALL: the entire matrix formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} (or formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}) is computed,

  • MUBLAS_SVECT_SINGULAR: the singular vectors (first min(m,n) columns of formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} or rows of formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}) are computed, or

  • MUBLAS_SVECT_NONE: no columns (or rows) of formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} (or formula {"type":"element","name":"formula","attributes":{"id":"80"},"children":[{"type":"text","text":"$V_j'$"}]}) are computed, i.e. no singular vectors.

The singular values are computed by applying QR factorization to formula {"type":"element","name":"formula","attributes":{"id":"81"},"children":[{"type":"text","text":"$A_jV_j$"}]} if m >= n (resp. LQ factorization to formula {"type":"element","name":"formula","attributes":{"id":"82"},"children":[{"type":"text","text":"$U_j'A_j$"}]} if m < n), where formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} (resp. formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]}) is found as the eigenvectors of formula {"type":"element","name":"formula","attributes":{"id":"83"},"children":[{"type":"text","text":"$A_j'A_j$"}]} (resp. formula {"type":"element","name":"formula","attributes":{"id":"84"},"children":[{"type":"text","text":"$A_jA_j'$"}]}) using the Jacobi eigenvalue algorithm.

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • left_svect: mublasSvect.
    Specifies how the left singular vectors are computed. MUBLAS_SVECT_OVERWRITE is not supported.
  • right_svect: mublasSvect.
    Specifies how the right singular vectors are computed. MUBLAS_SVECT_OVERWRITE is not supported.
  • 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 matrices A_j. On exit, the contents of A_j are destroyed.
  • lda: int. lda >= m.
    The leading dimension of A_j.
  • abstol: real type.
    The absolute tolerance. The algorithm is considered to have converged once off(A_j'A_j) is <= norm(A_j'A_j) * abstol [resp. off(A_jA_j') <= norm(A_jA_j') * abstol]. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to real type on the GPU.
    The Frobenius norm of the off-diagonal elements of A_j'A_j (resp. A_jA_j') at the final iteration.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to int. Array of batch_count integers on the GPU.
    The actual number of sweeps (iterations) used by the algorithm for each batch instance.
  • S: pointer to real type. Array on the GPU (the size depends on the value of strideS).
    The singular values of A_j in decreasing order.
  • strideS: int.
    Stride from the start of one vector S_j to the next one S_(j+1). There is no restriction for the value of strideS. Normal use case is strideS >= min(m,n).
  • U: pointer to type. Array on the GPU (the side depends on the value of strideU).
    The matrices U_j of left singular vectors stored as columns. Not referenced if left_svect is set to none.
  • ldu: int. ldu >= m if left_svect is set to all or singular; ldu >= 1 otherwise.
    The leading dimension of U_j.
  • strideU: int.
    Stride from the start of one matrix U_j to the next one U_(j+1). There is no restriction for the value of strideU. Normal use case is strideU >= ldumin(m,n) if left_svect is set to singular, or strideU >= ldum when left_svect is equal to all.
  • V: pointer to type. Array on the GPU (the size depends on the value of strideV).
    The matrices V_j of right singular vectors stored as rows (transposed / conjugate-transposed). Not referenced if right_svect is set to none.
  • ldv: int. ldv >= n if right_svect is set to all; ldv >= min(m,n) if right_svect is set to singular; or ldv >= 1 otherwise.
    The leading dimension of V.
  • strideV: int.
    Stride from the start of one matrix V_j to the next one V_(j+1). There is no restriction for the value of strideV. Normal use case is strideV >= ldv*n.
  • info: pointer to a int on the GPU.
    If info[j] = 0, successful exit. If info[j] = 1, the algorithm did not converge.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • float *const A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * S
  • const int strideS
  • float * U
  • const int ldu
  • const int strideU
  • float * V
  • const int ldv
  • const int strideV
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDgesvdjBatched​

musolverStatus_t MUSOLVERAPI musolverDnDgesvdjBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, double *const A[], const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *S, const int strideS, double *U, const int ldu, const int strideU, double *V, const int ldv, const int strideV, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • double *const A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * S
  • const int strideS
  • double * U
  • const int ldu
  • const int strideU
  • double * V
  • const int ldv
  • const int strideV
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCgesvdjBatched​

musolverStatus_t MUSOLVERAPI musolverDnCgesvdjBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, muComplex *const A[], const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *S, const int strideS, muComplex *U, const int ldu, const int strideU, muComplex *V, const int ldv, const int strideV, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • muComplex *const A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * S
  • const int strideS
  • muComplex * U
  • const int ldu
  • const int strideU
  • muComplex * V
  • const int ldv
  • const int strideV
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZgesvdjBatched​

musolverStatus_t MUSOLVERAPI musolverDnZgesvdjBatched(musolverDnHandle_t handle, const mublasSvect left_svect, const mublasSvect right_svect, const int m, const int n, muDoubleComplex *const A[], const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *S, const int strideS, muDoubleComplex *U, const int ldu, const int strideU, muDoubleComplex *V, const int ldv, const int strideV, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasSvect left_svect
  • const mublasSvect right_svect
  • const int m
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * S
  • const int strideS
  • muDoubleComplex * U
  • const int ldu
  • const int strideU
  • muDoubleComplex * V
  • const int ldv
  • const int strideV
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsytrd​

musolverStatus_t MUSOLVERAPI musolverDnSsytrd(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *D, float *E, float *tau)

SYTRD computes the tridiagonal form of a real symmetric matrix A.

(This is the blocked version of the algorithm).

The tridiagonal form is given by:

formula {"type":"element","name":"formula","attributes":{"id":"85"},"children":[{"type":"text","text":"\\[\n T = Q' A Q\n \\]"}]}

where T is symmetric tridiagonal and Q is an orthogonal matrix represented as the product of Householder matrices

formula {"type":"element","name":"formula","attributes":{"id":"86"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Q = H_1H_2\\cdots H_{n-1} & \\: \\text{if uplo indicates lower, or}\\\\\n Q = H_{n-1}H_{n-2}\\cdots H_1 & \\: \\text{if uplo indicates upper.}\n \\end{array}\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":"87"},"children":[{"type":"text","text":"\\[\n H_i = I - \\text{tau}[i] \\cdot v_i v_i'\n \\]"}]}

where tau[i] is the corresponding Householder scalar. When uplo indicates lower, 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":"88"},"children":[{"type":"text","text":"$v_i[i+1] = 1$"}]}. If uplo indicates upper, the last n-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":"31"},"children":[{"type":"text","text":"$v_i[i] = 1$"}]}.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A is stored. 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 A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix to be factored. On exit, if upper, then the elements on the diagonal and superdiagonal contain the tridiagonal form T; the elements above the superdiagonal contain the first i-1 elements of the Householder vectors v_i stored as columns. If lower, then the elements on the diagonal and subdiagonal contain the tridiagonal form T; the elements below the subdiagonal contain the last n-i-1 elements of the Householder vectors v_i stored as columns.
  • lda: int. lda >= n.
    The leading dimension of A.
  • D: pointer to type. Array on the GPU of dimension n.
    The diagonal elements of T.
  • E: pointer to type. Array on the GPU of dimension n-1.
    The off-diagonal elements of T.
  • tau: pointer to type. Array on the GPU of dimension n-1.
    The Householder scalars.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • float * D
  • float * E
  • float * tau

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsytrd​

musolverStatus_t MUSOLVERAPI musolverDnDsytrd(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *D, double *E, double *tau)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • double * D
  • double * E
  • double * tau

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChetrd​

musolverStatus_t MUSOLVERAPI musolverDnChetrd(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, float *D, float *E, muComplex *tau)

HETRD computes the tridiagonal form of a complex hermitian matrix A.

(This is the blocked version of the algorithm).

The tridiagonal form is given by:

formula {"type":"element","name":"formula","attributes":{"id":"85"},"children":[{"type":"text","text":"\\[\n T = Q' A Q\n \\]"}]}

where T is hermitian tridiagonal and Q is an unitary matrix represented as the product of Householder matrices

formula {"type":"element","name":"formula","attributes":{"id":"86"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Q = H_1H_2\\cdots H_{n-1} & \\: \\text{if uplo indicates lower, or}\\\\\n Q = H_{n-1}H_{n-2}\\cdots H_1 & \\: \\text{if uplo indicates upper.}\n \\end{array}\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":"87"},"children":[{"type":"text","text":"\\[\n H_i = I - \\text{tau}[i] \\cdot v_i v_i'\n \\]"}]}

where tau[i] is the corresponding Householder scalar. When uplo indicates lower, 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":"88"},"children":[{"type":"text","text":"$v_i[i+1] = 1$"}]}. If uplo indicates upper, the last n-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":"31"},"children":[{"type":"text","text":"$v_i[i] = 1$"}]}.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the hermitian matrix A is stored. 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 A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix to be factored. On exit, if upper, then the elements on the diagonal and superdiagonal contain the tridiagonal form T; the elements above the superdiagonal contain the first i-1 elements of the Householder vectors v_i stored as columns. If lower, then the elements on the diagonal and subdiagonal contain the tridiagonal form T; the elements below the subdiagonal contain the last n-i-1 elements of the Householder vectors v_i stored as columns.
  • lda: int. lda >= n.
    The leading dimension of A.
  • D: pointer to real type. Array on the GPU of dimension n.
    The diagonal elements of T.
  • E: pointer to real type. Array on the GPU of dimension n-1.
    The off-diagonal elements of T.
  • tau: pointer to type. Array on the GPU of dimension n-1.
    The Householder scalars.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • float * D
  • float * E
  • muComplex * tau

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhetrd​

musolverStatus_t MUSOLVERAPI musolverDnZhetrd(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, double *D, double *E, muDoubleComplex *tau)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • double * D
  • double * E
  • muDoubleComplex * tau

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsytrdBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsytrdBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, float *tau, const int strideP, const int batch_count)

SYTRD_BATCHED computes the tridiagonal form of a batch of real symmetric matrices A_j.

(This is the blocked version of the algorithm).

The tridiagonal form of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is given by:

formula {"type":"element","name":"formula","attributes":{"id":"89"},"children":[{"type":"text","text":"\\[\n T_j = Q_j' A_j Q_j\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"90"},"children":[{"type":"text","text":"$T_j$"}]} is symmetric tridiagonal and formula {"type":"element","name":"formula","attributes":{"id":"34"},"children":[{"type":"text","text":"$Q_j$"}]} is an orthogonal matrix represented as the product of Householder matrices

formula {"type":"element","name":"formula","attributes":{"id":"91"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Q_j = H_{j_1}H_{j_2}\\cdots H_{j_{n-1}} & \\: \\text{if uplo indicates\nlower, or}\\\\ Q_j = H_{j_{n-1}}H_{j_{n-2}}\\cdots H_{j_1} & \\: \\text{if uplo\nindicates upper.} \\end{array} \\]"}]}

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":"92"},"children":[{"type":"text","text":"\\[\n H_{j_i} = I - \\text{tau}_j[i] \\cdot v_{j_i} v_{j_i}'\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"93"},"children":[{"type":"text","text":"$\\text{tau}_j[i]$"}]} is the corresponding Householder scalar. When uplo indicates lower, 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$"}]}. If uplo indicates upper, the last n-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":"39"},"children":[{"type":"text","text":"$v_{j_i}[i] = 1$"}]}.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A_j is stored. 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 matrices A_j.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j to be factored. On exit, if upper, then the elements on the diagonal and superdiagonal contain the tridiagonal form T_j; the elements above the superdiagonal contain the first i-1 elements of the Householder vectors v_(j_i) stored as columns. If lower, then the elements on the diagonal and subdiagonal contain the tridiagonal form T_j; the elements below the subdiagonal contain the last n-i-1 elements of the Householder vectors v_(j_i) stored as columns.
  • lda: int. lda >= n.
    The leading dimension of A_j.
  • D: pointer to type. Array on the GPU (the size depends on the value of strideD).
    The diagonal elements of T_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 >= n.
  • E: pointer to type. Array on the GPU (the size depends on the value of strideE).
    The off-diagonal elements of T_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 >= n-1.
  • tau: pointer to type. Array on the GPU (the size depends on the value of strideP).
    Contains the vectors tau_j of corresponding Householder scalars.
  • strideP: int.
    Stride from the start of one vector tau_j to the next one tau_(j+1). There is no restriction for the value of strideP. Normal use is strideP >= n-1.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • float * tau
  • const int strideP
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsytrdBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsytrdBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, double *tau, const int strideP, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • double * tau
  • const int strideP
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChetrdBatched​

musolverStatus_t MUSOLVERAPI musolverDnChetrdBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, muComplex *tau, const int strideP, const int batch_count)

HETRD_BATCHED computes the tridiagonal form of a batch of complex hermitian matrices A_j.

(This is the blocked version of the algorithm).

The tridiagonal form of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is given by:

formula {"type":"element","name":"formula","attributes":{"id":"89"},"children":[{"type":"text","text":"\\[\n T_j = Q_j' A_j Q_j\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"90"},"children":[{"type":"text","text":"$T_j$"}]} is Hermitian tridiagonal and formula {"type":"element","name":"formula","attributes":{"id":"34"},"children":[{"type":"text","text":"$Q_j$"}]} is a unitary matrix represented as the product of Householder matrices

formula {"type":"element","name":"formula","attributes":{"id":"91"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Q_j = H_{j_1}H_{j_2}\\cdots H_{j_{n-1}} & \\: \\text{if uplo indicates\nlower, or}\\\\ Q_j = H_{j_{n-1}}H_{j_{n-2}}\\cdots H_{j_1} & \\: \\text{if uplo\nindicates upper.} \\end{array} \\]"}]}

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":"92"},"children":[{"type":"text","text":"\\[\n H_{j_i} = I - \\text{tau}_j[i] \\cdot v_{j_i} v_{j_i}'\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"93"},"children":[{"type":"text","text":"$\\text{tau}_j[i]$"}]} is the corresponding Householder scalar. When uplo indicates lower, 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$"}]}. If uplo indicates upper, the last n-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":"39"},"children":[{"type":"text","text":"$v_{j_i}[i] = 1$"}]}.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the hermitian matrix A_j is stored. 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 matrices A_j.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j to be factored. On exit, if upper, then the elements on the diagonal and superdiagonal contain the tridiagonal form T_j; the elements above the superdiagonal contain the first i-1 elements of the Householder vectors v_(j_i) stored as columns. If lower, then the elements on the diagonal and subdiagonal contain the tridiagonal form T_j; the elements below the subdiagonal contain the last n-i-1 elements of the Householder vectors v_(j_i) stored as columns.
  • lda: int. lda >= n.
    The leading dimension of A_j.
  • D: pointer to real type. Array on the GPU (the size depends on the value of strideD).
    The diagonal elements of T_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 >= n.
  • E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
    The off-diagonal elements of T_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 >= n-1.
  • tau: pointer to type. Array on the GPU (the size depends on the value of strideP).
    Contains the vectors tau_j of corresponding Householder scalars.
  • strideP: int.
    Stride from the start of one vector tau_j to the next one tau_(j+1). There is no restriction for the value of strideP. Normal use is strideP >= n-1.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • muComplex * tau
  • const int strideP
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhetrdBatched​

musolverStatus_t MUSOLVERAPI musolverDnZhetrdBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, muDoubleComplex *tau, const int strideP, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • muDoubleComplex * tau
  • const int strideP
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyev​

musolverStatus_t MUSOLVERAPI musolverDnSsyev(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *D, float *E, int *info)

SYEV computes the eigenvalues and optionally the eigenvectors of a real symmetric matrix A.

The eigenvalues are returned in ascending order. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the eigenvectors of A if they were computed and the algorithm converged; otherwise the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • D: pointer to type. Array on the GPU of dimension n.
    The eigenvalues of A in increasing order.
  • E: pointer to type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with A. On exit, if info > 0, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues of A (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, the algorithm did not converge. i elements of E did not converge to zero.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • float * D
  • float * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyev​

musolverStatus_t MUSOLVERAPI musolverDnDsyev(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *D, double *E, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • double * D
  • double * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheev​

musolverStatus_t MUSOLVERAPI musolverDnCheev(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, float *D, float *E, int *info)

HEEV computes the eigenvalues and optionally the eigenvectors of a Hermitian matrix A.

The eigenvalues are returned in ascending order. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the Hermitian matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the eigenvectors of A if they were computed and the algorithm converged; otherwise the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • D: pointer to real type. Array on the GPU of dimension n.
    The eigenvalues of A in increasing order.
  • E: pointer to real type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with A. On exit, if info > 0, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues of A (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, the algorithm did not converge. i elements of E did not converge to zero.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • float * D
  • float * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheev​

musolverStatus_t MUSOLVERAPI musolverDnZheev(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, double *D, double *E, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • double * D
  • double * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsyevBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count)

SYEV_BATCHED computes the eigenvalues and optionally the eigenvectors of a batch of real symmetric matrices A_j.

The eigenvalues are returned in ascending order. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the eigenvectors of A_j if they were computed and the algorithm converged; otherwise the contents of A_j are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • D: pointer to type. Array on the GPU (the size depends on the value of strideD).
    The eigenvalues of A_j in increasing order.
  • 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 >= n.
  • E: pointer to type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with A_j. On exit, if info[j] > 0, E_j contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues of A_j (not necessarily ordered).
  • 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 >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = i > 0, the algorithm did not converge. i elements of E_j did not converge to zero.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsyevBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevBatched​

musolverStatus_t MUSOLVERAPI musolverDnCheevBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count)

HEEV_BATCHED computes the eigenvalues and optionally the eigenvectors of a batch of Hermitian matrices A_j.

The eigenvalues are returned in ascending order. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the Hermitian matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the eigenvectors of A_j if they were computed and the algorithm converged; otherwise the contents of A_j are destroyed.
  • lda: int. lda >= n.
    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 eigenvalues of A_j in increasing order.
  • 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 >= n.
  • E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with A_j. On exit, if info[j] > 0, E_j contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues of A_j (not necessarily ordered).
  • 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 >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = i > 0, the algorithm did not converge. i elements of E_j did not converge to zero.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevBatched​

musolverStatus_t MUSOLVERAPI musolverDnZheevBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevd​

musolverStatus_t MUSOLVERAPI musolverDnSsyevd(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *D, float *E, int *info, void *buffer)

SYEVD computes the eigenvalues and optionally the eigenvectors of a real symmetric matrix A.

The eigenvalues are returned in ascending order. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the eigenvectors of A if they were computed and the algorithm converged; otherwise the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • D: pointer to type. Array on the GPU of dimension n.
    The eigenvalues of A in increasing order.
  • E: pointer to type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with A. On exit, if info > 0, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues of A (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0 and evect is MUBLAS_EVECT_NONE, the algorithm did not converge. i elements of E did not converge to zero. If info = i > 0 and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)].

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • float * D
  • float * E
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevd​

musolverStatus_t MUSOLVERAPI musolverDnDsyevd(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *D, double *E, int *info, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • double * D
  • double * E
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevd​

musolverStatus_t MUSOLVERAPI musolverDnCheevd(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, float *D, float *E, int *info, void *buffer)

HEEVD computes the eigenvalues and optionally the eigenvectors of a Hermitian matrix A.

The eigenvalues are returned in ascending order. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the Hermitian matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the eigenvectors of A if they were computed and the algorithm converged; otherwise the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • D: pointer to real type. Array on the GPU of dimension n.
    The eigenvalues of A in increasing order.
  • E: pointer to real type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with A. On exit, if info > 0, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues of A (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0 and evect is MUBLAS_EVECT_NONE, the algorithm did not converge. i elements of E did not converge to zero. If info = i > 0 and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)].

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • float * D
  • float * E
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevd​

musolverStatus_t MUSOLVERAPI musolverDnZheevd(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, double *D, double *E, int *info, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • double * D
  • double * E
  • int * info
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSsyevd_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDsyevd_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCheevd_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevd_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZheevd_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevdBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsyevdBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count, void *buffer)

SYEVD_BATCHED computes the eigenvalues and optionally the eigenvectors of a batch of real symmetric matrices A_j.

The eigenvalues are returned in ascending order. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the eigenvectors of A_j if they were computed and the algorithm converged; otherwise the contents of A_j are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • D: pointer to type. Array on the GPU (the size depends on the value of strideD).
    The eigenvalues of A_j in increasing order.
  • 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 >= n.
  • E: pointer to type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with A_j. On exit, if info[j] > 0, E_j contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues of A_j (not necessarily ordered).
  • 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 >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = i > 0 and evect is MUBLAS_EVECT_NONE, the algorithm did not converge. i elements of E_j did not converge to zero. If info[j] = i blockquote {"type":"element","name":"blockquote","attributes":{},"children":[{"type":"element","name":"para","attributes":{},"children":[{"type":"element","name":"zwj","attributes":{},"children":[]},{"type":"text","text":"0 and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an "}]},{"type":"text","text":"\n"}]}eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)].
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevdBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsyevdBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevdBatched​

musolverStatus_t MUSOLVERAPI musolverDnCheevdBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count, void *buffer)

HEEVD_BATCHED computes the eigenvalues and optionally the eigenvectors of a batch of Hermitian matrices A_j.

The eigenvalues are returned in ascending order. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect. The computed eigenvectors are orthonormal.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the Hermitian matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the eigenvectors of A_j if they were computed and the algorithm converged; otherwise the contents of A_j are destroyed.
  • lda: int. lda >= n.
    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 eigenvalues of A_j in increasing order.
  • 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 >= n.
  • E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with A_j. On exit, if info[j] > 0, E_j contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues of A_j (not necessarily ordered).
  • 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 >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = i > 0 and evect is MUBLAS_EVECT_NONE, the algorithm did not converge. i elements of E_j did not converge to zero. If info[j] = i blockquote {"type":"element","name":"blockquote","attributes":{},"children":[{"type":"element","name":"para","attributes":{},"children":[{"type":"element","name":"zwj","attributes":{},"children":[]},{"type":"text","text":"0 and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an "}]},{"type":"text","text":"\n"}]}eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)].
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevdBatched​

musolverStatus_t MUSOLVERAPI musolverDnZheevdBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count, void *buffer)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count
  • void * buffer

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevdBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnSsyevdBatched_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, const int batch_count, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevdBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnDsyevdBatched_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, const int batch_count, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevdBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnCheevdBatched_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, const int batch_count, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevdBatched_bufferSize​

musolverStatus_t MUSOLVERAPI musolverDnZheevdBatched_bufferSize(const mublasEvect evect, const mublasFillMode_t uplo, const int n, const int batch_count, size_t *buffersize)

Parameters:

  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • const int batch_count
  • size_t * buffersize

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevj​

musolverStatus_t MUSOLVERAPI musolverDnSsyevj(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *A, const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, int *info)

SYEVJ computes the eigenvalues and optionally the eigenvectors of a real symmetric matrix A.

The eigenvalues are found using the iterative Jacobi algorithm and are returned in an order depending on the value of esort. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

At the formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]}-th iteration (or "sweep"), formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]} is transformed by a product of Jacobi rotations formula {"type":"element","name":"formula","attributes":{"id":"95"},"children":[{"type":"text","text":"$V$"}]} as

formula {"type":"element","name":"formula","attributes":{"id":"96"},"children":[{"type":"text","text":"\\[\n A^{(k)} = V' A^{(k-1)} V\n \\]"}]}

such that formula {"type":"element","name":"formula","attributes":{"id":"97"},"children":[{"type":"text","text":"$off(A^{(k)}) < off(A^{(k-1)})$"}]}, where formula {"type":"element","name":"formula","attributes":{"id":"98"},"children":[{"type":"text","text":"$A^{(0)} = A$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"99"},"children":[{"type":"text","text":"$off(A^{(k)})$"}]} is the Frobenius norm of the off-diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"100"},"children":[{"type":"text","text":"$A^{(k)}$"}]}. As formula {"type":"element","name":"formula","attributes":{"id":"101"},"children":[{"type":"text","text":"$off(A^{(k)}) \\rightarrow 0$"}]}, the diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"100"},"children":[{"type":"text","text":"$A^{(k)}$"}]} increasingly resemble the eigenvalues of formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]}.

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • esort: mublasEsort.
    Specifies the order of the returned eigenvalues. If esort is MUBLAS_ESORT_ASCENDING, then the eigenvalues are sorted and returned in ascending order. If esort is MUBLAS_ESORT_NONE, then the order of the returned eigenvalues is unspecified.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the eigenvectors of A if they were computed and the algorithm converged; otherwise the contents of A are unchanged.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • abstol: type.
    The absolute tolerance. The algorithm is considered to have converged once off(A) is <= norm(A) * abstol. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to type on the GPU.
    The Frobenius norm of the off-diagonal elements of A (i.e. off(A)) at the final iteration.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to a int on the GPU.
    The actual number of sweeps (iterations) used by the algorithm.
  • W: pointer to type. Array on the GPU of dimension n.
    The eigenvalues of A in increasing order.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = 1, the algorithm did not converge.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevj​

musolverStatus_t MUSOLVERAPI musolverDnDsyevj(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *A, const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevj​

musolverStatus_t MUSOLVERAPI musolverDnCheevj(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, int *info)

HEEVJ computes the eigenvalues and optionally the eigenvectors of a complex Hermitian matrix A.

The eigenvalues are found using the iterative Jacobi algorithm and are returned in an order depending on the value of esort. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

At the formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]}-th iteration (or "sweep"), formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]} is transformed by a product of Jacobi rotations formula {"type":"element","name":"formula","attributes":{"id":"95"},"children":[{"type":"text","text":"$V$"}]} as

formula {"type":"element","name":"formula","attributes":{"id":"96"},"children":[{"type":"text","text":"\\[\n A^{(k)} = V' A^{(k-1)} V\n \\]"}]}

such that formula {"type":"element","name":"formula","attributes":{"id":"97"},"children":[{"type":"text","text":"$off(A^{(k)}) < off(A^{(k-1)})$"}]}, where formula {"type":"element","name":"formula","attributes":{"id":"98"},"children":[{"type":"text","text":"$A^{(0)} = A$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"99"},"children":[{"type":"text","text":"$off(A^{(k)})$"}]} is the Frobenius norm of the off-diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"100"},"children":[{"type":"text","text":"$A^{(k)}$"}]}. As formula {"type":"element","name":"formula","attributes":{"id":"101"},"children":[{"type":"text","text":"$off(A^{(k)}) \\rightarrow 0$"}]}, the diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"100"},"children":[{"type":"text","text":"$A^{(k)}$"}]} increasingly resemble the eigenvalues of formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]}.

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • esort: mublasEsort.
    Specifies the order of the returned eigenvalues. If esort is MUBLAS_ESORT_ASCENDING, then the eigenvalues are sorted and returned in ascending order. If esort is MUBLAS_ESORT_NONE, then the order of the returned eigenvalues is unspecified.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the Hermitian matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the eigenvectors of A if they were computed and the algorithm converged; otherwise the contents of A are unchanged.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • abstol: real type.
    The absolute tolerance. The algorithm is considered to have converged once off(A) is <= norm(A) * abstol. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to real type on the GPU.
    The Frobenius norm of the off-diagonal elements of A (i.e. off(A)) at the final iteration.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to a int on the GPU.
    The actual number of sweeps (iterations) used by the algorithm.
  • W: pointer to real type. Array on the GPU of dimension n.
    The eigenvalues of A in increasing order.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = 1, the algorithm did not converge.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevj​

musolverStatus_t MUSOLVERAPI musolverDnZheevj(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevjBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsyevjBatched(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, const int strideW, int *info, const int batch_count)

SYEVJ_BATCHED computes the eigenvalues and optionally the eigenvectors of a batch of real symmetric matrices A_j.

The eigenvalues are found using the iterative Jacobi algorithm and are returned in an order depending on the value of esort. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

At the formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]}-th iteration (or "sweep"), formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is transformed by a product of Jacobi rotations formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} as

formula {"type":"element","name":"formula","attributes":{"id":"102"},"children":[{"type":"text","text":"\\[\n A_j^{(k)} = V_j' A_j^{(k-1)} V_j\n \\]"}]}

such that formula {"type":"element","name":"formula","attributes":{"id":"103"},"children":[{"type":"text","text":"$off(A_j^{(k)}) < off(A_j^{(k-1)})$"}]}, where formula {"type":"element","name":"formula","attributes":{"id":"104"},"children":[{"type":"text","text":"$A_j^{(0)} =\nA_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"105"},"children":[{"type":"text","text":"$off(A_j^{(k)})$"}]} is the Frobenius norm of the off-diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"106"},"children":[{"type":"text","text":"$A_j^{(k)}$"}]}. As formula {"type":"element","name":"formula","attributes":{"id":"107"},"children":[{"type":"text","text":"$off(A_j^{(k)}) \\rightarrow 0$"}]}, the diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"106"},"children":[{"type":"text","text":"$A_j^{(k)}$"}]} increasingly resemble the eigenvalues of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}.

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • esort: mublasEsort.
    Specifies the order of the returned eigenvalues. If esort is MUBLAS_ESORT_ASCENDING, then the eigenvalues are sorted and returned in ascending order. If esort is MUBLAS_ESORT_NONE, then the order of the returned eigenvalues is unspecified.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the eigenvectors of A_j if they were computed and the algorithm converged; otherwise the contents of A_j are unchanged.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • abstol: type.
    The absolute tolerance. The algorithm is considered to have converged once off(A_j) is <= norm(A_j) * abstol. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to type. Array of batch_count scalars on the GPU.
    The Frobenius norm of the off-diagonal elements of A_j (i.e. off(A_j)) at the final iteration.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to int. Array of batch_count integers on the GPU.
    The actual number of sweeps (iterations) used by the algorithm for each batch instance.
  • W: pointer to type. Array on the GPU (the size depends on the value of strideW).
    The eigenvalues of A_j in increasing order.
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use case is strideW >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = 1, the algorithm did not converge.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevjBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsyevjBatched(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, const int strideW, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevjBatched​

musolverStatus_t MUSOLVERAPI musolverDnCheevjBatched(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, const int strideW, int *info, const int batch_count)

HEEVJ_BATCHED computes the eigenvalues and optionally the eigenvectors of a batch of complex Hermitian matrices A_j.

The eigenvalues are found using the iterative Jacobi algorithm and are returned in an order depending on the value of esort. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

At the formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]}-th iteration (or "sweep"), formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} is transformed by a product of Jacobi rotations formula {"type":"element","name":"formula","attributes":{"id":"79"},"children":[{"type":"text","text":"$V_j$"}]} as

formula {"type":"element","name":"formula","attributes":{"id":"102"},"children":[{"type":"text","text":"\\[\n A_j^{(k)} = V_j' A_j^{(k-1)} V_j\n \\]"}]}

such that formula {"type":"element","name":"formula","attributes":{"id":"103"},"children":[{"type":"text","text":"$off(A_j^{(k)}) < off(A_j^{(k-1)})$"}]}, where formula {"type":"element","name":"formula","attributes":{"id":"104"},"children":[{"type":"text","text":"$A_j^{(0)} =\nA_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"105"},"children":[{"type":"text","text":"$off(A_j^{(k)})$"}]} is the Frobenius norm of the off-diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"106"},"children":[{"type":"text","text":"$A_j^{(k)}$"}]}. As formula {"type":"element","name":"formula","attributes":{"id":"107"},"children":[{"type":"text","text":"$off(A_j^{(k)}) \\rightarrow 0$"}]}, the diagonal elements of formula {"type":"element","name":"formula","attributes":{"id":"106"},"children":[{"type":"text","text":"$A_j^{(k)}$"}]} increasingly resemble the eigenvalues of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}.

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • esort: mublasEsort.
    Specifies the order of the returned eigenvalues. If esort is MUBLAS_ESORT_ASCENDING, then the eigenvalues are sorted and returned in ascending order. If esort is MUBLAS_ESORT_NONE, then the order of the returned eigenvalues is unspecified.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the Hermitian matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the eigenvectors of A_j if they were computed and the algorithm converged; otherwise the contents of A_j are unchanged.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • abstol: real type.
    The absolute tolerance. The algorithm is considered to have converged once off(A_j) is <= norm(A_j) * abstol. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to real type. Array of batch_count scalars on the GPU.
    The Frobenius norm of the off-diagonal elements of A_j (i.e. off(A_j)) at the final iteration.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to int. Array of batch_count integers on the GPU.
    The actual number of sweeps (iterations) used by the algorithm for each batch instance.
  • W: pointer to real type. Array on the GPU (the size depends on the value of strideW).
    The eigenvalues of A_j in increasing order.
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use case is strideW >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = 1, the algorithm did not converge.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevjBatched​

musolverStatus_t MUSOLVERAPI musolverDnZheevjBatched(musolverDnHandle_t handle, const mublasEsort esort, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, const int strideW, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEsort esort
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevx​

musolverStatus_t MUSOLVERAPI musolverDnSsyevx(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, float *A, const int lda, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, float *Z, const int ldz, int *ifail, int *info)

SYEVX computes a set of the eigenvalues and optionally the corresponding eigenvectors of a real symmetric matrix A.

This function computes all the eigenvalues of A, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • vl: type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to a int on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev = n. If erange is MUBLAS_ERANGE_INDEX, nev = iu - il
    1. Otherwise, 0 <= nev <= n.
  • W: pointer to type. Array on the GPU of dimension n.
    The first nev elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • Z: pointer to type. Array on the GPU of dimension ldz*nev.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev columns contain the eigenvectors of A corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev are not known in advance. The user should ensure that Z is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrix Z.
  • ifail: pointer to int. Array on the GPU of dimension n.
    If info = 0, the first nev elements of ifail are zero. Otherwise, contains the indices of those eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, the algorithm did not converge. i columns of Z did not converge.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • float * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevx​

musolverStatus_t MUSOLVERAPI musolverDnDsyevx(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, double *A, const int lda, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, double *Z, const int ldz, int *ifail, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • double * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevx​

musolverStatus_t MUSOLVERAPI musolverDnCheevx(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, muComplex *Z, const int ldz, int *ifail, int *info)

HEEVX computes a set of the eigenvalues and optionally the corresponding eigenvectors of a Hermitian matrix A.

This function computes all the eigenvalues of A, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • vl: real type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: real type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: real type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to a int on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev = n. If erange is MUBLAS_ERANGE_INDEX, nev = iu - il
    1. Otherwise, 0 <= nev <= n.
  • W: pointer to real type. Array on the GPU of dimension n.
    The first nev elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • Z: pointer to type. Array on the GPU of dimension ldz*nev.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev columns contain the eigenvectors of A corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev are not known in advance. The user should ensure that Z is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrix Z.
  • ifail: pointer to int. Array on the GPU of dimension n.
    If info = 0, the first nev elements of ifail are zero. Otherwise, contains the indices of those eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, the algorithm did not converge. i columns of Z did not converge.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • muComplex * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevx​

musolverStatus_t MUSOLVERAPI musolverDnZheevx(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, muDoubleComplex *Z, const int ldz, int *ifail, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • muDoubleComplex * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsyevxBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsyevxBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, const int strideW, float *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

SYEVX_BATCHED computes a set of the eigenvalues and optionally the corresponding eigenvectors of a batch of real symmetric matrices A_j.

This function computes all the eigenvalues of A_j, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the contents of A_j are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • vl: type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to int. Array of batch_count integers on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev_j = n. If erange is MUBLAS_ERANGE_INDEX, nev_j = iu - il + 1. Otherwise, 0 <= nev_j <= n.
  • W: pointer to type. Array on the GPU (the size depends on the value of strideW).
    The first nev_j elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use case is strideW >= n.
  • Z: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldz*nev_j.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev_j columns contain the eigenvectors of A_j corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev_j are not known in advance. The user should ensure that Z_j is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrices Z_j.
  • ifail: pointer to int. Array on the GPU (the size depends on the value of strideF).
    If info[j] = 0, the first nev_j elements of ifail_j are zero. Otherwise, contains the indices of those eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • strideF: int.
    Stride from the start of one vector ifail_j to the next one ifail_(j+1). There is no restriction for the value of strideF. Normal use case is strideF >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = i > 0, the algorithm did not converge. i columns of Z_j did not converge.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • const int strideW
  • float *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsyevxBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsyevxBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, const int strideW, double *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • const int strideW
  • double *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCheevxBatched​

musolverStatus_t MUSOLVERAPI musolverDnCheevxBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, const int strideW, muComplex *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

HEEVX_BATCHED computes a set of the eigenvalues and optionally the corresponding eigenvectors of a batch of Hermitian matrices A_j.

This function computes all the eigenvalues of A_j, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the symmetric matrices A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    Number of rows and columns of matrices A_j.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the contents of A_j are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • vl: real type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: real type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: real type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to int. Array of batch_count integers on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev_j = n. If erange is MUBLAS_ERANGE_INDEX, nev_j = iu - il + 1. Otherwise, 0 <= nev_j <= n.
  • W: pointer to real type. Array on the GPU (the size depends on the value of strideW).
    The first nev_j elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use case is strideW >= n.
  • Z: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldz*nev_j.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev_j columns contain the eigenvectors of A_j corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev_j are not known in advance. The user should ensure that Z_j is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrices Z_j.
  • ifail: pointer to int. Array on the GPU (the size depends on the value of strideF).
    If info[j] = 0, the first nev_j elements of ifail_j are zero. Otherwise, contains the indices of those eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • strideF: int.
    Stride from the start of one vector ifail_j to the next one ifail_(j+1). There is no restriction for the value of strideF. Normal use case is strideF >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for matrix A_j. If info[j] = i > 0, the algorithm did not converge. i columns of Z_j did not converge.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • const int strideW
  • muComplex *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZheevxBatched​

musolverStatus_t MUSOLVERAPI musolverDnZheevxBatched(musolverDnHandle_t handle, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, const int strideW, muDoubleComplex *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • const int strideW
  • muDoubleComplex *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygv​

musolverStatus_t MUSOLVERAPI musolverDnSsygv(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *B, const int ldb, float *D, float *E, int *info)

SYGV computes the eigenvalues and (optionally) eigenvectors of a real generalized symmetric-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"109"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^T B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^T B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the symmetric matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • D: pointer to type. Array on the GPU of dimension n.
    On exit, the eigenvalues in increasing order.
  • E: pointer to type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with the reduced eigenvalue problem. On exit, if 0 < info <= n, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i <= n, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygv​

musolverStatus_t MUSOLVERAPI musolverDnDsygv(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *B, const int ldb, double *D, double *E, int *info)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegv​

musolverStatus_t MUSOLVERAPI musolverDnChegv(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, muComplex *B, const int ldb, float *D, float *E, int *info)

HEGV computes the eigenvalues and (optionally) eigenvectors of a complex generalized hermitian-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"110"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^H B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^H B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the hermitian matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • D: pointer to real type. Array on the GPU of dimension n.
    On exit, the eigenvalues in increasing order.
  • E: pointer to real type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with the reduced eigenvalue problem. On exit, if 0 < info <= n, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i <= n, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • muComplex * B
  • const int ldb
  • float * D
  • float * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegv​

musolverStatus_t MUSOLVERAPI musolverDnZhegv(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, muDoubleComplex *B, const int ldb, double *D, double *E, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • muDoubleComplex * B
  • const int ldb
  • double * D
  • double * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsygvBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *const B[], const int ldb, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count)

SYGV_BATCHED computes the eigenvalues and (optionally) eigenvectors of a batch of real generalized symmetric-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"113"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^T B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^T B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the symmetric matrices A_j. On exit, if evect is original, the normalized matrix Z_j of eigenvectors. If evect is none, then the upper or lower triangular part of the matrices A_j (including the diagonal) are destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • B: array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • D: pointer to type. Array on the GPU (the size depends on the value of strideD).
    On exit, the eigenvalues in increasing order.
  • 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 is strideD >= n.
  • E: pointer to type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with the jth reduced eigenvalue problem. On exit, if 0 < info[j] <= n, E_j contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • 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 is strideE >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch instance j. If info[j] = i <= n, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float *const B
  • const int ldb
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsygvBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *const B[], const int ldb, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double *const B
  • const int ldb
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvBatched​

musolverStatus_t MUSOLVERAPI musolverDnChegvBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, muComplex *const B[], const int ldb, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count)

HEGV_BATCHED computes the eigenvalues and (optionally) eigenvectors of a batch of complex generalized hermitian-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"114"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^H B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^H B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the hermitian matrices A_j. On exit, if evect is original, the normalized matrix Z_j of eigenvectors. If evect is none, then the upper or lower triangular part of the matrices A_j (including the diagonal) are destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • B: array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • D: pointer to real type. Array on the GPU (the size depends on the value of strideD).
    On exit, the eigenvalues in increasing order.
  • 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 is strideD >= n.
  • E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with the jth reduced eigenvalue problem. On exit, if 0 < info[j] <= n, it contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • 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 is strideE >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch j. If info[j] = i <= n, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • muComplex *const B
  • const int ldb
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvBatched​

musolverStatus_t MUSOLVERAPI musolverDnZhegvBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, muDoubleComplex *const B[], const int ldb, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • muDoubleComplex *const B
  • const int ldb
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvd​

musolverStatus_t MUSOLVERAPI musolverDnSsygvd(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *B, const int ldb, float *D, float *E, int *info)

SYGVD computes the eigenvalues and (optionally) eigenvectors of a real generalized symmetric-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"109"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^T B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^T B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the symmetric matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • D: pointer to type. Array on the GPU of dimension n.
    On exit, the eigenvalues in increasing order.
  • E: pointer to type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with the reduced eigenvalue problem. On exit, if 0 < info <= n, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i <= n and evect is MUBLAS_EVECT_NONE, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info = i <= n and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)]. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvd​

musolverStatus_t MUSOLVERAPI musolverDnDsygvd(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *B, const int ldb, double *D, double *E, int *info)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvd​

musolverStatus_t MUSOLVERAPI musolverDnChegvd(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, muComplex *B, const int ldb, float *D, float *E, int *info)

HEGVD computes the eigenvalues and (optionally) eigenvectors of a complex generalized hermitian-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"110"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^H B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^H B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the hermitian matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • D: pointer to real type. Array on the GPU of dimension n.
    On exit, the eigenvalues in increasing order.
  • E: pointer to real type. Array on the GPU of dimension n.
    This array is used to work internally with the tridiagonal matrix T associated with the reduced eigenvalue problem. On exit, if 0 < info <= n, it contains the unconverged off-diagonal elements of T (or properly speaking, a tridiagonal matrix equivalent to T). The diagonal elements of this matrix are in D; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i <= n and evect is MUBLAS_EVECT_NONE, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info = i <= n and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)]. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • muComplex * B
  • const int ldb
  • float * D
  • float * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvd​

musolverStatus_t MUSOLVERAPI musolverDnZhegvd(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, muDoubleComplex *B, const int ldb, double *D, double *E, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • muDoubleComplex * B
  • const int ldb
  • double * D
  • double * E
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsygvdBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *const B[], const int ldb, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count)

SYGVD_BATCHED computes the eigenvalues and (optionally) eigenvectors of a batch of real generalized symmetric-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"113"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^T B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^T B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the symmetric matrices A_j. On exit, if evect is original, the normalized matrix Z_j of eigenvectors. If evect is none, then the upper or lower triangular part of the matrices A_j (including the diagonal) are destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • B: array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • D: pointer to type. Array on the GPU (the size depends on the value of strideD).
    On exit, the eigenvalues in increasing order.
  • 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 is strideD >= n.
  • E: pointer to type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with the jth reduced eigenvalue problem. On exit, if 0 < info[j] <= n, it contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • 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 is strideE >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch j. If info[j] = i <= n and evect is MUBLAS_EVECT_NONE, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info[j] = i <= n and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)]. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float *const B
  • const int ldb
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsygvdBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *const B[], const int ldb, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double *const B
  • const int ldb
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnChegvdBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, muComplex *const B[], const int ldb, float *D, const int strideD, float *E, const int strideE, int *info, const int batch_count)

HEGVD_BATCHED computes the eigenvalues and (optionally) eigenvectors of a batch of complex generalized hermitian-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed using a divide-and-conquer algorithm, depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"114"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^H B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^H B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the hermitian matrices A_j. On exit, if evect is original, the normalized matrix Z_j of eigenvectors. If evect is none, then the upper or lower triangular part of the matrices A_j (including the diagonal) are destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • B: array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • D: pointer to real type. Array on the GPU (the size depends on the value of strideD).
    On exit, the eigenvalues in increasing order.
  • 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 is strideD >= n.
  • E: pointer to real type. Array on the GPU (the size depends on the value of strideE).
    This array is used to work internally with the tridiagonal matrix T_j associated with the jth reduced eigenvalue problem. On exit, if 0 < info[j] <= n, it contains the unconverged off-diagonal elements of T_j (or properly speaking, a tridiagonal matrix equivalent to T_j). The diagonal elements of this matrix are in D_j; those that converged correspond to a subset of the eigenvalues (not necessarily ordered).
  • 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 is strideE >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch j. If info[j] = i <= n and evect is MUBLAS_EVECT_NONE, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If info[j] = i <= n and evect is MUBLAS_EVECT_ORIGINAL, the algorithm failed to compute an eigenvalue in the submatrix from [i/(n+1), i/(n+1)] to [i%(n+1), i%(n+1)]. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • muComplex *const B
  • const int ldb
  • float * D
  • const int strideD
  • float * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvdBatched​

musolverStatus_t MUSOLVERAPI musolverDnZhegvdBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, muDoubleComplex *const B[], const int ldb, double *D, const int strideD, double *E, const int strideE, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • muDoubleComplex *const B
  • const int ldb
  • double * D
  • const int strideD
  • double * E
  • const int strideE
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvj​

musolverStatus_t MUSOLVERAPI musolverDnSsygvj(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *B, const int ldb, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, int *info)

SYGVJ computes the eigenvalues and (optionally) eigenvectors of a real generalized symmetric-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvalues are found using the iterative Jacobi algorithm, and are returned in ascending order. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"109"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^T B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^T B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the symmetric matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • abstol: type.
    The absolute tolerance. The algorithm is considered to have converged once off(T) is <= norm(T) * abstol, where T is the matrix obtained by reduction to standard form. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to type on the GPU.
    The Frobenius norm of the off-diagonal elements of T (i.e. off(T)) at the final iteration, where T is the matrix obtained by reduction to standard form.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to a int on the GPU.
    The actual number of sweeps (iterations) used by the algorithm.
  • W: pointer to type. Array on the GPU of dimension n.
    On exit, the eigenvalues in increasing order.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = 1, the algorithm did not converge. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • float * B
  • const int ldb
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvj​

musolverStatus_t MUSOLVERAPI musolverDnDsygvj(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *B, const int ldb, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • double * B
  • const int ldb
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvj​

musolverStatus_t MUSOLVERAPI musolverDnChegvj(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, muComplex *B, const int ldb, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, int *info)

HEGVJ computes the eigenvalues and (optionally) eigenvectors of a complex generalized hermitian-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvalues are found using the iterative Jacobi algorithm, and are returned in ascending order. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"110"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^H B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^H B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the hermitian matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • abstol: type.
    The absolute tolerance. The algorithm is considered to have converged once off(T) is <= norm(T) * abstol, where T is the matrix obtained by reduction to standard form. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to type on the GPU.
    The Frobenius norm of the off-diagonal elements of T (i.e. off(T)) at the final iteration, where T is the matrix obtained by reduction to standard form.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to a int on the GPU.
    The actual number of sweeps (iterations) used by the algorithm.
  • W: pointer to real type. Array on the GPU of dimension n.
    On exit, the eigenvalues in increasing order.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = 1, the algorithm did not converge. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • muComplex * B
  • const int ldb
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvj​

musolverStatus_t MUSOLVERAPI musolverDnZhegvj(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, muDoubleComplex *B, const int ldb, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • muDoubleComplex * B
  • const int ldb
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvjBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsygvjBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *const B[], const int ldb, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, const int strideW, int *info, const int batch_count)

SYGVJ_BATCHED computes the eigenvalues and (optionally) eigenvectors of a batch of real generalized symmetric-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvalues are found using the iterative Jacobi algorithm, and are returned in ascending order. The eigenvectors are computed depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"113"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^T B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^T B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the symmetric matrices A_j. On exit, if evect is original, the normalized matrix Z_j of eigenvectors. If evect is none, then the upper or lower triangular part of the matrices A_j (including the diagonal) are destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • B: array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • abstol: type.
    The absolute tolerance. The algorithm is considered to have converged once off(T_j) is <= norm(T_j) * abstol, where T_j is the matrix obtained by reduction to standard form. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to type on the GPU.
    The Frobenius norm of the off-diagonal elements of T_j (i.e. off(T_j)) at the final iteration, where T is the matrix obtained by reduction to standard form.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to int. Array of batch_count integers on the GPU.
    The actual number of sweeps (iterations) used by the algorithm for each batch instance.
  • W: pointer to type. Array on the GPU (the size depends on the value of strideW).
    On exit, the eigenvalues in increasing order.
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use is strideW >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch instance j. If info[j] = 1, the algorithm did not converge. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float *const B
  • const int ldb
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvjBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsygvjBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *const B[], const int ldb, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, const int strideW, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double *const B
  • const int ldb
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvjBatched​

musolverStatus_t MUSOLVERAPI musolverDnChegvjBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, muComplex *const B[], const int ldb, const float abstol, float *residual, const int max_sweeps, int *n_sweeps, float *W, const int strideW, int *info, const int batch_count)

HEGVJ_BATCHED computes the eigenvalues and (optionally) eigenvectors of a batch of complex generalized hermitian-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvalues are found using the iterative Jacobi algorithm, and are returned in ascending order. The eigenvectors are computed depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"114"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^H B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^H B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

注意:In order to carry out calculations, this method may synchronize the stream contained within the musolverDnHandle_t .

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the hermitian matrices A_j. On exit, if evect is original, the normalized matrix Z_j of eigenvectors. If evect is none, then the upper or lower triangular part of the matrices A_j (including the diagonal) are destroyed, depending on the value of uplo.
  • lda: int. lda >= n.
    Specifies the leading dimension of A_j.
  • B: array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • abstol: type.
    The absolute tolerance. The algorithm is considered to have converged once off(T_j) is <= norm(T_j) * abstol, where T_j is the matrix obtained by reduction to standard form. If abstol <= 0, then the tolerance will be set to machine precision.
  • residual: pointer to type on the GPU.
    The Frobenius norm of the off-diagonal elements of T_j (i.e. off(T_j)) at the final iteration, where T is the matrix obtained by reduction to standard form.
  • max_sweeps: int. max_sweeps > 0.
    Maximum number of sweeps (iterations) to be used by the algorithm.
  • n_sweeps: pointer to int. Array of batch_count integers on the GPU.
    The actual number of sweeps (iterations) used by the algorithm for each batch instance.
  • W: pointer to real type. Array on the GPU (the size depends on the value of strideW).
    On exit, the eigenvalues in increasing order.
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use is strideW >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch j. If info[j] = 1, the algorithm did not converge. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • muComplex *const B
  • const int ldb
  • const float abstol
  • float * residual
  • const int max_sweeps
  • int * n_sweeps
  • float * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvjBatched​

musolverStatus_t MUSOLVERAPI musolverDnZhegvjBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, muDoubleComplex *const B[], const int ldb, const double abstol, double *residual, const int max_sweeps, int *n_sweeps, double *W, const int strideW, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • muDoubleComplex *const B
  • const int ldb
  • const double abstol
  • double * residual
  • const int max_sweeps
  • int * n_sweeps
  • double * W
  • const int strideW
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvx​

musolverStatus_t MUSOLVERAPI musolverDnSsygvx(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, float *A, const int lda, float *B, const int ldb, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, float *Z, const int ldz, int *ifail, int *info)

SYGVX computes a set of the eigenvalues and optionally the corresponding eigenvectors of a real generalized symmetric-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"109"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^T B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^T B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

This function computes all the eigenvalues of A, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • vl: type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to a int on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev = n. If erange is MUBLAS_ERANGE_INDEX, nev = iu - il
    1. Otherwise, 0 <= nev <= n.
  • W: pointer to type. Array on the GPU of dimension n.
    The first nev elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • Z: pointer to type. Array on the GPU of dimension ldz*nev.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev columns contain the eigenvectors of A corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev are not known in advance. The user should ensure that Z is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrix Z.
  • ifail: pointer to int. Array on the GPU of dimension n.
    If info = 0, the first nev elements of ifail are zero. If info = i <= n, ifail contains the indices of the i eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i <= n, i columns of Z did not converge. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • float * B
  • const int ldb
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • float * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvx​

musolverStatus_t MUSOLVERAPI musolverDnDsygvx(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, double *A, const int lda, double *B, const int ldb, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, double *Z, const int ldz, int *ifail, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • double * B
  • const int ldb
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • double * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvx​

musolverStatus_t MUSOLVERAPI musolverDnChegvx(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, muComplex *B, const int ldb, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, muComplex *Z, const int ldz, int *ifail, int *info)

HEGVX computes a set of the eigenvalues and optionally the corresponding eigenvectors of a complex generalized hermitian-definite eigenproblem.

The problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"108"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A X = \\lambda B X & \\: \\text{1st form,}\\\\\n A B X = \\lambda X & \\: \\text{2nd form, or}\\\\\n B A X = \\lambda X & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"110"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z^H B Z=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z^H B^{-1} Z=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

This function computes all the eigenvalues of A, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblem.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the matrix A. On exit, the contents of A are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrix A.
  • B: pointer to type. Array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrix B. On exit, the triangular factor of B as returned by POTRF.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B.
  • vl: real type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: real type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: real type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to a int on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev = n. If erange is MUBLAS_ERANGE_INDEX, nev = iu - il
    1. Otherwise, 0 <= nev <= n.
  • W: pointer to real type. Array on the GPU of dimension n.
    The first nev elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • Z: pointer to type. Array on the GPU of dimension ldz*nev.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev columns contain the eigenvectors of A corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev are not known in advance. The user should ensure that Z is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrix Z.
  • ifail: pointer to int. Array on the GPU of dimension n.
    If info = 0, the first nev elements of ifail are zero. If info = i <= n, ifail contains the indices of the i eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i <= n, i columns of Z did not converge. If info = n + i, the leading minor of order i of B is not positive definite.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • muComplex * B
  • const int ldb
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • muComplex * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvx​

musolverStatus_t MUSOLVERAPI musolverDnZhegvx(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, muDoubleComplex *B, const int ldb, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, muDoubleComplex *Z, const int ldz, int *ifail, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • muDoubleComplex * B
  • const int ldb
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • muDoubleComplex * Z
  • const int ldz
  • int * ifail
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsygvxBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsygvxBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, float *const B[], const int ldb, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, const int strideW, float *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

SYGVX_BATCHED computes a set of the eigenvalues and optionally the corresponding eigenvectors of a batch of real generalized symmetric-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"113"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^T B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^T B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

This function computes all the eigenvalues of A, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the contents of A_j are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • B: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the symmetric positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • vl: type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to int. Array of batch_count integers on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev_j = n. If erange is MUBLAS_ERANGE_INDEX, nev_j = iu - il + 1. Otherwise, 0 <= nev_j <= n.
  • W: pointer to type. Array on the GPU (the size depends on the value of strideW).
    The first nev_j elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use case is strideW >= n.
  • Z: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldz*nev_j.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev_j columns contain the eigenvectors of A_j corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev_j are not known in advance. The user should ensure that Z_j is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrices Z_j.
  • ifail: pointer to int. Array on the GPU (the size depends on the value of strideF).
    If info[j] = 0, the first nev_j elements of ifail_j are zero. If info[j] = i <= n, ifail_j contains the indices of the i eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • strideF: int.
    Stride from the start of one vector ifail_j to the next one ifail_(j+1). There is no restriction for the value of strideF. Normal use case is strideF >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch instance j. If info[j] = i <= n, i columns of Z did not converge. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • float *const B
  • const int ldb
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • const int strideW
  • float *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsygvxBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsygvxBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, double *const B[], const int ldb, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, const int strideW, double *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • double *const B
  • const int ldb
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • const int strideW
  • double *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnChegvxBatched​

musolverStatus_t MUSOLVERAPI musolverDnChegvxBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, muComplex *const B[], const int ldb, const float vl, const float vu, const int il, const int iu, const float abstol, int *nev, float *W, const int strideW, muComplex *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

HEGVX_BATCHED computes a set of the eigenvalues and optionally the corresponding eigenvectors of a batch of complex generalized hermitian-definite eigenproblems.

For each instance in the batch, the problem solved by this function is either of the form

formula {"type":"element","name":"formula","attributes":{"id":"111"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j X_j = \\lambda B_j X_j & \\: \\text{1st form,}\\\\\n A_j B_j X_j = \\lambda X_j & \\: \\text{2nd form, or}\\\\\n B_j A_j X_j = \\lambda X_j & \\: \\text{3rd form,}\n \\end{array}\n \\]"}]}

depending on the value of itype. The eigenvectors are computed depending on the value of evect.

When computed, the matrix formula {"type":"element","name":"formula","attributes":{"id":"112"},"children":[{"type":"text","text":"$Z_j$"}]} of eigenvectors is normalized as follows:

formula {"type":"element","name":"formula","attributes":{"id":"114"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n Z_j^H B_j Z_j=I & \\: \\text{if 1st or 2nd form, or}\\\\\n Z_j^H B_j^{-1} Z_j=I & \\: \\text{if 3rd form.}\n \\end{array}\n \\]"}]}

This function computes all the eigenvalues of A, all the eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]}, or the il-th through iu-th eigenvalues, depending on the value of erange. If evect is MUBLAS_EVECT_ORIGINAL, the eigenvectors for these eigenvalues will be computed as well.

Parameters:

  • handle: musolverDnHandle_t .
  • itype: mublasEform.
    Specifies the form of the generalized eigenproblems.
  • evect: mublasEvect.
    Specifies whether the eigenvectors are to be computed. If evect is MUBLAS_EVECT_ORIGINAL, then the eigenvectors are computed. MUBLAS_EVECT_TRIDIAGONAL is not supported.
  • erange: mublasErange.
    Specifies the type of range or interval of the eigenvalues to be computed.
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower parts of the matrices A_j and B_j are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_j and B_j are not used.
  • n: int. n >= 0.
    The matrix dimensions.
  • A: Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n.
    On entry, the matrices A_j. On exit, the contents of A_j are destroyed.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • B: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n.
    On entry, the hermitian positive definite matrices B_j. On exit, the triangular factor of B_j as returned by POTRF_BATCHED.
  • ldb: int. ldb >= n.
    Specifies the leading dimension of B_j.
  • vl: real type. vl < vu.
    The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • vu: real type. vl < vu.
    The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues within a set of indices.
  • il: int. il = 1 if n = 0; 1 <= il <= iu otherwise.
    The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A or the eigenvalues in a half-open interval.
  • iu: int. iu = 0 if n = 0; 1 <= il <= iu otherwise..
    The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of T or the eigenvalues in a half-open interval.
  • abstol: real type.
    The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of T will be used as tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold; this is the tolerance that could get the most accurate results.
  • nev: pointer to int. Array of batch_count integers on the GPU.
    The total number of eigenvalues found. If erange is MUBLAS_ERANGE_ALL, nev_j = n. If erange is MUBLAS_ERANGE_INDEX, nev_j = iu - il + 1. Otherwise, 0 <= nev_j <= n.
  • W: pointer to real type. Array on the GPU (the size depends on the value of strideW).
    The first nev_j elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations).
  • strideW: int.
    Stride from the start of one vector W_j to the next one W_(j+1). There is no restriction for the value of strideW. Normal use case is strideW >= n.
  • Z: Array of pointers to type. Each pointer points to an array on the GPU of dimension ldz*nev_j.
    On exit, if evect is not MUBLAS_EVECT_NONE and info = 0, the first nev_j columns contain the eigenvectors of A_j corresponding to the output eigenvalues. Not referenced if evect is MUBLAS_EVECT_NONE. Note: If erange is mublas_range_value, then the values of nev_j are not known in advance. The user should ensure that Z_j is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
  • ldz: int. ldz >= n.
    Specifies the leading dimension of matrices Z_j.
  • ifail: pointer to int. Array on the GPU (the size depends on the value of strideF).
    If info[j] = 0, the first nev_j elements of ifail_j are zero. If info[j] = i <= n, ifail_j contains the indices of the i eigenvectors that failed to converge. Not referenced if evect is MUBLAS_EVECT_NONE.
  • strideF: int.
    Stride from the start of one vector ifail_j to the next one ifail_(j+1). There is no restriction for the value of strideF. Normal use case is strideF >= n.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit of batch instance j. If info[j] = i <= n, i columns of Z did not converge. If info[j] = n + i, the leading minor of order i of B_j is not positive definite.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • muComplex *const B
  • const int ldb
  • const float vl
  • const float vu
  • const int il
  • const int iu
  • const float abstol
  • int * nev
  • float * W
  • const int strideW
  • muComplex *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZhegvxBatched​

musolverStatus_t MUSOLVERAPI musolverDnZhegvxBatched(musolverDnHandle_t handle, const mublasEform itype, const mublasEvect evect, const mublasErange erange, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, muDoubleComplex *const B[], const int ldb, const double vl, const double vu, const int il, const int iu, const double abstol, int *nev, double *W, const int strideW, muDoubleComplex *const Z[], const int ldz, int *ifail, const int strideF, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasEform itype
  • const mublasEvect evect
  • const mublasErange erange
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • muDoubleComplex *const B
  • const int ldb
  • const double vl
  • const double vu
  • const int il
  • const int iu
  • const double abstol
  • int * nev
  • double * W
  • const int strideW
  • muDoubleComplex *const Z
  • const int ldz
  • int * ifail
  • const int strideF
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnStrtri​

musolverStatus_t MUSOLVERAPI musolverDnStrtri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, float *A, const int lda, int *info)

TRTRI inverts a triangular n-by-n matrix A.

A can be upper or lower triangular, depending on the value of uplo, and unit or non-unit triangular, depending on the value of diag.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the matrix A is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.
  • diag: mublasDiagType_t.
    If diag indicates unit, then the diagonal elements of A are not referenced and assumed to be one.
  • n: int. n >= 0.
    The number of rows and columns of the matrix A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the triangular matrix. On exit, the inverse of A if info = 0.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, A is singular. A[i,i] is the first zero element in the diagonal.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • float * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDtrtri​

musolverStatus_t MUSOLVERAPI musolverDnDtrtri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, double *A, const int lda, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • double * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCtrtri​

musolverStatus_t MUSOLVERAPI musolverDnCtrtri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, muComplex *A, const int lda, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • muComplex * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZtrtri​

musolverStatus_t MUSOLVERAPI musolverDnZtrtri(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, muDoubleComplex *A, const int lda, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • muDoubleComplex * A
  • const int lda
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnStrtriBatched​

musolverStatus_t MUSOLVERAPI musolverDnStrtriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, float *const A[], const int lda, int *info, const int batch_count)

TRTRI_BATCHED inverts a batch of triangular n-by-n matrices formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}.

formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]} can be upper or lower triangular, depending on the value of uplo, and unit or non-unit triangular, depending on the value of diag.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the matrices A_j are stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • diag: mublasDiagType_t.
    If diag indicates unit, then the diagonal elements of matrices A_j are not referenced and assumed to be one.
  • n: int. n >= 0.
    The number of rows and 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 triangular matrices A_j. On exit, the inverses of A_j if info[j] = 0.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • info: pointer to int. Array of batch_count integers on the GPU.
    If info[j] = 0, successful exit for inversion of A_j. If info[j] = i > 0, A_j is singular. A_j[i,i] is the first zero element in the diagonal.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • float *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDtrtriBatched​

musolverStatus_t MUSOLVERAPI musolverDnDtrtriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, double *const A[], const int lda, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • double *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCtrtriBatched​

musolverStatus_t MUSOLVERAPI musolverDnCtrtriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, muComplex *const A[], const int lda, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • muComplex *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZtrtriBatched​

musolverStatus_t MUSOLVERAPI musolverDnZtrtriBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const mublasDiagType_t diag, const int n, muDoubleComplex *const A[], const int lda, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const mublasDiagType_t diag
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsytrf​

musolverStatus_t MUSOLVERAPI musolverDnSsytrf(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *A, const int lda, int *ipiv, int *info)

SYTRF computes the factorization of a symmetric indefinite matrix formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]} using Bunch-Kaufman diagonal pivoting.

(This is the blocked version of the algorithm).

The factorization has the form

formula {"type":"element","name":"formula","attributes":{"id":"115"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A = U D U^T & \\: \\text{or}\\\\\n A = L D L^T &\n \\end{array}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"73"},"children":[{"type":"text","text":"$U$"}]} or formula {"type":"element","name":"formula","attributes":{"id":"74"},"children":[{"type":"text","text":"$L$"}]} is a product of permutation and unit upper/lower triangular matrices (depending on the value of uplo), and formula {"type":"element","name":"formula","attributes":{"id":"116"},"children":[{"type":"text","text":"$D$"}]} is a symmetric block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks formula {"type":"element","name":"formula","attributes":{"id":"117"},"children":[{"type":"text","text":"$D(k)$"}]}.

Specifically, formula {"type":"element","name":"formula","attributes":{"id":"73"},"children":[{"type":"text","text":"$U$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"74"},"children":[{"type":"text","text":"$L$"}]} are computed as

formula {"type":"element","name":"formula","attributes":{"id":"118"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n U = P(n) U(n) \\cdots P(k) U(k) \\cdots & \\: \\text{and}\\\\\n L = P(1) L(1) \\cdots P(k) L(k) \\cdots &\n \\end{array}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} decreases from formula {"type":"element","name":"formula","attributes":{"id":"119"},"children":[{"type":"text","text":"$n$"}]} to 1 (increases from 1 to formula {"type":"element","name":"formula","attributes":{"id":"119"},"children":[{"type":"text","text":"$n$"}]}) in steps of 1 or 2, depending on the order of block formula {"type":"element","name":"formula","attributes":{"id":"117"},"children":[{"type":"text","text":"$D(k)$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"120"},"children":[{"type":"text","text":"$P(k)$"}]} is a permutation matrix defined by formula {"type":"element","name":"formula","attributes":{"id":"121"},"children":[{"type":"text","text":"$ipiv[k]$"}]}. If we let formula {"type":"element","name":"formula","attributes":{"id":"122"},"children":[{"type":"text","text":"$s$"}]} denote the order of block formula {"type":"element","name":"formula","attributes":{"id":"117"},"children":[{"type":"text","text":"$D(k)$"}]}, then formula {"type":"element","name":"formula","attributes":{"id":"123"},"children":[{"type":"text","text":"$U(k)$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"124"},"children":[{"type":"text","text":"$L(k)$"}]} are unit upper/lower triangular matrices defined as

formula {"type":"element","name":"formula","attributes":{"id":"125"},"children":[{"type":"text","text":"\\[\n U(k) = \\left[ \\begin{array}{ccc}\n I_{k-s} & v & 0 \\\\\n 0 & I_s & 0 \\\\\n 0 & 0 & I_{n-k}\n \\end{array} \\right]\n \\]"}]}

and

formula {"type":"element","name":"formula","attributes":{"id":"126"},"children":[{"type":"text","text":"\\[\n L(k) = \\left[ \\begin{array}{ccc}\n I_{k-1} & 0 & 0 \\\\\n 0 & I_s & 0 \\\\\n 0 & v & I_{n-k-s+1}\n \\end{array} \\right].\n \\]"}]}

If formula {"type":"element","name":"formula","attributes":{"id":"127"},"children":[{"type":"text","text":"$s = 1$"}]}, then formula {"type":"element","name":"formula","attributes":{"id":"117"},"children":[{"type":"text","text":"$D(k)$"}]} is stored in formula {"type":"element","name":"formula","attributes":{"id":"128"},"children":[{"type":"text","text":"$A[k,k]$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"129"},"children":[{"type":"text","text":"$v$"}]} is stored in the upper/lower part of column formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} of formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]}. If formula {"type":"element","name":"formula","attributes":{"id":"130"},"children":[{"type":"text","text":"$s = 2$"}]} and uplo is upper, then formula {"type":"element","name":"formula","attributes":{"id":"117"},"children":[{"type":"text","text":"$D(k)$"}]} is stored in formula {"type":"element","name":"formula","attributes":{"id":"131"},"children":[{"type":"text","text":"$A[k-1,k-1]$"}]}, formula {"type":"element","name":"formula","attributes":{"id":"132"},"children":[{"type":"text","text":"$A[k-1,k]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"128"},"children":[{"type":"text","text":"$A[k,k]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"129"},"children":[{"type":"text","text":"$v$"}]} is stored in the upper parts of columns formula {"type":"element","name":"formula","attributes":{"id":"133"},"children":[{"type":"text","text":"$k-1$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} of formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]}. If formula {"type":"element","name":"formula","attributes":{"id":"130"},"children":[{"type":"text","text":"$s = 2$"}]} and uplo is lower, then formula {"type":"element","name":"formula","attributes":{"id":"117"},"children":[{"type":"text","text":"$D(k)$"}]} is stored in formula {"type":"element","name":"formula","attributes":{"id":"128"},"children":[{"type":"text","text":"$A[k,k]$"}]}, formula {"type":"element","name":"formula","attributes":{"id":"134"},"children":[{"type":"text","text":"$A[k+1,k]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"135"},"children":[{"type":"text","text":"$A[k+1,k+1]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"129"},"children":[{"type":"text","text":"$v$"}]} is stored in the lower parts of columns formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"136"},"children":[{"type":"text","text":"$k+1$"}]} of formula {"type":"element","name":"formula","attributes":{"id":"71"},"children":[{"type":"text","text":"$A$"}]}.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the matrix A is stored. 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 A.
  • A: pointer to type. Array on the GPU of dimension lda*n.
    On entry, the symmetric matrix A to be factored. On exit, the block diagonal matrix D and the multipliers needed to compute U or L.
  • lda: int. lda >= n.
    Specifies the leading dimension of A.
  • ipiv: pointer to int. Array on the GPU of dimension n.
    The vector of pivot indices. Elements of ipiv are 1-based indices. For 1 <= k <= n, if ipiv[k] > 0 then rows and columns k and ipiv[k] were interchanged and D[k,k] is a 1-by-1 diagonal block. If, instead, ipiv[k] = ipiv[k-1] < 0 and uplo is upper (or ipiv[k] = ipiv[k+1] < 0 and uplo is lower), then rows and columns k-1 and -ipiv[k] (or rows and columns k+1 and -ipiv[k]) were interchanged and D[k-1,k-1] to D[k,k] (or D[k,k] to D[k+1,k+1]) is a 2-by-2 diagonal block.
  • info: pointer to a int on the GPU.
    If info = 0, successful exit. If info = i > 0, D is singular. D[i,i] is the first diagonal zero.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • float * A
  • const int lda
  • int * ipiv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsytrf​

musolverStatus_t MUSOLVERAPI musolverDnDsytrf(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *A, const int lda, int *ipiv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • double * A
  • const int lda
  • int * ipiv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCsytrf​

musolverStatus_t MUSOLVERAPI musolverDnCsytrf(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *A, const int lda, int *ipiv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muComplex * A
  • const int lda
  • int * ipiv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZsytrf​

musolverStatus_t MUSOLVERAPI musolverDnZsytrf(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *A, const int lda, int *ipiv, int *info)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex * A
  • const int lda
  • int * ipiv
  • int * info

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSsytrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnSsytrfBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, float *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

SYTRF_BATCHED computes the factorization of a batch of symmetric indefinite matrices using Bunch-Kaufman diagonal pivoting.

(This is the blocked version of the algorithm).

The factorization has the form

formula {"type":"element","name":"formula","attributes":{"id":"137"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n A_j = U_j D_j U_j^T & \\: \\text{or}\\\\\n A_j = L_j D_j L_j^T &\n \\end{array}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} or formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} is a product of permutation and unit upper/lower triangular matrices (depending on the value of uplo), and formula {"type":"element","name":"formula","attributes":{"id":"138"},"children":[{"type":"text","text":"$D_j$"}]} is a symmetric block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks formula {"type":"element","name":"formula","attributes":{"id":"139"},"children":[{"type":"text","text":"$D_j(k)$"}]}.

Specifically, formula {"type":"element","name":"formula","attributes":{"id":"27"},"children":[{"type":"text","text":"$U_j$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"26"},"children":[{"type":"text","text":"$L_j$"}]} are computed as

formula {"type":"element","name":"formula","attributes":{"id":"140"},"children":[{"type":"text","text":"\\[\n \\begin{array}{cl}\n U_j = P_j(n) U_j(n) \\cdots P_j(k) U_j(k) \\cdots & \\: \\text{and}\\\\\n L_j = P_j(1) L_j(1) \\cdots P_j(k) L_j(k) \\cdots &\n \\end{array}\n \\]"}]}

where formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} decreases from formula {"type":"element","name":"formula","attributes":{"id":"119"},"children":[{"type":"text","text":"$n$"}]} to 1 (increases from 1 to formula {"type":"element","name":"formula","attributes":{"id":"119"},"children":[{"type":"text","text":"$n$"}]}) in steps of 1 or 2, depending on the order of block formula {"type":"element","name":"formula","attributes":{"id":"139"},"children":[{"type":"text","text":"$D_j(k)$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"141"},"children":[{"type":"text","text":"$P_j(k)$"}]} is a permutation matrix defined by formula {"type":"element","name":"formula","attributes":{"id":"142"},"children":[{"type":"text","text":"$ipiv_j[k]$"}]}. If we let formula {"type":"element","name":"formula","attributes":{"id":"122"},"children":[{"type":"text","text":"$s$"}]} denote the order of block formula {"type":"element","name":"formula","attributes":{"id":"139"},"children":[{"type":"text","text":"$D_j(k)$"}]}, then formula {"type":"element","name":"formula","attributes":{"id":"143"},"children":[{"type":"text","text":"$U_j(k)$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"144"},"children":[{"type":"text","text":"$L_j(k)$"}]} are unit upper/lower triangular matrices defined as

formula {"type":"element","name":"formula","attributes":{"id":"145"},"children":[{"type":"text","text":"\\[\n U_j(k) = \\left[ \\begin{array}{ccc}\n I_{k-s} & v & 0 \\\\\n 0 & I_s & 0 \\\\\n 0 & 0 & I_{n-k}\n \\end{array} \\right]\n \\]"}]}

and

formula {"type":"element","name":"formula","attributes":{"id":"146"},"children":[{"type":"text","text":"\\[\n L_j(k) = \\left[ \\begin{array}{ccc}\n I_{k-1} & 0 & 0 \\\\\n 0 & I_s & 0 \\\\\n 0 & v & I_{n-k-s+1}\n \\end{array} \\right].\n \\]"}]}

If formula {"type":"element","name":"formula","attributes":{"id":"127"},"children":[{"type":"text","text":"$s = 1$"}]}, then formula {"type":"element","name":"formula","attributes":{"id":"139"},"children":[{"type":"text","text":"$D_j(k)$"}]} is stored in formula {"type":"element","name":"formula","attributes":{"id":"147"},"children":[{"type":"text","text":"$A_j[k,k]$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"129"},"children":[{"type":"text","text":"$v$"}]} is stored in the upper/lower part of column formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}. If formula {"type":"element","name":"formula","attributes":{"id":"130"},"children":[{"type":"text","text":"$s = 2$"}]} and uplo is upper, then formula {"type":"element","name":"formula","attributes":{"id":"139"},"children":[{"type":"text","text":"$D_j(k)$"}]} is stored in formula {"type":"element","name":"formula","attributes":{"id":"148"},"children":[{"type":"text","text":"$A_j[k-1,k-1]$"}]}, formula {"type":"element","name":"formula","attributes":{"id":"149"},"children":[{"type":"text","text":"$A_j[k-1,k]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"147"},"children":[{"type":"text","text":"$A_j[k,k]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"129"},"children":[{"type":"text","text":"$v$"}]} is stored in the upper parts of columns formula {"type":"element","name":"formula","attributes":{"id":"133"},"children":[{"type":"text","text":"$k-1$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}. If formula {"type":"element","name":"formula","attributes":{"id":"130"},"children":[{"type":"text","text":"$s = 2$"}]} and uplo is lower, then formula {"type":"element","name":"formula","attributes":{"id":"139"},"children":[{"type":"text","text":"$D_j(k)$"}]} is stored in formula {"type":"element","name":"formula","attributes":{"id":"147"},"children":[{"type":"text","text":"$A_j[k,k]$"}]}, formula {"type":"element","name":"formula","attributes":{"id":"150"},"children":[{"type":"text","text":"$A_j[k+1,k]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"151"},"children":[{"type":"text","text":"$A_j[k+1,k+1]$"}]}, and formula {"type":"element","name":"formula","attributes":{"id":"129"},"children":[{"type":"text","text":"$v$"}]} is stored in the lower parts of columns formula {"type":"element","name":"formula","attributes":{"id":"94"},"children":[{"type":"text","text":"$k$"}]} and formula {"type":"element","name":"formula","attributes":{"id":"136"},"children":[{"type":"text","text":"$k+1$"}]} of formula {"type":"element","name":"formula","attributes":{"id":"23"},"children":[{"type":"text","text":"$A_j$"}]}.

Parameters:

  • handle: musolverDnHandle_t .
  • uplo: mublasFillMode_t .
    Specifies whether the upper or lower part of the matrices A_j are stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_j is not used.
  • n: int. n >= 0.
    The number of rows and 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 symmetric matrices A_j to be factored. On exit, the block diagonal matrices D_j and the multipliers needed to compute U_j or L_j.
  • lda: int. lda >= n.
    Specifies the leading dimension of matrices A_j.
  • ipiv: pointer to int. Array on the GPU of dimension n.
    The vector of pivot indices. Elements of ipiv are 1-based indices. For 1 <= k <= n, if ipiv_j[k] > 0 then rows and columns k and ipiv_j[k] were interchanged and D_j[k,k] is a 1-by-1 diagonal block. If, instead, ipiv_j[k] = ipiv_j[k-1] < 0 and uplo is upper (or ipiv_j[k] = ipiv_j[k+1] < 0 and uplo is lower), then rows and columns k-1 and -ipiv_j[k] (or rows and columns k+1 and -ipiv_j[k]) were interchanged and D_j[k-1,k-1] to D_j[k,k] (or D_j[k,k] to D_j[k+1,k+1]) is a 2-by-2 diagonal block.
  • 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.
  • 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, D_j is singular. D_j[i,i] is the first diagonal zero.
  • batch_count: int. batch_count >= 0.
    Number of matrices in the batch.

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • float *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDsytrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnDsytrfBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, double *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • double *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCsytrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnCsytrfBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muComplex *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muComplex *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnZsytrfBatched​

musolverStatus_t MUSOLVERAPI musolverDnZsytrfBatched(musolverDnHandle_t handle, const mublasFillMode_t uplo, const int n, muDoubleComplex *const A[], const int lda, int *ipiv, const int strideP, int *info, const int batch_count)

Parameters:

  • musolverDnHandle_t handle
  • const mublasFillMode_t uplo
  • const int n
  • muDoubleComplex *const A
  • const int lda
  • int * ipiv
  • const int strideP
  • int * info
  • const int batch_count

Return type: musolverStatus_t MUSOLVERAPI

Functions​

Function musolverDnCreate​

musolverStatus_t MUSOLVERAPI musolverDnCreate(musolverDnHandle_t *handle)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDestroy​

musolverStatus_t MUSOLVERAPI musolverDnDestroy(musolverDnHandle_t handle)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnSetStream​

musolverStatus_t MUSOLVERAPI musolverDnSetStream(musolverDnHandle_t handle, musaStream_t stream)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnGetStream​

musolverStatus_t MUSOLVERAPI musolverDnGetStream(musolverDnHandle_t handle, musaStream_t *stream)

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverGetVersionString​

musolverStatus_t MUSOLVERAPI musolverGetVersionString(char *buf, size_t len)

GET_VERSION_STRING Queries the library version.

Parameters:

  • buf: A buffer that the version string will be written into.
  • len: The size of the given buffer in bytes.

Parameters:

  • char * buf
  • size_t len

Return type: musolverStatus_t MUSOLVERAPI

Function musolverGetVersionStringSize​

musolverStatus_t MUSOLVERAPI musolverGetVersionStringSize(size_t *len)

GET_VERSION_STRING_SIZE Queries the minimum buffer size for a successful call to musolverGetVersionString.

Parameters:

Parameters:

  • size_t * len

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogBegin​

musolverStatus_t MUSOLVERAPI musolverLogBegin(void)

LOG_BEGIN begins a muSOLVER multi-level logging session.

Initializes the muSOLVER logging environment with default values (no logging and one level depth). Default mode can be overridden by using the environment variables MUSOLVER_LAYER and MUSOLVER_LEVELS.

This function also sets the streams where the log results will be outputted. The default is STDERR for all the modes. This default can also be overridden using the environment variable MUSOLVER_LOG_PATH, or specifically MUSOLVER_LOG_TRACE_PATH, MUSOLVER_LOG_BENCH_PATH, and/or MUSOLVER_LOG_PROFILE_PATH.

Parameters:

  • void

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogEnd​

musolverStatus_t MUSOLVERAPI musolverLogEnd(void)

LOG_END ends the multi-level muSOLVER logging session.

If applicable, this function also prints the profile logging results before cleaning the logging environment.

Parameters:

  • void

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogSetLayerMode​

musolverStatus_t MUSOLVERAPI musolverLogSetLayerMode(const mublasLayerModeFlags layer_mode)

LOG_SET_LAYER_MODE sets the logging mode for the muSOLVER multi-level logging environment.

Parameters:

  • layer_mode: mublasLayerModeFlags.
    Specifies the logging mode.

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogSetMaxLevels​

musolverStatus_t MUSOLVERAPI musolverLogSetMaxLevels(const int max_levels)

LOG_SET_MAX_LEVELS sets the maximum trace log depth for the muSOLVER multi-level logging environment.

Parameters:

  • max_levels: int. max_levels >= 1.
    Specifies the maximum depth at which nested function calls will appear in the trace and profile logs.

Parameters:

  • const int max_levels

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogRestoreDefaults​

musolverStatus_t MUSOLVERAPI musolverLogRestoreDefaults(void)

LOG_RESTORE_DEFAULTS restores the default values of the muSOLVER multi-level logging environment.

This function sets the logging mode and maximum trace log depth to their default values (no logging and one level depth).

Parameters:

  • void

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogWriteProfile​

musolverStatus_t MUSOLVERAPI musolverLogWriteProfile(void)

LOG_WRITE_PROFILE prints the profile logging results.

Parameters:

  • void

Return type: musolverStatus_t MUSOLVERAPI

Function musolverLogFlushProfile​

musolverStatus_t MUSOLVERAPI musolverLogFlushProfile(void)

LOG_FLUSH_PROFILE prints the profile logging results and clears the profile record.

Parameters:

  • void

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnCreateRfinfo​

musolverStatus_t MUSOLVERAPI musolverDnCreateRfinfo(musolverRfinfo *rfinfo, musolverDnHandle_t handle)

CREATE_RFINFO initializes the structure rfinfo, required by the re-factorization functions CSRRF_REFACTLU and CSRRF_SOLVE, that contains the meta data and descriptors of the involved matrices.

Parameters:

  • rfinfo: musolverRfinfo.
    The pointer to the rfinfo struct to be initialized.
  • handle: musolverDnHandle_t .

Parameters:

Return type: musolverStatus_t MUSOLVERAPI

Function musolverDnDestroyRfinfo​

musolverStatus_t MUSOLVERAPI musolverDnDestroyRfinfo(musolverRfinfo rfinfo)

DESTROY_RFINFO destroys the structure rfinfo used by the re-factorization functions CSRRF_REFACTLU and CSRRF_SOLVE.

Parameters:

Parameters:

Return type: musolverStatus_t MUSOLVERAPI


File musolverMg.h​

Location: musolverMg.h

Includes​

Included by​

Macros​

Enumeration types​

Enumeration type musolverMgGridMapping_t​

Definition: musolverMg.h (line 25)

enum musolverMgGridMapping_t {
MUSALIBMG_GRID_MAPPING_ROW_MAJOR = 1,
MUSALIBMG_GRID_MAPPING_COL_MAJOR = 0
}

\beief This enum decides how 1D device Ids (or process ranks) get mapped to a 2D grid.

Enumerator MUSALIBMG_GRID_MAPPING_ROW_MAJOR​

Enumerator MUSALIBMG_GRID_MAPPING_COL_MAJOR​

Typedefs​

Typedef musolverMgHandle_t​

Definition: musolverMg.h (line 19)

typedef struct musolverMgContext* musolverMgHandle_t

Return type: struct musolverMgContext *

Typedef musaLibMgGrid_t​

Definition: musolverMg.h (line 31)

typedef void* musaLibMgGrid_t

Opaque structure of the distributed grid.

Return type: void *

Typedef musaLibMgMatrixDesc_t​

Definition: musolverMg.h (line 33)

typedef void* musaLibMgMatrixDesc_t

Opaque structure of the distributed matrix descriptor.

Return type: void *

Functions​

Function musolverMgCreate​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgCreate(musolverMgHandle_t *handle)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgDestroy​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgDestroy(musolverMgHandle_t handle)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgDeviceSelect​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgDeviceSelect(musolverMgHandle_t handle, int nbDevices, int deviceId[])

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgCreateDeviceGrid​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgCreateDeviceGrid(musaLibMgGrid_t *grid, int32_t numRowDevices, int32_t numColDevices, const int32_t deviceId[], musolverMgGridMapping_t mapping)

Allocates resources related to the shared memory device grid.

Parameters:

  • grid: the opaque data strcuture that holds the grid
  • numRowDevices: number of devices in the row
  • numColDevices: number of devices in the column
  • deviceId: This array of size height * width stores the device-ids of the 2D grid; each entry must correspond to a valid gpu or to -1 (denoting CPU).
  • mapping: whether the 2D grid is in row/column major

Returns:

the status code

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgDestroyGrid​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgDestroyGrid(musaLibMgGrid_t grid)

Releases the allocated resources related to the distributed grid.

Parameters:

  • grid: the opaque data strcuture that holds the distributed grid

Returns:

the status code

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgCreateMatrixDesc​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgCreateMatrixDesc(musaLibMgMatrixDesc_t *desc, int64_t numRows, int64_t numCols, int64_t rowBlockSize, int64_t colBlockSize, musaDataType dataType, const musaLibMgGrid_t grid)

Allocates resources related to the distributed matrix descriptor.

Parameters:

  • desc: the opaque data strcuture that holds the descriptor
  • numRows: number of total rows
  • numCols: number of total columns
  • rowBlockSize: row block size
  • colBlockSize: column block size
  • dataType: the data type of each element in musaDataType
  • grid: the opaque data structure of the distributed grid

Returns:

the status code

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgDestroyMatrixDesc​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgDestroyMatrixDesc(musaLibMgMatrixDesc_t desc)

Releases the allocated resources related to the distributed matrix descriptor.

Parameters:

  • desc: the opaque data strcuture that holds the descriptor

Returns:

the status code

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgSyevd_bufferSize​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgSyevd_bufferSize(musolverMgHandle_t handle, musolverEigMode_t jobz, mublasFillMode_t uplo, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, void *W, musaDataType dataTypeW, musaDataType computeType, int64_t *lwork)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgSyevd​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgSyevd(musolverMgHandle_t handle, musolverEigMode_t jobz, mublasFillMode_t uplo, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, void *W, musaDataType dataTypeW, musaDataType computeType, void *array_d_work[], int64_t lwork, int *info)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgGetrf_bufferSize​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgGetrf_bufferSize(musolverMgHandle_t handle, int M, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, int *array_d_IPIV[], musaDataType computeType, int64_t *lwork)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgGetrf​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgGetrf(musolverMgHandle_t handle, int M, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, int *array_d_IPIV[], musaDataType computeType, void *array_d_work[], int64_t lwork, int *info)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgGetrs_bufferSize​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgGetrs_bufferSize(musolverMgHandle_t handle, mublasOperation_t TRANS, int N, int NRHS, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, int *array_d_IPIV[], void *array_d_B[], int IB, int JB, musaLibMgMatrixDesc_t descrB, musaDataType computeType, int64_t *lwork)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgGetrs​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgGetrs(musolverMgHandle_t handle, mublasOperation_t TRANS, int N, int NRHS, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, int *array_d_IPIV[], void *array_d_B[], int IB, int JB, musaLibMgMatrixDesc_t descrB, musaDataType computeType, void *array_d_work[], int64_t lwork, int *info)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgPotrf_bufferSize​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgPotrf_bufferSize(musolverMgHandle_t handle, mublasFillMode_t uplo, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, musaDataType computeType, int64_t *lwork)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgPotrf​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgPotrf(musolverMgHandle_t handle, mublasFillMode_t uplo, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, musaDataType computeType, void *array_d_work[], int64_t lwork, int *h_info)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgPotrs_bufferSize​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgPotrs_bufferSize(musolverMgHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, void *array_d_B[], int IB, int JB, musaLibMgMatrixDesc_t descrB, musaDataType computeType, int64_t *lwork)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgPotrs​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgPotrs(musolverMgHandle_t handle, mublasFillMode_t uplo, int n, int nrhs, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, void *array_d_B[], int IB, int JB, musaLibMgMatrixDesc_t descrB, musaDataType computeType, void *array_d_work[], int64_t lwork, int *h_info)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgPotri_bufferSize​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgPotri_bufferSize(musolverMgHandle_t handle, mublasFillMode_t uplo, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, musaDataType computeType, int64_t *lwork)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI

Function musolverMgPotri​

MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI musolverMgPotri(musolverMgHandle_t handle, mublasFillMode_t uplo, int N, void *array_d_A[], int IA, int JA, musaLibMgMatrixDesc_t descrA, musaDataType computeType, void *array_d_work[], int64_t lwork, int *h_info)

Parameters:

Return type: MUSOLVERMG_DEPRECATED musolverStatus_t MUSOLVERAPI


File musolverRf.h​

Location: musolverRf.h

Includes​

Included by​

Enumeration types​

Enumeration type musolverRfResetValuesFastMode_t​

Definition: musolverRf.h (line 17)

enum musolverRfResetValuesFastMode_t {
MUSOLVERRF_RESET_VALUES_FAST_MODE_OFF = 0,
MUSOLVERRF_RESET_VALUES_FAST_MODE_ON = 1
}

Enumerator MUSOLVERRF_RESET_VALUES_FAST_MODE_OFF​

Enumerator MUSOLVERRF_RESET_VALUES_FAST_MODE_ON​

Enumeration type musolverRfMatrixFormat_t​

Definition: musolverRf.h (line 23)

enum musolverRfMatrixFormat_t {
MUSOLVERRF_MATRIX_FORMAT_CSR = 0,
MUSOLVERRF_MATRIX_FORMAT_CSC = 1
}

Enumerator MUSOLVERRF_MATRIX_FORMAT_CSR​

Enumerator MUSOLVERRF_MATRIX_FORMAT_CSC​

Enumeration type musolverRfUnitDiagonal_t​

Definition: musolverRf.h (line 29)

enum musolverRfUnitDiagonal_t {
MUSOLVERRF_UNIT_DIAGONAL_STORED_L = 0,
MUSOLVERRF_UNIT_DIAGONAL_STORED_U = 1,
MUSOLVERRF_UNIT_DIAGONAL_ASSUMED_L = 2,
MUSOLVERRF_UNIT_DIAGONAL_ASSUMED_U = 3
}

Enumerator MUSOLVERRF_UNIT_DIAGONAL_STORED_L​

Enumerator MUSOLVERRF_UNIT_DIAGONAL_STORED_U​

Enumerator MUSOLVERRF_UNIT_DIAGONAL_ASSUMED_L​

Enumerator MUSOLVERRF_UNIT_DIAGONAL_ASSUMED_U​

Enumeration type musolverRfFactorization_t​

Definition: musolverRf.h (line 37)

enum musolverRfFactorization_t {
MUSOLVERRF_FACTORIZATION_ALG0 = 0,
MUSOLVERRF_FACTORIZATION_ALG1 = 1,
MUSOLVERRF_FACTORIZATION_ALG2 = 2
}

Enumerator MUSOLVERRF_FACTORIZATION_ALG0​

Enumerator MUSOLVERRF_FACTORIZATION_ALG1​

Enumerator MUSOLVERRF_FACTORIZATION_ALG2​

Enumeration type musolverRfTriangularSolve_t​

Definition: musolverRf.h (line 44)

enum musolverRfTriangularSolve_t {
MUSOLVERRF_TRIANGULAR_SOLVE_ALG1 = 1,
MUSOLVERRF_TRIANGULAR_SOLVE_ALG2 = 2,
MUSOLVERRF_TRIANGULAR_SOLVE_ALG3 = 3
}

Enumerator MUSOLVERRF_TRIANGULAR_SOLVE_ALG1​

Enumerator MUSOLVERRF_TRIANGULAR_SOLVE_ALG2​

Enumerator MUSOLVERRF_TRIANGULAR_SOLVE_ALG3​

Enumeration type musolverRfNumericBoostReport_t​

Definition: musolverRf.h (line 51)

enum musolverRfNumericBoostReport_t {
MUSOLVERRF_NUMERIC_BOOST_NOT_USED = 0,
MUSOLVERRF_NUMERIC_BOOST_USED = 1
}

Enumerator MUSOLVERRF_NUMERIC_BOOST_NOT_USED​

Enumerator MUSOLVERRF_NUMERIC_BOOST_USED​

Typedefs​

Typedef musolverRfHandle_t​

Definition: musolverRf.h (line 58)

typedef struct musolverRfCommon* musolverRfHandle_t

Return type: struct musolverRfCommon *

Functions​

Function musolverRfCreate​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfCreate(musolverRfHandle_t *handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfDestroy​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfDestroy(musolverRfHandle_t handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfGetMatrixFormat​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfGetMatrixFormat(musolverRfHandle_t handle, musolverRfMatrixFormat_t *format, musolverRfUnitDiagonal_t *diag)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSetMatrixFormat​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSetMatrixFormat(musolverRfHandle_t handle, musolverRfMatrixFormat_t format, musolverRfUnitDiagonal_t diag)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSetNumericProperties​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSetNumericProperties(musolverRfHandle_t handle, double zero, double boost)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfGetNumericProperties​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfGetNumericProperties(musolverRfHandle_t handle, double *zero, double *boost)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfGetNumericBoostReport​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfGetNumericBoostReport(musolverRfHandle_t handle, musolverRfNumericBoostReport_t *report)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSetAlgs​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSetAlgs(musolverRfHandle_t handle, musolverRfFactorization_t factAlg, musolverRfTriangularSolve_t solveAlg)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfGetAlgs​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfGetAlgs(musolverRfHandle_t handle, musolverRfFactorization_t *factAlg, musolverRfTriangularSolve_t *solveAlg)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfGetResetValuesFastMode​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfGetResetValuesFastMode(musolverRfHandle_t handle, musolverRfResetValuesFastMode_t *fastMode)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSetResetValuesFastMode​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSetResetValuesFastMode(musolverRfHandle_t handle, musolverRfResetValuesFastMode_t fastMode)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSetupHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSetupHost(int n, int nnzA, int *h_csrRowPtrA, int *h_csrColIndA, double *h_csrValA, int nnzL, int *h_csrRowPtrL, int *h_csrColIndL, double *h_csrValL, int nnzU, int *h_csrRowPtrU, int *h_csrColIndU, double *h_csrValU, int *h_P, int *h_Q, musolverRfHandle_t handle)

Parameters:

  • int n
  • int nnzA
  • int * h_csrRowPtrA
  • int * h_csrColIndA
  • double * h_csrValA
  • int nnzL
  • int * h_csrRowPtrL
  • int * h_csrColIndL
  • double * h_csrValL
  • int nnzU
  • int * h_csrRowPtrU
  • int * h_csrColIndU
  • double * h_csrValU
  • int * h_P
  • int * h_Q
  • musolverRfHandle_t handle

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSetupDevice​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSetupDevice(int n, int nnzA, int *csrRowPtrA, int *csrColIndA, double *csrValA, int nnzL, int *csrRowPtrL, int *csrColIndL, double *csrValL, int nnzU, int *csrRowPtrU, int *csrColIndU, double *csrValU, int *P, int *Q, musolverRfHandle_t handle)

Parameters:

  • int n
  • int nnzA
  • int * csrRowPtrA
  • int * csrColIndA
  • double * csrValA
  • int nnzL
  • int * csrRowPtrL
  • int * csrColIndL
  • double * csrValL
  • int nnzU
  • int * csrRowPtrU
  • int * csrColIndU
  • double * csrValU
  • int * P
  • int * Q
  • musolverRfHandle_t handle

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfResetValues​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfResetValues(int n, int nnzA, int *csrRowPtrA, int *csrColIndA, double *csrValA, int *P, int *Q, musolverRfHandle_t handle)

Parameters:

  • int n
  • int nnzA
  • int * csrRowPtrA
  • int * csrColIndA
  • double * csrValA
  • int * P
  • int * Q
  • musolverRfHandle_t handle

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfAnalyze​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfAnalyze(musolverRfHandle_t handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfRefactor​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfRefactor(musolverRfHandle_t handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfAccessBundledFactorsDevice​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfAccessBundledFactorsDevice(musolverRfHandle_t handle, int *nnzM, int **Mp, int **Mi, double **Mx)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfExtractBundledFactorsHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfExtractBundledFactorsHost(musolverRfHandle_t handle, int *h_nnzM, int **h_Mp, int **h_Mi, double **h_Mx)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfExtractSplitFactorsHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfExtractSplitFactorsHost(musolverRfHandle_t handle, int *h_nnzL, int **h_csrRowPtrL, int **h_csrColIndL, double **h_csrValL, int *h_nnzU, int **h_csrRowPtrU, int **h_csrColIndU, double **h_csrValU)

Parameters:

  • musolverRfHandle_t handle
  • int * h_nnzL
  • int ** h_csrRowPtrL
  • int ** h_csrColIndL
  • double ** h_csrValL
  • int * h_nnzU
  • int ** h_csrRowPtrU
  • int ** h_csrColIndU
  • double ** h_csrValU

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfSolve​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfSolve(musolverRfHandle_t handle, int *P, int *Q, int nrhs, double *Temp, int ldt, double *XF, int ldxf)

Parameters:

  • musolverRfHandle_t handle
  • int * P
  • int * Q
  • int nrhs
  • double * Temp
  • int ldt
  • double * XF
  • int ldxf

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfBatchSetupHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfBatchSetupHost(int batchSize, int n, int nnzA, int *h_csrRowPtrA, int *h_csrColIndA, double *h_csrValA_array[], int nnzL, int *h_csrRowPtrL, int *h_csrColIndL, double *h_csrValL, int nnzU, int *h_csrRowPtrU, int *h_csrColIndU, double *h_csrValU, int *h_P, int *h_Q, musolverRfHandle_t handle)

Parameters:

  • int batchSize
  • int n
  • int nnzA
  • int * h_csrRowPtrA
  • int * h_csrColIndA
  • double * h_csrValA_array
  • int nnzL
  • int * h_csrRowPtrL
  • int * h_csrColIndL
  • double * h_csrValL
  • int nnzU
  • int * h_csrRowPtrU
  • int * h_csrColIndU
  • double * h_csrValU
  • int * h_P
  • int * h_Q
  • musolverRfHandle_t handle

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfBatchResetValues​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfBatchResetValues(int batchSize, int n, int nnzA, int *csrRowPtrA, int *csrColIndA, double *csrValA_array[], int *P, int *Q, musolverRfHandle_t handle)

Parameters:

  • int batchSize
  • int n
  • int nnzA
  • int * csrRowPtrA
  • int * csrColIndA
  • double * csrValA_array
  • int * P
  • int * Q
  • musolverRfHandle_t handle

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfBatchAnalyze​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfBatchAnalyze(musolverRfHandle_t handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfBatchRefactor​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfBatchRefactor(musolverRfHandle_t handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfBatchSolve​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfBatchSolve(musolverRfHandle_t handle, int *P, int *Q, int nrhs, double *Temp, int ldt, double *XF_array[], int ldxf)

Parameters:

  • musolverRfHandle_t handle
  • int * P
  • int * Q
  • int nrhs
  • double * Temp
  • int ldt
  • double * XF_array
  • int ldxf

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverRfBatchZeroPivot​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverRfBatchZeroPivot(musolverRfHandle_t handle, int *position)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI


File musolverSp.h​

Location: musolverSp.h

Includes​

Included by​

Typedefs​

Typedef musolverSpHandle_t​

Definition: musolverSp.h (line 17)

typedef struct musolverSpContext* musolverSpHandle_t

Return type: struct musolverSpContext *

Typedef csrqrInfo_t​

Definition: musolverSp.h (line 20)

typedef struct csrqrInfo* csrqrInfo_t

Return type: struct csrqrInfo *

Functions​

Function musolverSpCreate​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCreate(musolverSpHandle_t *handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDestroy​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDestroy(musolverSpHandle_t handle)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpSetStream​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpSetStream(musolverSpHandle_t handle, musaStream_t streamId)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpGetStream​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpGetStream(musolverSpHandle_t handle, musaStream_t *streamId)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrissymHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrissymHost(musolverSpHandle_t handle, int m, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrEndPtrA, const int *csrColIndA, int *issym)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnzA
  • const musparseMatDescr_t descrA
  • const int * csrRowPtrA
  • const int * csrEndPtrA
  • const int * csrColIndA
  • int * issym

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrlsvluHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrlsvluHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, const float *b, float tol, int reorder, float *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const float * b
  • float tol
  • int reorder
  • float * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrlsvluHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrlsvluHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, const double *b, double tol, int reorder, double *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const double * b
  • double tol
  • int reorder
  • double * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrlsvluHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrlsvluHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muComplex *b, float tol, int reorder, muComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muComplex * b
  • float tol
  • int reorder
  • muComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrlsvluHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrlsvluHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muDoubleComplex *b, double tol, int reorder, muDoubleComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muDoubleComplex * b
  • double tol
  • int reorder
  • muDoubleComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrlsvqr​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrlsvqr(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrVal, const int *csrRowPtr, const int *csrColInd, const float *b, float tol, int reorder, float *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const float * b
  • float tol
  • int reorder
  • float * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrlsvqr​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrlsvqr(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrVal, const int *csrRowPtr, const int *csrColInd, const double *b, double tol, int reorder, double *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const double * b
  • double tol
  • int reorder
  • double * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrlsvqr​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrlsvqr(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrVal, const int *csrRowPtr, const int *csrColInd, const muComplex *b, float tol, int reorder, muComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const muComplex * b
  • float tol
  • int reorder
  • muComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrlsvqr​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrlsvqr(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrVal, const int *csrRowPtr, const int *csrColInd, const muDoubleComplex *b, double tol, int reorder, muDoubleComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const muDoubleComplex * b
  • double tol
  • int reorder
  • muDoubleComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrlsvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrlsvqrHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, const float *b, float tol, int reorder, float *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const float * b
  • float tol
  • int reorder
  • float * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrlsvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrlsvqrHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, const double *b, double tol, int reorder, double *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const double * b
  • double tol
  • int reorder
  • double * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrlsvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrlsvqrHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muComplex *b, float tol, int reorder, muComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muComplex * b
  • float tol
  • int reorder
  • muComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrlsvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrlsvqrHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muDoubleComplex *b, double tol, int reorder, muDoubleComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muDoubleComplex * b
  • double tol
  • int reorder
  • muDoubleComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrlsvcholHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrlsvcholHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrVal, const int *csrRowPtr, const int *csrColInd, const float *b, float tol, int reorder, float *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const float * b
  • float tol
  • int reorder
  • float * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrlsvcholHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrlsvcholHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrVal, const int *csrRowPtr, const int *csrColInd, const double *b, double tol, int reorder, double *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const double * b
  • double tol
  • int reorder
  • double * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrlsvcholHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrlsvcholHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrVal, const int *csrRowPtr, const int *csrColInd, const muComplex *b, float tol, int reorder, muComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const muComplex * b
  • float tol
  • int reorder
  • muComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrlsvcholHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrlsvcholHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrVal, const int *csrRowPtr, const int *csrColInd, const muDoubleComplex *b, double tol, int reorder, muDoubleComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const muDoubleComplex * b
  • double tol
  • int reorder
  • muDoubleComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrlsvchol​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrlsvchol(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrVal, const int *csrRowPtr, const int *csrColInd, const float *b, float tol, int reorder, float *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const float * b
  • float tol
  • int reorder
  • float * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrlsvchol​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrlsvchol(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrVal, const int *csrRowPtr, const int *csrColInd, const double *b, double tol, int reorder, double *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const double * b
  • double tol
  • int reorder
  • double * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrlsvchol​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrlsvchol(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrVal, const int *csrRowPtr, const int *csrColInd, const muComplex *b, float tol, int reorder, muComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const muComplex * b
  • float tol
  • int reorder
  • muComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrlsvchol​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrlsvchol(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrVal, const int *csrRowPtr, const int *csrColInd, const muDoubleComplex *b, double tol, int reorder, muDoubleComplex *x, int *singularity)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • const muDoubleComplex * b
  • double tol
  • int reorder
  • muDoubleComplex * x
  • int * singularity

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrlsqvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrlsqvqrHost(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, const float *b, float tol, int *rankA, float *x, int *p, float *min_norm)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const float * b
  • float tol
  • int * rankA
  • float * x
  • int * p
  • float * min_norm

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrlsqvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrlsqvqrHost(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, const double *b, double tol, int *rankA, double *x, int *p, double *min_norm)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const double * b
  • double tol
  • int * rankA
  • double * x
  • int * p
  • double * min_norm

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrlsqvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrlsqvqrHost(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muComplex *b, float tol, int *rankA, muComplex *x, int *p, float *min_norm)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muComplex * b
  • float tol
  • int * rankA
  • muComplex * x
  • int * p
  • float * min_norm

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrlsqvqrHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrlsqvqrHost(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muDoubleComplex *b, double tol, int *rankA, muDoubleComplex *x, int *p, double *min_norm)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muDoubleComplex * b
  • double tol
  • int * rankA
  • muDoubleComplex * x
  • int * p
  • double * min_norm

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsreigvsiHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsreigvsiHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, float mu0, const float *x0, int maxite, float tol, float *mu, float *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • float mu0
  • const float * x0
  • int maxite
  • float tol
  • float * mu
  • float * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsreigvsiHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsreigvsiHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, double mu0, const double *x0, int maxite, double tol, double *mu, double *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • double mu0
  • const double * x0
  • int maxite
  • double tol
  • double * mu
  • double * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsreigvsiHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsreigvsiHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, muComplex mu0, const muComplex *x0, int maxite, float tol, muComplex *mu, muComplex *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muComplex mu0
  • const muComplex * x0
  • int maxite
  • float tol
  • muComplex * mu
  • muComplex * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsreigvsiHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsreigvsiHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, muDoubleComplex mu0, const muDoubleComplex *x0, int maxite, double tol, muDoubleComplex *mu, muDoubleComplex *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muDoubleComplex mu0
  • const muDoubleComplex * x0
  • int maxite
  • double tol
  • muDoubleComplex * mu
  • muDoubleComplex * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsreigvsi​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsreigvsi(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, float mu0, const float *x0, int maxite, float eps, float *mu, float *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • float mu0
  • const float * x0
  • int maxite
  • float eps
  • float * mu
  • float * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsreigvsi​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsreigvsi(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, double mu0, const double *x0, int maxite, double eps, double *mu, double *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • double mu0
  • const double * x0
  • int maxite
  • double eps
  • double * mu
  • double * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsreigvsi​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsreigvsi(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, muComplex mu0, const muComplex *x0, int maxite, float eps, muComplex *mu, muComplex *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muComplex mu0
  • const muComplex * x0
  • int maxite
  • float eps
  • muComplex * mu
  • muComplex * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsreigvsi​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsreigvsi(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, muDoubleComplex mu0, const muDoubleComplex *x0, int maxite, double eps, muDoubleComplex *mu, muDoubleComplex *x)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muDoubleComplex mu0
  • const muDoubleComplex * x0
  • int maxite
  • double eps
  • muDoubleComplex * mu
  • muDoubleComplex * x

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsreigsHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsreigsHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, muComplex left_bottom_corner, muComplex right_upper_corner, int *num_eigs)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muComplex left_bottom_corner
  • muComplex right_upper_corner
  • int * num_eigs

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsreigsHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsreigsHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, muDoubleComplex left_bottom_corner, muDoubleComplex right_upper_corner, int *num_eigs)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muDoubleComplex left_bottom_corner
  • muDoubleComplex right_upper_corner
  • int * num_eigs

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsreigsHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsreigsHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, muComplex left_bottom_corner, muComplex right_upper_corner, int *num_eigs)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muComplex left_bottom_corner
  • muComplex right_upper_corner
  • int * num_eigs

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsreigsHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsreigsHost(musolverSpHandle_t handle, int m, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, muDoubleComplex left_bottom_corner, muDoubleComplex right_upper_corner, int *num_eigs)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • muDoubleComplex left_bottom_corner
  • muDoubleComplex right_upper_corner
  • int * num_eigs

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrsymrcmHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrsymrcmHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrColIndA, int *p)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * p

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrsymmdqHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrsymmdqHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrColIndA, int *p)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * p

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrsymamdHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrsymamdHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrColIndA, int *p)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * p

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrmetisndHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrmetisndHost(musolverSpHandle_t handle, int n, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrColIndA, const int64_t *options, int *p)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const int64_t * options
  • int * p

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrzfdHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrzfdHost(musolverSpHandle_t handle, int n, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, int *P, int *numnz)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * P
  • int * numnz

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrzfdHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrzfdHost(musolverSpHandle_t handle, int n, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, int *P, int *numnz)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * P
  • int * numnz

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrzfdHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrzfdHost(musolverSpHandle_t handle, int n, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, int *P, int *numnz)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * P
  • int * numnz

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrzfdHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrzfdHost(musolverSpHandle_t handle, int n, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, int *P, int *numnz)

Parameters:

  • musolverSpHandle_t handle
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • int * P
  • int * numnz

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrperm_bufferSizeHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrperm_bufferSizeHost(musolverSpHandle_t handle, int m, int n, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrColIndA, const int *p, const int *q, size_t *bufferSizeInBytes)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const int * p
  • const int * q
  • size_t * bufferSizeInBytes

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrpermHost​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrpermHost(musolverSpHandle_t handle, int m, int n, int nnzA, const musparseMatDescr_t descrA, int *csrRowPtrA, int *csrColIndA, const int *p, const int *q, int *map, void *pBuffer)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnzA
  • const musparseMatDescr_t descrA
  • int * csrRowPtrA
  • int * csrColIndA
  • const int * p
  • const int * q
  • int * map
  • void * pBuffer

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCreateCsrqrInfo​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCreateCsrqrInfo(csrqrInfo_t *info)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDestroyCsrqrInfo​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDestroyCsrqrInfo(csrqrInfo_t info)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpXcsrqrAnalysisBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpXcsrqrAnalysisBatched(musolverSpHandle_t handle, int m, int n, int nnzA, const musparseMatDescr_t descrA, const int *csrRowPtrA, const int *csrColIndA, csrqrInfo_t info)

Parameters:

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrqrBufferInfoBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrqrBufferInfoBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const float *csrVal, const int *csrRowPtr, const int *csrColInd, int batchSize, csrqrInfo_t info, size_t *internalDataInBytes, size_t *workspaceInBytes)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • int batchSize
  • csrqrInfo_t info
  • size_t * internalDataInBytes
  • size_t * workspaceInBytes

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrqrBufferInfoBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrqrBufferInfoBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const double *csrVal, const int *csrRowPtr, const int *csrColInd, int batchSize, csrqrInfo_t info, size_t *internalDataInBytes, size_t *workspaceInBytes)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • int batchSize
  • csrqrInfo_t info
  • size_t * internalDataInBytes
  • size_t * workspaceInBytes

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrqrBufferInfoBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrqrBufferInfoBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const muComplex *csrVal, const int *csrRowPtr, const int *csrColInd, int batchSize, csrqrInfo_t info, size_t *internalDataInBytes, size_t *workspaceInBytes)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • int batchSize
  • csrqrInfo_t info
  • size_t * internalDataInBytes
  • size_t * workspaceInBytes

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrqrBufferInfoBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrqrBufferInfoBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrVal, const int *csrRowPtr, const int *csrColInd, int batchSize, csrqrInfo_t info, size_t *internalDataInBytes, size_t *workspaceInBytes)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrVal
  • const int * csrRowPtr
  • const int * csrColInd
  • int batchSize
  • csrqrInfo_t info
  • size_t * internalDataInBytes
  • size_t * workspaceInBytes

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpScsrqrsvBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpScsrqrsvBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const float *csrValA, const int *csrRowPtrA, const int *csrColIndA, const float *b, float *x, int batchSize, csrqrInfo_t info, void *pBuffer)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const float * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const float * b
  • float * x
  • int batchSize
  • csrqrInfo_t info
  • void * pBuffer

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpDcsrqrsvBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpDcsrqrsvBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const double *csrValA, const int *csrRowPtrA, const int *csrColIndA, const double *b, double *x, int batchSize, csrqrInfo_t info, void *pBuffer)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const double * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const double * b
  • double * x
  • int batchSize
  • csrqrInfo_t info
  • void * pBuffer

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpCcsrqrsvBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpCcsrqrsvBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const muComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muComplex *b, muComplex *x, int batchSize, csrqrInfo_t info, void *pBuffer)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muComplex * b
  • muComplex * x
  • int batchSize
  • csrqrInfo_t info
  • void * pBuffer

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI

Function musolverSpZcsrqrsvBatched​

MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI musolverSpZcsrqrsvBatched(musolverSpHandle_t handle, int m, int n, int nnz, const musparseMatDescr_t descrA, const muDoubleComplex *csrValA, const int *csrRowPtrA, const int *csrColIndA, const muDoubleComplex *b, muDoubleComplex *x, int batchSize, csrqrInfo_t info, void *pBuffer)

Parameters:

  • musolverSpHandle_t handle
  • int m
  • int n
  • int nnz
  • const musparseMatDescr_t descrA
  • const muDoubleComplex * csrValA
  • const int * csrRowPtrA
  • const int * csrColIndA
  • const muDoubleComplex * b
  • muDoubleComplex * x
  • int batchSize
  • csrqrInfo_t info
  • void * pBuffer

Return type: MUSOLVER_DEPRECATED_ musolverStatus_t MUSOLVERAPI


File musolver.h​

Location: musolver.h

musolver.h includes other *.h and exposes a common interface

Includes​


File musolver_common.h​

Location: musolver\_common.h

Includes​

  • <stdint.h>
  • mublas.h

Included by​

Macros​

Enumeration types​

Enumeration type musolverStatus_t​

Definition: musolver\_common.h (line 37)

enum musolverStatus_t {
MUSOLVER_STATUS_SUCCESS = 0,
MUSOLVER_STATUS_NOT_INITIALIZED = 1,
MUSOLVER_STATUS_ALLOC_FAILED = 2,
MUSOLVER_STATUS_INVALID_VALUE = 3,
MUSOLVER_STATUS_ARCH_MISMATCH = 4,
MUSOLVER_STATUS_MAPPING_ERROR = 5,
MUSOLVER_STATUS_EXECUTION_FAILED = 6,
MUSOLVER_STATUS_INTERNAL_ERROR = 7,
MUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED = 8,
MUSOLVER_STATUS_NOT_SUPPORTED = 9,
MUSOLVER_STATUS_ZERO_PIVOT = 10,
MUSOLVER_STATUS_INVALID_LICENSE = 11,
MUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED = 12,
MUSOLVER_STATUS_IRS_PARAMS_INVALID = 13,
MUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC = 14,
MUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE = 15,
MUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER = 16,
MUSOLVER_STATUS_IRS_INTERNAL_ERROR = 20,
MUSOLVER_STATUS_IRS_NOT_SUPPORTED = 21,
MUSOLVER_STATUS_IRS_OUT_OF_RANGE = 22,
MUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES = 23,
MUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED = 25,
MUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED = 26,
MUSOLVER_STATUS_IRS_MATRIX_SINGULAR = 30,
MUSOLVER_STATUS_INVALID_WORKSPACE = 31
}

Enumerator MUSOLVER_STATUS_SUCCESS​

Enumerator MUSOLVER_STATUS_NOT_INITIALIZED​

Enumerator MUSOLVER_STATUS_ALLOC_FAILED​

Enumerator MUSOLVER_STATUS_INVALID_VALUE​

Enumerator MUSOLVER_STATUS_ARCH_MISMATCH​

Enumerator MUSOLVER_STATUS_MAPPING_ERROR​

Enumerator MUSOLVER_STATUS_EXECUTION_FAILED​

Enumerator MUSOLVER_STATUS_INTERNAL_ERROR​

Enumerator MUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED​

Enumerator MUSOLVER_STATUS_NOT_SUPPORTED​

Enumerator MUSOLVER_STATUS_ZERO_PIVOT​

Enumerator MUSOLVER_STATUS_INVALID_LICENSE​

Enumerator MUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED​

Enumerator MUSOLVER_STATUS_IRS_PARAMS_INVALID​

Enumerator MUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC​

Enumerator MUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE​

Enumerator MUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER​

Enumerator MUSOLVER_STATUS_IRS_INTERNAL_ERROR​

Enumerator MUSOLVER_STATUS_IRS_NOT_SUPPORTED​

Enumerator MUSOLVER_STATUS_IRS_OUT_OF_RANGE​

Enumerator MUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES​

Enumerator MUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED​

Enumerator MUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED​

Enumerator MUSOLVER_STATUS_IRS_MATRIX_SINGULAR​

Enumerator MUSOLVER_STATUS_INVALID_WORKSPACE​

Enumeration type mublasLayerModeEx_t​

Definition: musolver\_common.h (line 72)

enum mublasLayerModeEx_t {
MUBLAS_LAYER_MODE_EX_LOG_KERNEL = 0x10
}

Used to expand the logging layer modes offered for muSOLVER logging.

Enumerator MUBLAS_LAYER_MODE_EX_LOG_KERNEL​

Enable logging for kernel calls.

Enumeration type mublasDirect_t​

Definition: musolver\_common.h (line 80)

enum mublasDirect_t {
MUBLAS_FORWARD_DIRECTION = 171,
MUBLAS_BACKWARD_DIRECTION = 172
}

Used to specify the order in which multiple Householder matrices are applied together.

Enumerator MUBLAS_FORWARD_DIRECTION​

Householder matrices applied from the right.

Enumerator MUBLAS_BACKWARD_DIRECTION​

Householder matrices applied from the left.

Enumeration type mublasStorev_t​

Definition: musolver\_common.h (line 89)

enum mublasStorev_t {
MUBLAS_COLUMN_WISE = 181,
MUBLAS_ROW_WISE = 182
}

Used to specify how householder vectors are stored in a matrix of vectors.

Enumerator MUBLAS_COLUMN_WISE​

Householder vectors are stored in the columns of a matrix.

Enumerator MUBLAS_ROW_WISE​

Householder vectors are stored in the rows of a matrix.

Enumeration type mublasSvect_t​

Definition: musolver\_common.h (line 98)

enum mublasSvect_t {
MUBLAS_SVECT_ALL = 191,
MUBLAS_SVECT_SINGULAR = 192,
MUBLAS_SVECT_OVERWRITE = 193,
MUBLAS_SVECT_NONE = 194
}

Used to specify how the singular vectors are to be computed and stored.

Enumerator MUBLAS_SVECT_ALL​

The entire associated orthogonal/unitary matrix is computed.

Enumerator MUBLAS_SVECT_SINGULAR​

Only the singular vectors are computed and stored in output array.

Enumerator MUBLAS_SVECT_OVERWRITE​

Only the singular vectors are computed and overwrite the input matrix.

Enumerator MUBLAS_SVECT_NONE​

No singular vectors are computed.

Enumeration type mublasWorkmode_t​

Definition: musolver\_common.h (line 111)

enum mublasWorkmode_t {
MUBLAS_OUTOFPLACE = 201,
MUBLAS_INPLACE = 202
}

Used to enable the use of fast algorithms (with out-of-place computations) in some of the routines.

Enumerator MUBLAS_OUTOFPLACE​

Out-of-place computations are allowed; this requires extra device memory for workspace.

Enumerator MUBLAS_INPLACE​

If not enough memory is available, this forces in-place computations.

Enumeration type mublasEvect_t​

Definition: musolver\_common.h (line 121)

enum mublasEvect_t {
MUBLAS_EVECT_ORIGINAL = 211,
MUBLAS_EVECT_TRIDIAGONAL = 212,
MUBLAS_EVECT_NONE = 213
}

Used to specify how the eigenvectors are to be computed.

Enumerator MUBLAS_EVECT_ORIGINAL​

Compute eigenvectors for the original symmetric/Hermitian matrix.

Enumerator MUBLAS_EVECT_TRIDIAGONAL​

Compute eigenvectors for the symmetric tridiagonal matrix.

Enumerator MUBLAS_EVECT_NONE​

No eigenvectors are computed.

Enumeration type mublasEform_t​

Definition: musolver\_common.h (line 132)

enum mublasEform_t {
MUBLAS_EFORM_AX = 221,
MUBLAS_EFORM_ABX = 222,
MUBLAS_EFORM_BAX = 223
}

Used to specify the form of the generalized eigenproblem.

Enumerator MUBLAS_EFORM_AX​

The problem is formula {"type":"element","name":"formula","attributes":{"id":"0"},"children":[{"type":"text","text":"$Ax = \\lambda Bx$"}]}.

Enumerator MUBLAS_EFORM_ABX​

The problem is formula {"type":"element","name":"formula","attributes":{"id":"1"},"children":[{"type":"text","text":"$ABx = \\lambda x$"}]}.

Enumerator MUBLAS_EFORM_BAX​

The problem is formula {"type":"element","name":"formula","attributes":{"id":"2"},"children":[{"type":"text","text":"$BAx = \\lambda x$"}]}.

Enumeration type mublasErange_t​

Definition: musolver\_common.h (line 142)

enum mublasErange_t {
MUBLAS_ERANGE_ALL = 231,
MUBLAS_ERANGE_VALUE = 232,
MUBLAS_ERANGE_INDEX = 233
}

Used to specify the type of range in which eigenvalues will be found in partial eigenvalue decompositions.

Enumerator MUBLAS_ERANGE_ALL​

All eigenvalues will be found.

Enumerator MUBLAS_ERANGE_VALUE​

All eigenvalues in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]} will be found.

Enumerator MUBLAS_ERANGE_INDEX​

The formula {"type":"element","name":"formula","attributes":{"id":"4"},"children":[{"type":"text","text":"$il$"}]}-th through formula {"type":"element","name":"formula","attributes":{"id":"5"},"children":[{"type":"text","text":"$iu$"}]}-th eigenvalues will be found.

Enumeration type mublasEorder_t​

Definition: musolver\_common.h (line 153)

enum mublasEorder_t {
MUBLAS_EORDER_BLOCKS = 241,
MUBLAS_EORDER_ENTIRE = 242
}

Used to specify whether the eigenvalues are grouped and ordered by blocks.

Enumerator MUBLAS_EORDER_BLOCKS​

The computed eigenvalues will be grouped by split-off blocks and arranged in increasing order within each block.

Enumerator MUBLAS_EORDER_ENTIRE​

All computed eigenvalues of the entire matrix will be ordered from smallest to largest.

Enumeration type mublasEsort_t​

Definition: musolver\_common.h (line 164)

enum mublasEsort_t {
MUBLAS_ESORT_NONE = 251,
MUBLAS_ESORT_ASCENDING = 252
}

Used in the Jacobi methods to specify whether the eigenvalues are sorted in increasing order.

Enumerator MUBLAS_ESORT_NONE​

The computed eigenvalues will not be sorted.

Enumerator MUBLAS_ESORT_ASCENDING​

The computed eigenvalues will be sorted in ascending order.

Enumeration type mublasSrange_t​

Definition: musolver\_common.h (line 174)

enum mublasSrange_t {
MUBLAS_SRANGE_ALL = 261,
MUBLAS_SRANGE_VALUE = 262,
MUBLAS_SRANGE_INDEX = 263
}

Used to specify the type of range in which singular values will be found in partial singular value decompositions.

Enumerator MUBLAS_SRANGE_ALL​

All singular values will be found.

Enumerator MUBLAS_SRANGE_VALUE​

All singular values in the half-open interval formula {"type":"element","name":"formula","attributes":{"id":"3"},"children":[{"type":"text","text":"$(vl, vu]$"}]} will be found.

Enumerator MUBLAS_SRANGE_INDEX​

The formula {"type":"element","name":"formula","attributes":{"id":"4"},"children":[{"type":"text","text":"$il$"}]}-th through formula {"type":"element","name":"formula","attributes":{"id":"5"},"children":[{"type":"text","text":"$iu$"}]}-th singular values will be found.

Enumeration type musolverEigMode_t​

Definition: musolver\_common.h (line 183)

enum musolverEigMode_t {
MUSOLVER_EIG_MODE_NOVECTOR = 301,
MUSOLVER_EIG_MODE_VECTOR = 302
}

Enumerator MUSOLVER_EIG_MODE_NOVECTOR​

Enumerator MUSOLVER_EIG_MODE_VECTOR​

Typedefs​

Typedef musolverDnHandle_t​

Definition: musolver\_common.h (line 66)

typedef mublasHandle_t musolverDnHandle_t

Return type: mublasHandle_t

Typedef mublasLayerModeFlags​

Definition: musolver\_common.h (line 68)

typedef uint32_t mublasLayerModeFlags

Return type: uint32_t

Typedef mublasLayerModeEx​

Definition: musolver\_common.h (line 75)

typedef enum mublasLayerModeEx_t mublasLayerModeEx

Used to expand the logging layer modes offered for muSOLVER logging.

Return type: enum mublasLayerModeEx_t

Typedef mublasDirect​

Definition: musolver\_common.h (line 84)

typedef enum mublasDirect_t mublasDirect

Used to specify the order in which multiple Householder matrices are applied together.

Return type: enum mublasDirect_t

Typedef mublasStorev​

Definition: musolver\_common.h (line 93)

typedef enum mublasStorev_t mublasStorev

Used to specify how householder vectors are stored in a matrix of vectors.

Return type: enum mublasStorev_t

Typedef mublasSvect​

Definition: musolver\_common.h (line 106)

typedef enum mublasSvect_t mublasSvect

Used to specify how the singular vectors are to be computed and stored.

Return type: enum mublasSvect_t

Typedef mublasWorkmode​

Definition: musolver\_common.h (line 117)

typedef enum mublasWorkmode_t mublasWorkmode

Used to enable the use of fast algorithms (with out-of-place computations) in some of the routines.

Return type: enum mublasWorkmode_t

Typedef mublasEvect​

Definition: musolver\_common.h (line 128)

typedef enum mublasEvect_t mublasEvect

Used to specify how the eigenvectors are to be computed.

Return type: enum mublasEvect_t

Typedef mublasEform​

Definition: musolver\_common.h (line 137)

typedef enum mublasEform_t mublasEform

Used to specify the form of the generalized eigenproblem.

Return type: enum mublasEform_t

Typedef mublasErange​

Definition: musolver\_common.h (line 148)

typedef enum mublasErange_t mublasErange

Used to specify the type of range in which eigenvalues will be found in partial eigenvalue decompositions.

Return type: enum mublasErange_t

Typedef mublasEorder​

Definition: musolver\_common.h (line 159)

typedef enum mublasEorder_t mublasEorder

Used to specify whether the eigenvalues are grouped and ordered by blocks.

Return type: enum mublasEorder_t

Typedef mublasEsort​

Definition: musolver\_common.h (line 169)

typedef enum mublasEsort_t mublasEsort

Used in the Jacobi methods to specify whether the eigenvalues are sorted in increasing order.

Return type: enum mublasEsort_t

Typedef mublasSrange​

Definition: musolver\_common.h (line 181)

typedef enum mublasSrange_t mublasSrange

Used to specify the type of range in which singular values will be found in partial singular value decompositions.

Return type: enum mublasSrange_t

Typedef musolverRfinfo​

Definition: musolver\_common.h (line 199)

typedef struct musolverRfinfo_t* musolverRfinfo

A handle to a structure containing matrix descriptors and metadata required to interact with muSPARSE when using the muSOLVER re-factorization functionality. It needs to be initialized with musolverDnCreateRfinfo and destroyed with musolverDnDestroyRfinfo.

Return type: struct musolverRfinfo_t *