【问题标题】:CUDA: complex scalar * double sparse matrix * double vectorCUDA:复标量 * 双稀疏矩阵 * 双向量
【发布时间】:2018-04-27 02:44:04
【问题描述】:

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

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

我想跳过所有复杂的转换,除非你让我相信它可以有效地完成。

附:

很遗憾,cusparse函数无法做到这一点cusparseCsrmvEx()

【问题讨论】:

  • 如果您正在寻找一个 single 库函数来执行此操作,使用您指定的数据类型,我认为您不会找到它。如果您正在寻找一系列库函数,当然应该可以。

标签: c++ math cuda


【解决方案1】:

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

几乎肯定不会。你需要做的类型提升几乎可以排除这种情况。你可以这样做:

  1. cusparseDcsrmv 产生 z0 = A*x
  2. 自定义内核或推力操作以产生 z1 = complex(z0)
  3. cublas Zaxpy 计算 y = y + s * z1

更好的是编写一个自定义内核来将 (2) 和 (3) 融合在一起。您的选择。

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多