2

我正在使用 MATLAB 编写仿真,其中使用了 CUDA 加速。

假设我们有向量x和,y矩阵和标量A变量,,,,,。dtdxabc

我发现通过在运行迭代和内置函数之前放入 , ,可以显着加速x迭代yAgpuArray()

但是,当我尝试将dt, dx, a, b,之类的变量c放入 中gpuArray()时,程序会显着减慢 30% 以上。(时间从 7 秒增加到 11 秒)。

为什么将所有变量放入gpuArray()?

x(简短的评论,这些标量与, y, ,相乘A,并且从未在单独的迭代过程中使用过。)

4

1 回答 1

4

GPU 硬件针对处理相对大量的数据进行了优化。只有当您可以为许多处理核心提供大量数据以保持它们忙碌时,您才能真正看到 GPU 计算的好处。通常这意味着您需要对数千或数百万个元素进行操作。

在处理标量时,在 GPU 上启动操作的开销使计算时间相形见绌,因此它们比 CPU 慢也就不足为奇了。(这不是 MATLAB & 所特有的gpuArray)。

于 2018-10-08T07:53:43.433 回答