matlab - 将所有变量转换为 gpuArrays 不会加快计算速度
问题描述
我正在使用 MATLAB 编写仿真,其中使用了 CUDA 加速。
假设我们有向量x
和,y
矩阵和标量A
变量,,,,,。dt
dx
a
b
c
我发现通过在运行迭代和内置函数之前放入 , ,可以显着加速x
迭代y
。A
gpuArray()
但是,当我尝试将dt
, dx
, a
, b
,之类的变量c
放入 中gpuArray()
时,程序会显着减慢 30% 以上。(时间从 7 秒增加到 11 秒)。
为什么将所有变量放入gpuArray()
?
x
(简短的评论,这些标量与, y
, ,相乘A
,并且从未在单独的迭代过程中使用过。)
解决方案
GPU 硬件针对处理相对大量的数据进行了优化。只有当您可以为许多处理核心提供大量数据以保持它们忙碌时,您才能真正看到 GPU 计算的好处。通常这意味着您需要对数千或数百万个元素进行操作。
在处理标量时,在 GPU 上启动操作的开销使计算时间相形见绌,因此它们比 CPU 慢也就不足为奇了。(这不是 MATLAB & 所特有的gpuArray
)。
推荐阅读
- debugging - GDB `run` 命令因“无法插入断点 1”而失败。
- node.js - 使用官方 Node 镜像的 Dockerized Node API
- twilio - twilio计费不同的不同号码
- python - 使用 PyQt5 和 GNURadio 避免退出代码 -1073741819 (0xC0000005)
- swiftui - 如何在 SwiftUI 中重绘子视图?
- c++ - “ReadProcessMemory”如何获取 std::string?
- angular - 检查特定 div/Angular 组件中的 elementById
- python - 无法使用python访问json文件
- python - 如何在 Python 中运行进程?
- mongodb - MongoDB查询将时间戳与嵌套对象时间戳进行比较