【发布时间】:2012-11-16 10:49:14
【问题描述】:
我正在使用 matlab GPU 计算 与函数 arrayfun 和 gpuArray 对象对我的函数上的 gpuArray 变量的元素执行逐元素函数:
[ output ] = MyFunc( element, SharedMatrix )
//
// Process element with Shared Matrix
//
end
我的代码是这样的:
SharedMatrix = magic(5000); %Large Memory Object
SharedMatrix = gpuArray(SharedMatrix);
elements = magic(5);
gpuElements = gpuArray(elements );
//Error on next line, SharedMatrix object must be a scaler.
result = arrayfun(@MyFunc,gpuElements,SharedMatrix);
听说全局变量不能用于GPU计算。
有没有办法通过arrayfun 做到这一点?
【问题讨论】:
-
您还需要将 SharedMatrix 转换为 gpuArray。
-
即使我这样做了,它也会逐个元素地处理它,而不是作为一个整体矩阵。它需要与 gpuElements 矩阵 具有相同的维度
标签: matlab matlab parallel-processing shared-memory gpgpu