2. 使用 mcSPARSE API

本章介绍如何使用mcSPARSE库的API。

2.1. 安装mcSPARSE

mcSPARSE是与MXMACA工具包一同发布并安装的库。MXMACA工具包的安装,参见《曦云系列通用GPU 快速上手指南》。 在安装MXMACA工具包后,请确保已设置环境变量 MACA_PATH。

export MACA_PATH=/opt/maca

mcSPARSE API相关文件如下所示。

#header location:
${MACA_PATH}/include/mcsparse

#lib location:
${MACA_PATH}/lib/libmcsparse.so

在使用mcSPARSE库编译代码之前,请确保已设置环境变量ISU_FASTMODEL为1。

export ISU_FASTMODEL=1

2.2. 标量参数

在 mcSPARSE API 中,标量参数 alpha 和 beta 可以通过主机或设备上的引用来传递。 返回标量结果的少数函数,比如 nnz(),会通过主机或设备上的引用返回结果值。 虽然这些函数会立即返回,类似于那些返回矩阵和向量结果的函数,但是直到在GPU上执行完整个程序后,标量结果才会准备好。 当用户尝试从主机读取这个标量结果时,需要适当地同步这个操作。

这一特性使得mcSPARSE库函数可以完全异步地使用流进行执行,即使alpha和beta是由前一个内核生成的。 例如,当使用该库来实现线性系统和特征值问题的迭代求解方法时,就会出现这种情况。