CUSOLVER APIs支持状态(v2.0)
对比cusolver 11.6.4,cusolver APIs支持状况如下表:
对标Ampere所有API都是软件可支持的,目前无PPU硬件限制的因素;后续软件版本将根据优先级逐步完善。
Dense API部分已支持,暂不支持复数类型。目前API支持率39/96 = 40.63%,去除辅助接口较多的混合精度API后支持率39/61 = 63.93%。
api | cusolver 11.6.4 | PPU 1.7 | 功能说明 |
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 | A=LLT , cholesky 分解。 |
cusolverDnXpotrs() | Yes | Yes | AX=B,cholesky求解X |
cusolverDn<t>potrfBatched() | Yes | Yes | cholesky分解 batched |
cusolverDn<t>potrsBatched() | Yes | Yes | AX=B,cholesky求解X batched形式 |
cusolverDn<t>getrf() | Yes | Yes | PA=LU,矩阵的LU分解 |
cusolverDn<t>getrs() | Yes | Yes | AX=B,LU 分解求解X |
cusolverDnXgeqrf() | Yes | Yes | A=QR,QR分解 Householder 64bit接口 |
cusolverDn<t>geqrf() | Yes | Yes | A=QR,QR分解 Householder 32bit接口 |
cusolverDn<t>ormqr() | Yes | Yes | C=QC,Q(householder向量形式) 乘 C |
cusolverDn<t>orgqr() | Yes | Yes | Householder -> Q矩阵 |
cusolverDnCreateGesvdjInfo | Yes | Yes | gesvdj helper function |
cusolverDnDestroyGesvdjInfo | Yes | Yes | gesvdj helper function |
cusolverDnXgesvdjSetTolerance | Yes | Yes | 配置gesvdj容差 |
cusolverDnXgesvdjSetMaxSweeps | Yes | Yes | 配置gesvdj最大sweep次数 |
cusolverDnXgesvdjSetSortEig | Yes | Yes | 配置是否对奇异值排序 |
cusolverDnXgesvdjGetResidual | Yes | Yes | 返回gesvdj的误差 |
cusolverDnXgesvdjGetSweeps | Yes | Yes | gesvdj helper function |
cusolverDn<t>gesvdj() | Yes | Yes | A=U*Σ*VH基于Jacobi旋转的SVD分解算法 |
cusolverDn<t>gesvdjBatched | Yes | Yes | SVD分解 batched形式 |
cusolverDnXgesvd() | Yes | Yes | A=UΣVH QR迭代,Givens变换 SVD分解算法 64 bit |
cusolverDn<t>potrf() | Yes | Yes | A=LLT ,cholesky 分解。 32bit接口 |
cusolverDn<t>potrs() | Yes | Yes | AX=B,cholesky求解X。 32bit接口 |
cusolverDn<t>potri() | Yes | No | 使用cholesky分解求逆 |
cusolverDnXgetrf() | Yes | Yes | PA=LU,LU分解 64bit接口 |
cusolverDnXgetrs() | Yes | Yes | AX=B,LU分解求X 64bit接口 |
cusolverDn<t1><t2>gesv() | Yes | No | AX=B,LU分解求X 混合精度 |
cusolverDnIRSXgesv() | Yes | No | AX=B,LU分解求X 混合精度,参数组合 |
cusolverDn<t1><t2>gels() | Yes | No | AX=B,QR分解,最小二乘解,支持混合精度 |
cusolverDnIRSXgels() | Yes | No | AX=B,QR分解,最小二乘解,支持混合精度,参数组合 |
cusolverDn<t>sytrf() | Yes | No | PAPT =LDLT Bunch-Kaufman分解 |
cusolverDnXsytrs() | Yes | No | Bunch-Kaufman分解 解X |
cusolverDn<t>sytri | Yes | No | |
cusolverDnXtrtri() | Yes | No | 计算三对角矩阵的逆 |
cusolverDn<t>gesvd() | Yes | Yes | A=UΣVH SVD分解 QR Givens |
cusolverDnXgesvdp() | Yes | No | A=UΣVH SVD分解QR & polar,速度更快 |
cusolverDnXgesvdr() | Yes | No | Ak≈U*Σ*VH 近似计算前K个奇异值的SVD分解 |
cusolverDn<t>gesvdaStridedBatched() | Yes | No | A=UΣVH tall-skinny矩阵 SVD分解 |
cusolverDn<t>gebrd() | Yes | Yes | QHAP=B 二对角化 |
cusolverDn<t>orgbr() | Yes | Yes | gebdr --> Q, P矩阵 |
cusolverDn<t>sytrd() | Yes | Yes | QH*A*Q=T 三对角化 |
cusolverDn<t>ormtr() | Yes | Yes | C=QC,Q(householder向量形式) 乘 C |
cusolverDn<t>orgtr() | Yes | Yes | sytrd -->Q矩阵 |
cusolverDnXsyevd() | Yes | Yes | A*V=V*Λ ,特征值分解 分治法 64bit |
cusolverDn<t>syevd() | Yes | Yes | A*V=V*Λ ,特征值分解 分治法 |
cusolverDnXsyevdx() | Yes | No | A*V=V*Λ ,特征值分解 分治法 64bit 范围设定 |
cusolverDn<t>syevdx() | Yes | No | A*V=V*Λ, 特征值分解 分治法 范围设定 |
cusolverDn<t>sygvd() | Yes | No | A*V=B*V*Λ 矩阵对(A,B)特征值分解 分治法 |
cusolverDn<t>sygvdx() | Yes | No | A*V=B*V*Λ 矩阵对(A,B)特征值分解 分治法 范围设定 |
cusolverDnCreateSyevjInfo | Yes | No | syevj helper function |
cusolverDnDestroySyevjInfo | Yes | No | syevj helper function |
cusolverDnXsyevjSetTolerance | Yes | No | 配置syevj容差 |
cusolverDnXsyevjSetMaxSweeps | Yes | No | 配置syevj最大sweep次数 |
cusolverDnXsyevjSetSortEig | Yes | No | 配置是否对特征值排序 |
cusolverDnXsyevjGetResidual | Yes | No | 返回syevj的误差 |
cusolverDnXsyevjGetSweeps | Yes | No | syevj helper function |
cusolverDn<t>syevj() | Yes | No | A*V=V*Λ 特征值分解 Jacobi方法 |
cusolverDn<t>syevjBatched() | Yes | No | A*V=V*Λ 特征值分解 Jacobi方法 batched |
cusolverDn<t>sygvj() | Yes | No | A*V=B*V*Λ 矩阵对(A,B)特征值分解 Jacobi形式 |
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 of all cuSolverDN functions |
cusolverDnGetDeterministicMode | Yes | No | queries the deterministic mode which is set for handle |
cusolverDnIRSParamsCreate | Yes | No | helper function Iterative Refinement Solver (IRS) |
cusolverDnIRSParamsDestroy | Yes | No | helper function |
cusolverDnIRSParamsSetRefinementSolver | Yes | No | 细化某些接口的求解算法(gesvd, gels) |
cusolverDnIRSParamsSetSolverMainPrecision | Yes | No | helper function 设置精度 |
cusolverDnIRSParamsSetSolverLowestPrecision | Yes | No | helper function 设置精度 |
cusolverDnIRSParamsSetSolverPrecisions | Yes | No | helper function 设置精度 |
cusolverDnIRSParamsSetTol | Yes | No | 设置容差 |
cusolverDnIRSParamsSetTolInner | Yes | No | 设置两层求解器的内层容差 |
cusolverDnIRSParamsSetMaxIters | Yes | No | 设置IRS最大迭代次数 |
cusolverDnIRSParamsSetMaxItersInner | Yes | No | 内层求解器的最大迭代次数 |
cusolverDnIRSParamsGetMaxIters | Yes | No | 获取最大迭代次数 |
cusolverDnIRSParamsEnableFallback | Yes | No | 低精度无法满足容差时允许回退到主精度 |
cusolverDnIRSParamsDisableFallback | Yes | No | 不允许回退精度 |
cusolverDnIRSInfosDestroy | Yes | No | helper function |
cusolverDnIRSInfosCreate | Yes | No | helper function |
cusolverDnIRSInfosGetNiters | Yes | No | 获取总迭代次数,负数表示未收敛 |
cusolverDnIRSInfosGetOuterNiters | Yes | No | 外部迭代次数 |
cusolverDnIRSInfosRequestResidual | Yes | No | 需要存储迭代过程中残差范数 |
cusolverDnIRSInfosGetResidualHistory | Yes | No | 获取历史残差范数 |
cusolverDnIRSInfosGetMaxIters | Yes | No | 获取最大迭代次数 |
MultiGPU API暂未支持
cusolverMgCreate | Yes | No | helper function |
cusolverMgDestroy | Yes | No | helper function |
cusolverMgDeviceSelect | Yes | No | helper function |
cusolverMgCreateDeviceGrid | Yes | No | 多卡分grid |
cusolverMgDestroyGrid | Yes | No | |
cusolverMgCreateMatrixDesc | Yes | No | 创建矩阵描述符 |
cusolverMgDestroyMatrixDesc | Yes | No | |
cusolverMgSyevd | Yes | No | A*V=V*Λ 对称矩阵的特征值分解 QR 分治法 divide and conquer |
cusolverMgGetrf | Yes | No | LU分解 |
cusolverMgGetrs | Yes | No | 线性方程组求解 |
cusolverMgPotrf | Yes | No | cholesky分解 |
cusolverMgPotrs | Yes | No | 对称正定线性方程组求解 |
cusolverMgPotri | Yes | No | 对称正定矩阵求逆 |
Refactorization API暂未支持
cusolverRfCreate | Yes | No | helper function |
cusolverRfDestroy | Yes | No | helper function |
cusolverRfGetMatrixFormat | Yes | No | helper function |
cusolverRfSetMatrixFormat | Yes | No | helper function |
cusolverRfSetNumericProperties | Yes | No | checking for ‘’zero’’ pivot and for boosting |
cusolverRfGetNumericProperties | Yes | No | |
cusolverRfGetNumericBoostReport | Yes | No | |
cusolverRfSetAlgs | Yes | No | sets the algorithm used for the 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 | LU分解/求解相关Refactorization |
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 API暂未支持
cusolverSpCreate | Yes | No | helper function |
cusolverSpDestroy | Yes | No | helper function |
cusolverSpSetStream | Yes | No | helper function |
cusolverSpGetStream | Yes | No | helper function |
cusolverSpXcsrissymHost | Yes | No | 判断输入矩阵是否是对称矩阵(host) |
cusolverSp<t>csrlsqvqr() | Yes | No | 最小二乘求解 |
Yes | No | 特征值计算 | |
cusolverSp<t>csreigs() | Yes | No | |
cusolverSpXcsrsymrcm() | Yes | No | SRCM排列算法 |
cusolverSpXcsrsymmdq() | Yes | No | SMDA算法 |
cusolverSpXcsrsymamd() | Yes | No | SAMD算法 |
cusolverSpXcsrmetisnd() | Yes | No | METIS_NodeND wrapper |
cusolverSpXcsrzfd() | Yes | No | MC21(对角线zero-free)算法 |
cusolverSpXcsrperm() | Yes | No | 排列变换B=PAQT |
cusolverSp<t>csrlsvlu() | Yes | No | LU分解/求解Sparse API |
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 | QR分解/求解Sparse API |
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 | cholesky分解/求解sparse API |
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 |