【问题标题】:matrix multiplication - is Cuda worth it?矩阵乘法 - Cuda 值得吗?
【发布时间】:2017-09-11 02:59:38
【问题描述】:

我有一个涉及许多矩阵乘法(经典和克罗内克积)的问题。我读到 GPU 适合这项任务,因为速度是我的主要目标,所以我正在考虑将 Cuda 与 c++ 一起使用。但是我必须先学习 Cuda。所以在我开始浪费时间之前,我想我应该先问问更聪明的人。 Cuda 可以加快我的计算速度吗?矩阵通常在 20x50 左右非常小。有时涉及第三个维度,因此它变成一个 20x50x10 矩阵。我只能一次将几个矩阵相乘(10-100)。但是我需要一个接一个地进行数百万次迭代(蒙特卡洛模拟)。目前我正在使用犰狳和matlab。

【问题讨论】:

  • 如果你的矩阵更大,你会看到一些加速,我认为现在你可能会面临比计算时间更严重的带宽瓶颈
  • 只有当 Cuda 是可并行化的并且您正确执行时,您才能使用 Cuda 加快计算速度。 Matlab 可能已经并行化了矩阵运算。
  • 不太可能但肯定。 Matlab/octave 有很好的向量化,这种大小的矩阵绝对没有问题。
  • 如果将一次迭代的输出馈送到另一次迭代的输入,则数据传输可能不是瓶颈。否则,您将面临数据移动开销。一种可能的解决方案是重叠计算和传输开销,但我不确定 matlab 是否支持此功能。

标签: c++ matlab cuda armadillo


【解决方案1】:

如果您的矩阵更大,您会看到一些加速,现在您将面临比计算时间延迟更严重的数据带宽瓶颈。

值得考虑的事情是查看数学技巧,这些技巧可以让您(基于您的计算)将多个实例组合成更大的矩阵,然后进行传输和计算。但通常这是相当困难的,而且可能并不总是可行的。

【讨论】:

    猜你喜欢
    • 2012-05-06
    • 2011-09-07
    • 2012-12-09
    • 1970-01-01
    • 2012-02-07
    • 2011-04-21
    • 2012-12-13
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多