我想在Matlab中完成的过程:
-
将3D阵列发送到GPU
-
将每个切片或'page'(:,:,i)分配给GPU上的处理器
-
输出这些求和的向量
-
将向量返回到CPU
% My stab at it: Array = gpuArray(ones(3,3,5)); Array = pagefun(@sum,array); Array = gather(Array); % Desired output: Array = 1x1x5 vector of 9's
这会引发一个错误,即pagefun不喜欢求和函数 .
在CPU上,类似的过程工作得很好 . 它在GPU上也可以在FOR循环中工作,但这并不能使过程呈现理想速度 . CUDA内核是否能更好地做这样的事情?有一个更好的方法吗?这更适合群集而不是GPU吗?
帮助赞赏,威尔
设置:华硕i7 quadcore,GTX Geforce 960运行CUDA驱动程序
3 回答
好吧,你可以尝试更丑陋的方式:
我找到了解决方案并将其发布到了matlab论坛here
这是我在MATLAB答案中发布的答案 .