CUSOLVER API support status (v2.1)
This topic describes the support status of CUSOLVER APIs compared with cusolver 11.6.4.
All APIs benchmarked against Ampere are software-supported, and there are currently no PPU hardware limitations. Support for additional APIs will be added in future software versions based on priority.
Dense APIs are partially supported, but complex number types are not yet supported. The current API support rate is 39/96 (40.63%). Excluding mixed-precision APIs, which include many helper interfaces, the support rate increases to 39/61 (63.93%).
API | cusolver 11.6.4 | PPU 2.1 | Description |
cusolverGetProperty | Yes | Yes | Helper function. |
cusolverDnCreate | Yes | Yes | Helper function. |
cusolverDnDestroy | Yes | Yes | Helper function. |
cusolverDnSetStream | Yes | Yes | Helper function. |
cusolverDnGetStream | Yes | Yes | Helper function. |
cusolverDnCreateParams | Yes | Yes | Helper function. |
cusolverDnDestroyParams | Yes | Yes | Helper function. |
cusolverDnXpotrf() | Yes | Yes | Performs Cholesky decomposition: A = LLT. |
cusolverDnXpotrs() | Yes | Yes | Solves AX = B for X using Cholesky decomposition. |
cusolverDn<t>potrfBatched() | Yes | Yes | Performs batched Cholesky decomposition. |
cusolverDn<t>potrsBatched() | Yes | Yes | Solves AX = B for X using batched Cholesky decomposition. |
cusolverDn<t>getrf() | Yes | Yes | Performs LU decomposition of a matrix: PA = LU. |
cusolverDn<t>getrs() | Yes | Yes | Solves AX = B for X using LU decomposition. |
cusolverDnXgeqrf() | Yes | Yes | Performs QR decomposition using the Householder method. This is a 64-bit interface. |
cusolverDn<t>geqrf() | Yes | Yes | Performs QR decomposition using the Householder method. This is a 32-bit interface. |
cusolverDn<t>ormqr() | Yes | Yes | C = QC, which premultiplies C by Q (in Householder vector form). |
cusolverDn<t>orgqr() | Yes | Yes | Householder to Q matrix |
cusolverDnCreateGesvdjInfo | Yes | Yes | gesvdj helper function. |
cusolverDnDestroyGesvdjInfo | Yes | Yes | gesvdj helper function. |
cusolverDnXgesvdjSetTolerance | Yes | Yes | Sets the tolerance for gesvdj. |
cusolverDnXgesvdjSetMaxSweeps | Yes | Yes | Sets the maximum number of sweeps for gesvdj. |
cusolverDnXgesvdjSetSortEig | Yes | Yes | Sets whether to sort the singular values. |
cusolverDnXgesvdjGetResidual | Yes | Yes | Returns the residuals of gesvdj. |
cusolverDnXgesvdjGetSweeps | Yes | Yes | gesvdj helper function. |
cusolverDn<t>gesvdj() | Yes | Yes | Performs singular value decomposition (SVD) based on the Jacobi rotation algorithm: A = U * Σ * VH. |
cusolverDn<t>gesvdjBatched | Yes | Yes | Performs batched SVD. |
cusolverDnXgesvd() | Yes | Yes | Performs SVD using QR iteration and Givens rotation. This is a 64-bit interface: A = UΣVH. |
cusolverDn<t>potrf() | Yes | Yes | Performs Cholesky decomposition: A = LLT. This is a 32-bit interface. |
cusolverDn<t>potrs() | Yes | Yes | Solves AX = B for X using Cholesky decomposition. This is a 32-bit interface. |
cusolverDn<t>potri() | Yes | No | Computes the inverse of a matrix using Cholesky decomposition. |
cusolverDnXgetrf() | Yes | Yes | Performs LU decomposition: PA = LU. This is a 64-bit interface. |
cusolverDnXgetrs() | Yes | Yes | Solves AX = B for X using LU decomposition. This is a 64-bit interface. |
cusolverDn<t1><t2>gesv() | Yes | No | Solves AX = B for X using LU decomposition with mixed precision. |
cusolverDnIRSXgesv() | Yes | No | Solves AX = B for X using LU decomposition with mixed precision and combined parameters. |
cusolverDn<t1><t2>gels() | Yes | No | Finds the least-squares solution for AX = B using QR decomposition. Supports mixed precision. |
cusolverDnIRSXgels() | Yes | No | Finds the least-squares solution for AX = B using QR decomposition with mixed precision and combined parameters. |
cusolverDn<t>sytrf() | Yes | No | Performs Bunch-Kaufman decomposition: PAPT =LDLT. |
cusolverDnXsytrs() | Yes | No | Solves for X using Bunch-Kaufman decomposition. |
cusolverDn<t>sytri | Yes | No | |
cusolverDnXtrtri() | Yes | No | Computes the inverse of a tridiagonal matrix. |
cusolverDn<t>gesvd() | Yes | Yes | Performs SVD using QR and Givens methods: A = UΣVH. |
cusolverDnXgesvdp() | Yes | No | Performs SVD using QR and polar decomposition for faster performance: A = UΣVH. |
cusolverDnXgesvdr() | Yes | No | Performs approximate SVD to compute the first K singular values: Ak≈U*Σ*VH. |
cusolverDn<t>gesvdaStridedBatched() | Yes | No | Performs SVD for tall-and-skinny matrices: A = UΣVH. |
cusolverDn<t>gebrd() | Yes | Yes | Performs bidiagonalization: QHAP = B. |
cusolverDn<t>orgbr() | Yes | Yes | The `gebdr` function returns the Q and P matrices. |
cusolverDn<t>sytrd() | Yes | Yes | Performs tridiagonalization: QH*A*Q = T. |
cusolverDn<t>ormtr() | Yes | Yes | C = QC, which is the product of Q (in Householder vector form) and C. |
cusolverDn<t>orgtr() | Yes | Yes | Generates the Q matrix from the output of sytrd. |
cusolverDnXsyevd() | Yes | Yes | Performs eigenvalue decomposition using the divide-and-conquer method. This is a 64-bit interface: A*V = V*Λ. |
cusolverDn<t>syevd() | Yes | Yes | Performs eigenvalue decomposition using the divide-and-conquer method: A*V = V*Λ. |
cusolverDnXsyevdx() | Yes | No | Performs eigenvalue decomposition using the divide-and-conquer method with a specified range. This is a 64-bit interface: A*V = V*Λ. |
cusolverDn<t>syevdx() | Yes | No | Performs eigenvalue decomposition using the divide-and-conquer method with a specified range: A*V = V*Λ. |
cusolverDn<t>sygvd() | Yes | No | Performs eigenvalue decomposition for a matrix pair (A,B) using the divide-and-conquer method: A*V = B*V*Λ. |
cusolverDn<t>sygvdx() | Yes | No | Performs eigenvalue decomposition for a matrix pair (A,B) using the divide-and-conquer method with a specified range: A*V = B*V*Λ. |
cusolverDnCreateSyevjInfo | Yes | No | Helper function for syevj |
cusolverDnDestroySyevjInfo | Yes | No | syevj helper function. |
cusolverDnXsyevjSetTolerance | Yes | No | Sets the tolerance for syevj. |
cusolverDnXsyevjSetMaxSweeps | Yes | No | Sets the maximum number of sweeps for syevj. |
cusolverDnXsyevjSetSortEig | Yes | No | Sets whether to sort the eigenvalues. |
cusolverDnXsyevjGetResidual | Yes | No | Returns the residuals of syevj. |
cusolverDnXsyevjGetSweeps | Yes | No | Syevj helper function |
cusolverDn<t>syevj() | Yes | No | Performs eigenvalue decomposition using the Jacobi method: A*V = V*Λ. |
cusolverDn<t>syevjBatched() | Yes | No | Performs batched eigenvalue decomposition using the Jacobi method: A*V = V*Λ. |
cusolverDn<t>sygvj() | Yes | No | Performs eigenvalue decomposition for a matrix pair (A,B) using the Jacobi method: A*V = B*V*Λ. |
cusolverDnXlarft | Yes | No | |
cusolverDn<t>lauum | Yes | No | |
cusolverDn<t>laswp | Yes | No | |
cusolverDnLoggerSetCallback | Yes | No | Log function. |
cusolverDnLoggerSetFile | Yes | No | Log function. |
cusolverDnLoggerOpenFile | Yes | No | Log function. |
cusolverDnLoggerSetLevel | Yes | No | Log function. |
cusolverDnLoggerSetMask | Yes | No | Log function. |
cusolverDnLoggerForceDisable | Yes | No | Log function. |
cusolverDnSetDeterministicMode | Yes | No | Sets the deterministic mode for all cuSolverDN functions. |
cusolverDnGetDeterministicMode | Yes | No | Queries the deterministic mode that is set for the handle. |
cusolverDnIRSParamsCreate | Yes | No | Helper function for the Iterative Refinement Solver (IRS). |
cusolverDnIRSParamsDestroy | Yes | No | Helper function. |
cusolverDnIRSParamsSetRefinementSolver | Yes | No | Refines the solving algorithm for specific interfaces, such as gesvd and gels. |
cusolverDnIRSParamsSetSolverMainPrecision | Yes | No | Helper function to set the precision. |
cusolverDnIRSParamsSetSolverLowestPrecision | Yes | No | Helper function to set the precision. |
cusolverDnIRSParamsSetSolverPrecisions | Yes | No | Helper function to set the precision. |
cusolverDnIRSParamsSetTol | Yes | No | Sets the tolerance. |
cusolverDnIRSParamsSetTolInner | Yes | No | Sets the inner tolerance for a two-layer solver. |
cusolverDnIRSParamsSetMaxIters | Yes | No | Sets the maximum number of iterations for IRS. |
cusolverDnIRSParamsSetMaxItersInner | Yes | No | The maximum number of iterations for the inner solver. |
cusolverDnIRSParamsGetMaxIters | Yes | No | Gets the maximum number of iterations. |
cusolverDnIRSParamsEnableFallback | Yes | No | Allows backoff to the main precision if the lower precision does not meet the tolerance. |
cusolverDnIRSParamsDisableFallback | Yes | No | Disables precision backoff. |
cusolverDnIRSInfosDestroy | Yes | No | Helper function. |
cusolverDnIRSInfosCreate | Yes | No | Helper function. |
cusolverDnIRSInfosGetNiters | Yes | No | Gets the total number of iterations. A negative number indicates that convergence was not achieved. |
cusolverDnIRSInfosGetOuterNiters | Yes | No | The number of outer iterations. |
cusolverDnIRSInfosRequestResidual | Yes | No | Requests to store the residual norm during the iteration process. |
cusolverDnIRSInfosGetResidualHistory | Yes | No | Gets the history of residual norms. |
cusolverDnIRSInfosGetMaxIters | Yes | No | Gets the maximum number of iterations. |
Multi-GPU APIs are not yet supported.
cusolverMgCreate | Yes | No | Helper function. |
cusolverMgDestroy | Yes | No | Helper function. |
cusolverMgDeviceSelect | Yes | No | Helper function. |
cusolverMgCreateDeviceGrid | Yes | No | Divides the grid across multiple GPUs. |
cusolverMgDestroyGrid | Yes | No | |
cusolverMgCreateMatrixDesc | Yes | No | Creates a matrix descriptor. |
cusolverMgDestroyMatrixDesc | Yes | No | |
cusolverMgSyevd | Yes | No | Performs eigenvalue decomposition of a symmetric matrix using the QR divide-and-conquer method: A*V = V*Λ. |
cusolverMgGetrf | Yes | No | LU decomposition |
cusolverMgGetrs | Yes | No | Solves a system of linear equations. |
cusolverMgPotrf | Yes | No | Cholesky decomposition |
cusolverMgPotrs | Yes | No | Solves a system of symmetric positive-definite linear equations. |
cusolverMgPotri | Yes | No | Computes the inverse of a symmetric positive-definite matrix. |
Refactorization APIs are not yet supported.
cusolverRfCreate | Yes | No | Helper function. |
cusolverRfDestroy | Yes | No | Helper function. |
cusolverRfGetMatrixFormat | Yes | No | Helper function. |
cusolverRfSetMatrixFormat | Yes | No | Helper function. |
cusolverRfSetNumericProperties | Yes | No | Checks for a zero pivot and for boosting. |
cusolverRfGetNumericProperties | Yes | No | |
cusolverRfGetNumericBoostReport | Yes | No | |
cusolverRfSetAlgs | Yes | No | Sets the algorithm used for refactorization. |
cusolverRfGetAlgs | Yes | No | |
cusolverRfGetResetValuesFastMode | Yes | No | Helper function. |
cusolverRfSetResetValuesFastMode | Yes | No | Helper function. |
cusolverRfSetupHost | Yes | No | Helper function. |
cusolverRfSetupDevice | Yes | No | Helper function. |
cusolverRfResetValues | Yes | No | Helper function. |
cusolverRfAnalyze | Yes | No | Refactorization related to LU decomposition and solving. |
cusolverRfRefactor | Yes | No | |
cusolverRfAccessBundledFactorsDevice | Yes | No | |
cusolverRfExtractBundledFactorsHost | Yes | No | |
cusolverRfExtractSplitFactorsHost | Yes | No | |
cusolverRfSolve | Yes | No | |
cusolverRfBatchSetupHost | Yes | No | |
cusolverRfBatchResetValues | Yes | No | |
cusolverRfBatchAnalyze | Yes | No | |
cusolverRfBatchRefactor | Yes | No | |
cusolverRfBatchSolve | Yes | No | |
cusolverRfBatchZeroPivot | Yes | No |
Sparse APIs are not yet supported.
cusolverSpCreate | Yes | No | Helper function. |
cusolverSpDestroy | Yes | No | Helper function. |
cusolverSpSetStream | Yes | No | Helper function. |
cusolverSpGetStream | Yes | No | Helper function. |
cusolverSpXcsrissymHost | Yes | No | Checks if the input matrix is symmetric (host). |
cusolverSp<t>csrlsqvqr() | Yes | No | Finds the least-squares solution. |
Yes | No | Computes eigenvalues. | |
cusolverSp<t>csreigs() | Yes | No | |
cusolverSpXcsrsymrcm() | Yes | No | Symmetric reverse Cuthill-McKee (SRCM) permutation algorithm. |
cusolverSpXcsrsymmdq() | Yes | No | Symmetric minimum degree algorithm (SMDA). |
cusolverSpXcsrsymamd() | Yes | No | Symmetric approximate minimum degree (SAMD) algorithm. |
cusolverSpXcsrmetisnd() | Yes | No | METIS_NodeND wrapper. |
cusolverSpXcsrzfd() | Yes | No | MC21 (zero-free diagonal) algorithm. |
cusolverSpXcsrperm() | Yes | No | Performs permutation transformation: B = PAQT. |
cusolverSp<t>csrlsvlu() | Yes | No | Sparse APIs for LU decomposition and solving. |
cusolverSpCreateCsrluInfoHost | Yes | No | |
cusolverSpDestroyCsrluInfoHost | Yes | No | |
cusolverSpXcsrluAnalysisHost | Yes | No | |
cusolverSp<t>csrluBufferInfoHost | Yes | No | |
cusolverSp<t>csrluFactorHost | Yes | No | |
cusolverSp<t>csrluZeroPivotHost | Yes | No | |
cusolverSp<t>csrluSolveHost | Yes | No | |
cusolverSpXcsrluNnzHost | Yes | No | |
cusolverSp<t>csrluExtractHost | Yes | No | |
cusolverSp<t>csrlsvqr() | Yes | No | Sparse APIs for QR decomposition and solving. |
cusolverSpXcsrqrBatched() | Yes | No | |
cusolverSp<t>csrqrsvBatched | Yes | No | |
cusolverSpCreateCsrqrInfoHost | Yes | No | |
cusolverSpDestroyCsrqrInfoHost | Yes | No | |
cusolverSpXcsrqrAnalysisHost | Yes | No | |
cusolverSp<t>csrqrBufferInfoHost | Yes | No | |
cusolverSp<t>csrqrSetupHost | Yes | No | |
cusolverSp<t>csrqrFactorHost | Yes | No | |
cusolverSp<t>csrqrZeroPivotHost | Yes | No | |
cusolverSp<t>csrqrSolveHost | Yes | No | |
cusolverSpXcsrqrAnalysis | Yes | No | |
cusolverSp<t>csrqrBufferInfo | Yes | No | |
cusolverSp<t>csrqrSetup | Yes | No | |
cusolverSp<t>csrqrFactor | Yes | No | |
cusolverSp<t>csrqrZeroPivot | Yes | No | |
cusolverSp<t>csrqrSolve | Yes | No | |
cusolverSp<t>csrlsvchol() | Yes | No | Sparse APIs for Cholesky decomposition and solving. |
cusolverSpCreateCsrcholInfoHost | Yes | No | |
cusolverSpDestroyCsrcholInfoHost | Yes | No | |
cusolverSpXcsrcholAnalysisHost | Yes | No | |
cusolverSp<t>csrcholBufferInfoHost | Yes | No | |
cusolverSp<t>csrcholFactorHost | Yes | No | |
cusolverSp<t>csrcholZeroPivotHost | Yes | No | |
cusolverSp<t>csrcholSolveHost | Yes | No | |
cusolverSpCreateCsrcholInfo | Yes | No | |
cusolverSpDestroyCsrcholInfo | Yes | No | |
cusolverSpXcsrcholAnalysis | Yes | No | |
cusolverSp<t>csrcholBufferInfo | Yes | No | |
cusolverSp<t>csrcholFactor | Yes | No | |
cusolverSp<t>csrcholZeroPivot | Yes | No | |
cusolverSp<t>csrcholSolve | Yes | No | |
cusolverSp<t>csrcholDiag | Yes | No |