或者如何将Parfor循环转换为gpuArray操作?
手头的问题:通过parfor分发到多个CPU(工作者)的大数据矩阵的逐列操作。
data = 1000 x 200 matrix
[nrows, ncols] = size(data)
parfor ix = 1:ncols
workerData = data(:,ix);
colwiseResult(ix) = function(workerData,params);
end
现在,如何才能有效地利用GPU?特别是因为问题需要扩展到1000x1000矩阵(& more)
dataGPU = gpuArray(data);
但我没有找到一种在GPU上进行列式操作的简单方法。诸如arrayfun或bsxfun之类的函数逐个元素地操作,这不是我感兴趣的。因为这些是平凡的并行任务,所以在GPU中利用多个处理器可能是理想的(并且避免了对parfor等的困扰), p>
(实际上,我正在使用Workers内的for循环执行可能性计算,该计算使用列向量上的每个数据点逐步进行矩阵对角化,指数和产品)。已检查所有这些操作都有gpu重载)
答案 0 :(得分:0)
您是否看过本教程?
http://www.mathworks.ch/videos/introduction-to-gpu-computing-with-matlab-68770.html
请先检查您是否可以使用GPU,因为并非所有GPU都受支持。之后,您可以将变量传递到GPU,或者可以将GPU包含在parfor循环中,如下所示:
parfor ix = 1:10
gd=gpuDevice;
end
在一天结束时使用一个GPU并不是一个很大的优势。有关详细信息,请在工作站上提供更多详细信息。