CUDA:复数标量*双稀疏矩阵*双向量

时间:2018-04-26 07:03:59

标签: c++ math cuda

我需要一个在CUDA上执行操作y = y + s*A*x的函数。 其中y是复数向量(例如cuDoubleComplex),x是双向量,A是双稀疏矩阵(csr格式),s是复杂的标量。

问题:是否有任何库可以执行该操作?

我想跳过将一切变为复杂的事情,除非你让我相信它可以有效地完成。

P.S。

不幸的是,它不能通过cusparse函数cusparseCsrmvEx()

来完成

1 个答案:

答案 0 :(得分:1)

  

是否有任何库可以执行该操作?

几乎肯定不是。您需要做的类型促销几乎可以规定。你可以做的是:

  1. cusparseDcsrmv产生z0 = A * x
  2. 自定义内核或可能推进操作以产生z1 = complex(z0)
  3. cublas Zaxpy计算y = y + s * z1
  4. 更好的做法是将自定义内核编写到一起融合(2)和(3)。你的选择。