使用英特尔 MKL 的稀疏矩阵矩阵乘法

计算科学 稀疏矩阵 英特尔-mkl
2021-12-21 10:00:26

D是一个稀疏矩阵。我要计算D×DT. 作为D相当大,所以我是行切片D. 这意味着对于一个范围(i,j), 我在计算C=D(i:j,:)×DT并执行一些后处理C. 我正在根据我的可用内存选择索引。我想知道英特尔 MKL 中是否有任何内置函数可以做到这一点。我现在正在做的是:

  1. 预计算DT.
  2. 对于行切片(i,j), 计算 CSR 处理程序D(i:j,:)
  3. C=D(i:j,:)×DT, 使用 mkl_sparse_s_spmmd

这种方法使用额外的内存来计算和保存DT作为预处理步骤。我正在使用spmmd,因为生成的矩阵会很密集。spmmd允许我们对第一个矩阵进行操作,但不能对第二个矩阵进行操作。还有一个sp2m,但在这种情况下,相乘矩阵是稀疏的。我错过了什么方法?

1个回答

https://software.intel.com/en-us/mkl-developer-reference-c-mkl-sparse-syrk

此例程专为您的问题而设计。它将输出结果矩阵的上半部分,这通常是可取的。