【发布时间】:2018-06-26 11:15:38
【问题描述】:
我有一个更新数组的 Matlab 模拟:
Array=zeros(1,1000)
如下:
for j=1:100000
Array=Array+rand(1,1000)
end
我的问题如下: 这个循环是线性的,所以不能对数组中的每个槽进行并行化,但是不同的槽是独立更新的。因此,Matlab 自然会使用 CPU 的所有内核以并行方式执行诸如此类的数组操作。
我希望在我的 NVIDIA GPU 上执行相同的计算,以便加快速度(利用那里更多的内核)。
问题是: 天真地做着
tic
Array=gpuArray(zeros(1,1000));
for j=1:100000
Array=Array+gpuArray(rand(1,1000));
end
toc
导致计算时间延长了 8 倍更长!
一个。我做错了什么?
更新: 湾。也许有人可以提供一个不同的 简单 示例,GPU 计算对哪个有益?我的目标是了解如何在 Matlab 中利用它进行非常“繁重”的随机模拟(对大数组和矩阵进行多重线性运算)。
【问题讨论】:
-
可能相关的问答(如果您的问题是生成随机数):stackoverflow.com/q/39251206/3372061
标签: matlab for-loop parallel-processing