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

当初提起されたケースでは、MATLAB のBSXFUNを GPU で使用できます。(編集された質問は、この方法で対処することはできません。)

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 に答える