将所有变量转换为gpuArrays不会加快计算速度

时间:2018-10-08 00:11:21

标签: matlab gpu gpgpu gpuarray

我正在使用CUDA加速的MATLAB编写仿真。

假设我们有向量xy,矩阵A和标量变量dtdxa,{{1} },b

我发现,通过在运行迭代和内置函数之前将cxy放入A中,可以显着加速迭代

但是,当我尝试将gpuArray()dtdxab之类的变量放入c时,程序将显着减慢30%以上的速度。 (时间从7s增加到11s)。

为什么将所有变量都放入gpuArray()并不是一个好主意?

(简短的评论,这些标量与gpuArray()xy相乘,并且从未在迭代中使用过。)

1 个答案:

答案 0 :(得分:4)

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

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