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库函数可用于数据类型 floatdoublemcComplexmcDoubleComplex。 稀疏 1 级、2 级和 3 级函数遵循以下命名规则: mcsparse<t>[<matrix data format>]<operation>[<output matrix data format>] 。

其中,<t>可以是 SDCZX,分别对应数据类型 floatdoublemcComplexmcDoubleComplex 和通用类型。

<matrix data format>可以是 densecoocsrcsc,分别对应稠密格式,坐标格式,压缩稀疏行格式和压缩稀疏列格式。

最后,<operation> 可以是 axpyigthrgthrzrotisctr,对应1级函数;也可以是 mvsv,对应2级函数;还可以是 mmsm,对应3级函数。

所有函数的返回类型均为 mcsparseStatus_t,在接下来的章节中将详细解释。