2

我正在使用 CUSPARSE 函数来执行稀疏矩阵向量/矩阵矩阵乘法。

稀疏矩阵以 CSR 格式存储。在 Visual Profiler 下分析应用程序时,我注意到每次调用 cusparse(S/D)csrmv 或 cusparse(S/D)csrmm 都有一个内存分配/memset/copy。

通过查看分析器中的内核名称,看起来 CUSPARSE 在每次调用时都会将矩阵从 CSR 格式转换为 HYB 格式,这在我的情况下是浪费时间,因为我可以在启动计算之前以正确的格式创建矩阵。

虽然 CUSPARSE 有 HYB 版本的矩阵向量乘法 (hybmv),但它没有对应的矩阵矩阵乘法版本,看起来只支持 CSR 格式。

在 CUSPARSE 中进行矩阵-矩阵 muls 时是否可以避免矩阵转换?

4

1 回答 1

3

我四处询问了这件事。我收到的答案是 cusparse 在执行操作时不会从 CSR 转换为 HYB 格式csrmv。您看到的 hyb 可能是内部内核名称的错位形式,如下所示:

_Z14csrMm_hyb_coreIdLi7ELi6ELi2ELi1ELb0EEv19cusparseCsrMmParamsIT_Ei

这是一个名称中包含 hyb 的 cusparse 内部内核,但它与 HYB 格式无关。

于 2013-07-23T19:18:45.923 回答