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

标签 matlab gpu gpgpu gpuarray

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

假设我们有向量xy、矩阵A和标量变量dtdx abc

我发现,在运行之前将 x,y,A 放入 gpuArray()迭代和内置函数,可以显着加速迭代。

但是,当我尝试输入诸如 dtdxabcgpuArray() 中,程序速度会显着减慢,速度会减慢 30% 以上。 (时间从7秒增加到11秒)。

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

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

最佳答案

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

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

关于matlab - 将所有变量转换为 gpuArrays 并不会加快计算速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693980/

相关文章:

matlab - matlab中的正则逻辑回归代码

matlab - 通过嵌套循环构建Matlab数组

matlab - fvtool生成的数字亲子关系破裂?

python - 如何确定 GPU 在我的操作系统上是否可用?

CUDA - 为傻瓜使用 CURAND 库

c++ - 用GPU计算小于某个值的像素数

optimization - 如何有效地从 CUDA 中的线程收集数据?

cuda - 如何使用WMMA功能?

gpgpu - C++ AMP 性能问题

java - 尝试在 Octave 中打开 url 流?