CuSparse 第一章
(部分翻译)
第一章 介绍
1. 命名惯例
CUSPARSE 包含了一系列处理稀疏矩阵的基本的线性代数子程式。是cuda函数库的一部分,从C,C++中调用。
该库例程可以分为四类:
第一层:在稠密向量格式和稀疏矩阵向量格式之间的操作
第二层:在稀疏矩阵格式和稠密向量格式之间的操作
第三层:在稀疏矩阵格式和一组稠密向量之间的操作
转换:不同格式矩阵之间转换操作
CUSparse支持的数据格式有 float,double, cuComplex, cuDoubleComplex.
稀疏矩阵第一层,第二层,第三层函数都遵循这样的命名惯例:
cusparse<t>[<matrix data format>]<operation>[<output matrix data format>]Introduction
其中 <t> 可以是 S, D, C, Z, or X, 分别对应数据类型 float, double, cuComplex, cuDoubleComplex, and the generic type.
<matrix data format> 可以是 dense, coo, csr, csc, or hyb, 分别对应 dense, coordinate, compressed sparse row, compressed sparse column, and hybrid storage formats.
最后, <operation> 可以是 axpyi, doti, dotci, gthr, gthrz, roti, or sctr, 对应 the Level 1 functions; 也可以是 mv or sv, 对应 Level 2 functions, 或者 mm or sm, 对应 the Level 3 functions.
所有这些函数的返回值都是 cusparseStatus_t 类型的。
2. 异步执行
The CUSPARSE 库函数是类似主机的,异步执行的, 并且在结果算出来的时候会回到主机控制。
开发这可以用 cudaDeviceSynchronize() 函数去确认CUSPARSE函数库里的命令已经执行完毕。 开发者也可以用 cudaMemcpy() routine 去拷贝数据,且不需要用 cudaDeviceSynchronize() 来确认执行完毕,如果参数是cudaMemcpyDeviceToHost 或者cudaMemcpyHostToDevice.
参考文档:http://docs.nvidia.com/cuda/pdf/CUSPARSE_Library.pdf 《CUSPARSE LIBRARY》