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

Converting all variables into gpuArrays doesn't speed up computation

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

假设我们有向量 xy、矩阵 A 和标量变量 dtdxab,c.

我发现通过在 运行 迭代和内置函数之前将 xyA 放入 gpuArray(),可以显着加快迭代速度。

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

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

(简短的评论,这些标量与 xyA 相乘,并且在迭代期间从未单独使用过。)

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

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