
CUSPARSE API学习
Coder802
你的努力,终将成就不可替代的自己。
展开
-
cuSparse 求稀疏矩阵方程组
在Ubuntu系统上利用cuSparse库求解稀疏矩阵线性方程组原创 2024-03-26 14:45:11 · 488 阅读 · 0 评论 -
cuSPARSE库:(十七)cusparseStatus_t 返回信息
(1)cusparseStatus_t 结构体的形式typedef enum{ CUSPARSE_STATUS_SUCCESS=0, CUSPARSE_STATUS_NOT_INITIALIZED=1, CUSPARSE_STATUS_ALLOC_FAILED=2, CUSPARSE_STATUS_INVALID_VALUE=3, CUSPARSE_STATUS_ARCH_MISMATCH=4, CUSPARSE_STATUS_MAPPING_ERRO...原创 2020-05-22 15:54:34 · 1145 阅读 · 0 评论 -
cuSPARSE库:(十五)已经弃用的函数(1)
NV官方在DU-06709-001_v10.2 | November 2019发布的cuSPARSE API说明文档中,讲明了一些已经启动的函数,并且用已有的函数来代替。此处,整理几个函数,主要是针对非线性方程组求解的。拟弃用的函数 替代函数 功能说明 cusparse<t>csrsv_analysis() cusparse<t>csrsv2_analysis() ...原创 2020-05-20 12:16:37 · 416 阅读 · 0 评论 -
cuSPARSE库:(十四)求解稀疏三角形线性系统(solution of sparse triangular linear systems)
在cuSPARSE中,求解稀疏三角形线性系统(solution of sparse triangular linear systems)分两步实现:(1)分析阶段:调用函数csrsv_analysis()分析稀疏三角形矩阵,确定矩阵中各元素的依赖关系。该分析针对给定矩阵的稀疏格式和所选的cusparseOperation _t类型。分析阶段的信息存储在cusparseSolveAnalysisInfo_t类型的参数中,该参数先前已通过调用cusparseCreateSolveAnalysisInfo(.原创 2020-05-20 11:35:12 · 824 阅读 · 1 评论 -
cuSPARSE库:(十三)cusparseDestroySolveAnalysisInfo()
函数原型:cusparseStatus_t cusparseDestroySolveAnalysisInfo(cusparseSolveAnalysisInfo_t info)函数功能:销毁和释放结构体所需的任何内存。变量说明:info 为求解和分析结构体注意:该函数将在接下来的更新版本中被删除...原创 2020-05-20 11:03:16 · 218 阅读 · 0 评论 -
cuSPARSE库:(十二)cusparseDestroyMatDescr()
函数原型:cusparseStatus_t cusparseDestroyMatDescr(cusparseMatDescr_t descrA)函数功能:释放为矩阵描述符分配的内存。参数说明:descrA 为矩阵描述符原创 2020-05-20 10:58:47 · 299 阅读 · 0 评论 -
cuSPARSE库:(十一)cusparseCreateSolveAnalysisInfo()
函数原型:cusparseStatus_t cusparseCreateSolveAnalysisInfo(cusparseSolveAnalysisInfo_t *info)函数功能:创建并初始化求解和分析的结构体,赋默认值;变量解释:info,指向求解和分析的结构体的指针原创 2020-05-20 10:46:23 · 387 阅读 · 0 评论 -
cuSPARSE库:(十)cusparseCreateMatDescr()
函数原型:cusparseStatus_t cusparseCreateMatDescr(cusparseMatDescr_t *descrA)函数功能:初始化矩阵描述符(descriptor),设定矩阵类型和索引基分别为默认的CUSPARSE_MATRIX_TYPE_GENERAL和CUSPARSE_INDEX_BASE_ZERO。但是不会初始化其他字段变量解释:descrA指向矩阵描述符的指针...原创 2020-05-20 10:23:27 · 497 阅读 · 0 评论 -
cuSPARSE库:(九)cusparseSetStream()
函数原型:cusparseStatus_t cusparseSetStream(cusparseHandle_t handle, cudaStream_t streamId)函数功能:设定被cuSPARSE 库调用的流,用于执行所有的调用的函数。变量解释:handle为输入变量,用于控制cuSPARSE上下文的句柄 streamId为输出变量,表示用于cuSPARSE库的流ID...原创 2020-05-20 09:59:40 · 299 阅读 · 0 评论 -
cuSPARSE库:(八)cusparseGetStream()
函数原型:cusparseStatus_t cusparseGetStream(cusparseHandle_t handle, cudaStream_t *streamId)函数功能:该函数用于获取cuSPARSE库的流,用于执行所有的cuSPARSE库函数的调用。如果cuSPARSE库流没有设定,所有的 kernels函数都使用默认的NULL流。...原创 2020-05-20 09:51:41 · 277 阅读 · 0 评论 -
cuSPARSE库:(七)cusparseCreate()的功能与作用
函数原型:cusparseStatus_t cusparseCreate(cusparseHandle_t *handle)函数功能:初始化cuSPARSE 库,并且创建一个句柄控制cuSPARSE的上下文调用位置:该函数必须在其他任何 cuSPARSE API 之前被调用,用于分配访问GPU必须的硬件资源。使用方法:cusparseHandle_t handle = 0; cusparseCreate(&handle );...原创 2020-05-20 08:22:05 · 893 阅读 · 0 评论 -
cuSPARSE库:(六)cusparseMatrixType_t的说明
cusparseMatrixType_t:此类型指示存储在稀疏存储中的矩阵的类型。注意,对于对称矩阵、厄米矩阵和三角矩阵,假设只存储它们的上下部分。矩阵类型(MatrixType)和填充模式的基本思想是保持对称/厄米矩阵的最小存储量,并利用SpMV(Sparse Matrix Vector multiplication)的对称性...原创 2020-05-18 12:40:25 · 659 阅读 · 0 评论 -
cuSPAESE库:(五)零基索引和一基索引
cuSPAESE库支持基于零和一的索引。零基索引:行标和列标的索引值均从0开始,类似于C语言中的数组索引方式一基所以:行标和列标的索引值均从1开始,类似于MATLAB中的数组索引方式索引基是通过cusparseIndexBase_t类型选择的,它作为独立参数或作为矩阵描述符cusparseMatDescr_t类型中的字段传递...原创 2020-05-18 11:18:56 · 430 阅读 · 0 评论 -
cuSPARSE库:(四)不同矩阵格式在内存中的存储方式
(1)Dense Format,以列优先格式(column-major format)存储在内存中,(2)Coordinate Format (COO),以行优先格式(row-major format)存储在内存中(3)Compressed Sparse Row Format (CSR),以行优先格式(row-major format)存储在内存中...原创 2020-05-18 11:06:53 · 796 阅读 · 0 评论 -
cuSPARSE库:(三)Thread Safety(线程安全)
cuSPARSE库是线程安全的,其函数可以从多个主机线程调用。但是,同时读/写相同对象(或同一句柄)是不安全的。因此,每个线程的句柄必须是私有的,即每个线程只有一个句柄是安全的。这在写MPI+CUDA程序的时候一定要注意。...原创 2020-05-13 20:59:14 · 326 阅读 · 0 评论 -
cuSPARSE库:(二)静态库的支持
从6.5版本开始,cuSPARSE库也发布了Linux和Mac上的静态库libcusparse_static.a,cuSPARSE的静态库和其他所有的静态数学函数库依赖于一个公共的线程抽象层库libculibos.a(Linux系统中)或者culibos.lib(Win系统中)。编译示例:在Linux系统中,用动态的cuSPARSE库的命令:nvcc myCusparseApp.c -lcusparse -o myCusparseApp在Linux系统中,用静态的cuSPARSE库的命令:原创 2020-05-13 18:36:36 · 685 阅读 · 0 评论 -
cuSPARSE库:(一)函数的异步执行
cuSPARSE库函数相对于主机(Host)是异步执行的,在获取最后结果之前会将进程的控制权返回到主机(Host)的应用程序。我们需要使用cudaDeviceSynchronize()函数来确保特定cuSPARSE库函数的执行能正常完成。...原创 2020-05-13 17:40:40 · 435 阅读 · 0 评论 -
cusparseScsrsv_analysis函数导致内存暴涨问题
我在写的程序中加入了cusparseScsrsv_analysis函数,具体参数设置如下:cusparseScsrsv_analysis(handle,CUSPARSE_OPERATION_NON_TRANSPOSE,n_rows,n_vals,descr,d_csrVals,d_csrRows,d_csrCols,Info);在程序中加入了这个函数,导致了程序消耗内存暴增,这是什么原因呢原创 2018-01-10 10:12:21 · 372 阅读 · 0 评论