1. 介绍
mcSPARSE库是基于MetaX MXMACA® 运行时(MXMACA工具包的一部分)实现的。 它提供了稀疏矩阵和向量的基本线性代数子程序(BLAS)。 该库旨在从C++代码中调用。 它使用GPU设备上运行的MetaX的MXMACA运行库。 mcSPARSE库的目标是处理具有大量(结构性)零元素的矩阵,这些零元素约占总条目的95%。
要使用 mcSPARSE API,应用程序必须在 GPU 内存空间中分配所需的矩阵和矢量,将数据填入其中,调用所需的 mcSPARSE API 函数序列,然后将结果从 GPU 内存空间上传回主机。
mcSPARSE的功能被划分为以下几个类别:
mcSPARSE 辅助函数:描述可用于后续库调用的辅助函数。
mcSPARSE 转换函数:描述对稀疏格式的矩阵执行操作以获得不同的矩阵格式。
mcSPARSE BLAS 1 级函数:描述稀疏向量和稠密向量之间的操作。
mcSPARSE BLAS 2 级函数:描述稀疏矩阵和稠密向量之间的操作。
mcSPARSE BLAS 3 级函数:描述稀疏矩阵与稀疏或稠密矩阵之间的操作。
mcSPARSE 预处理函数:描述稀疏预处理函数。
mcSPARSE 重排序函数:描述对稀疏格式的矩阵执行重排序操作。
mcSPARSE 通用函数:描述处理稀疏矩阵的通用操作。
1.1. 命名规则
mcSPARSE库函数可用于数据类型 float, double, mcComplex 和 mcDoubleComplex。
稀疏 1 级、2 级和 3 级函数遵循以下命名规则:
mcsparse<t>[<matrix data format>]<operation>[<output matrix data format>] 。
其中,<t>可以是 S, D, C, Z 或 X,分别对应数据类型 float, double, mcComplex, mcDoubleComplex 和通用类型。
<matrix data format>可以是 dense, coo, csr 或 csc,分别对应稠密格式,坐标格式,压缩稀疏行格式和压缩稀疏列格式。
最后,<operation> 可以是 axpyi、 gthr、 gthrz、 roti 或 sctr,对应1级函数;也可以是 mv 或 sv,对应2级函数;还可以是 mm 或 sm,对应3级函数。
所有函数的返回类型均为 mcsparseStatus_t,在接下来的章节中将详细解释。