【发布时间】:2017-09-11 02:59:38
【问题描述】:
我有一个涉及许多矩阵乘法(经典和克罗内克积)的问题。我读到 GPU 适合这项任务,因为速度是我的主要目标,所以我正在考虑将 Cuda 与 c++ 一起使用。但是我必须先学习 Cuda。所以在我开始浪费时间之前,我想我应该先问问更聪明的人。 Cuda 可以加快我的计算速度吗?矩阵通常在 20x50 左右非常小。有时涉及第三个维度,因此它变成一个 20x50x10 矩阵。我只能一次将几个矩阵相乘(10-100)。但是我需要一个接一个地进行数百万次迭代(蒙特卡洛模拟)。目前我正在使用犰狳和matlab。
【问题讨论】:
-
如果你的矩阵更大,你会看到一些加速,我认为现在你可能会面临比计算时间更严重的带宽瓶颈
-
只有当 Cuda 是可并行化的并且您正确执行时,您才能使用 Cuda 加快计算速度。 Matlab 可能已经并行化了矩阵运算。
-
不太可能但肯定。 Matlab/octave 有很好的向量化,这种大小的矩阵绝对没有问题。
-
如果将一次迭代的输出馈送到另一次迭代的输入,则数据传输可能不是瓶颈。否则,您将面临数据移动开销。一种可能的解决方案是重叠计算和传输开销,但我不确定 matlab 是否支持此功能。