2

我有一个名为fun实现如下的函数:

function result = fun( number , matrix)
 result = var( mean(matrix) + number ); // any processing not that exactly
end

使用 parallel Computing toolbox,我想将它分布在 GPU 上一组具有相同矩阵的数字上,如下面的代码:

mat = magic(10);
numbers = 1:5;
gMat = gpuArray(mat);
gNumbers = gpuArray(numbers);
result = arrayfun(@fun,gNumbers,gMat); // Error here

如果有人可以为这个问题提供帮助,那就太好了。

4

1 回答 1

3

在最初提出的情况下,您可以在 GPU 上使用 MATLAB 的BSXFUN。(不能以这种方式解决已编辑的问题。)

mat = magic(5);
numbers = 1:5;
gMat = gpuArray(mat);
gNumbers = gpuArray(numbers);
result = bsxfun(@rdivide, gMat, gNumbers);

请注意,我@rdivide直接使用而不是调用单独的函数 - 您不需要这样做,但它会使事情变得更短。您还可以像这样使用匿名函数:

bsxfun(@(x,y) x./y, gMat, gNumbers)
于 2012-12-04T07:14:10.017 回答