【问题标题】:Matrix operations in CUDACUDA 中的矩阵运算
【发布时间】:2011-03-17 19:06:39
【问题描述】:

在 CUDA 中组织矩阵运算的最佳方式是什么(就性能而言)? 例如,我想计算C * C^(-1) * B^T + CCB 是矩阵。

我应该为乘法、转置等编写单独的函数还是为整个表达式编写一个函数?

哪种方式最快?

【问题讨论】:

  • 提示一下:对于乘法,有一种算法叫做“动态规划”,在 MIT Introduction to Algorithms 中,这些算法的一个例子是如何选择最快的顺序来相乘多个矩阵.

标签: c cuda


【解决方案1】:

我建议您使用 CUBLAS 库。它通常比您自己编写的所有内容都更快速、更可靠。另外它的API类似于数值线性代数的标准库BLAS库。

【讨论】:

    【解决方案2】:

    我认为答案很大程度上取决于矩阵的大小。

    如果您可以在共享内存中放置一个矩阵,我可能会使用一个块来计算它并将所有内容都放在一个内核中(可能更大,这个计算只是其中的一部分)。希望如果您有更多矩阵,并且需要多次计算上述方程,您可以并行执行,利用所有 GPU 计算能力。

    但是,如果您的矩阵更大,您将需要更多的块来计算(查看 CUDA 手册中的矩阵乘法示例)。在继续进行等式的下一部分之前,您需要保证所有块都完成了乘法运算,如果是这样,您将需要对每个操作进行内核调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-22
      • 2017-07-06
      • 2014-05-04
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2020-02-28
      相关资源
      最近更新 更多