2013-07-18 79 views
1

有沒有辦法在gpuArray類型中使用共享矩陣做arrayfunMatlab使用共享矩陣數據的GPU/CUDA操作

在我的情況下,我想做一個gpuArray矩陣的兩列或兩列以上的總和,但我不知道如何實現在gpuFunction,arrayfun是最好的選擇?

我想在CUDA中做這個簡單的操作,因爲我需要用不同的組合來做這種操作的數百萬次。

非常感謝。

我要去better.If你看我的問題是這樣的

functionarrayfun = @(行)functionMex(數據1,數據2,行)說明問題;

I = 1:長度(tablaCombinaciones(:,1));%從1到行的結束

比= arrayfun(functionarrayfun,I);

使用gpuArray/arrayfun時出錯索引不受支持。誤差在行:6

+0

作爲替代'arrayfun','gpuArray'和'gpuFunction',你可以嘗試直接在'CUDA'中編寫你的函數,用'nvcc'編譯,然後在Matlab下作爲'mex'文件連接它。 – JackOLantern

+0

是的,我知道它,但即時通訊問,因爲我想知道是否有任何其他方式來做到這一點,我想避免C,但我認爲我將不得不這樣做 –

回答

1

Arrayfun並用gpuArray bsxfun工作:

參見例如:

A = gpuArray.rand(100,2); 
B = A(:,1); 
C = A(:,2); 
bsxfun(@plus,A(:,1),A(:,2)) 
arrayfun(@(x,y)x+y,A(:,1),A(:,2)) 
+0

問題是,在GPU陣列你不能使用一個@函數,它需要一個書面函數。在我的情況下,我想有一個函數arrayfun [ratio(i)] = functionMex(array1,array2,i) 我認爲現在它不是可能只有在matlab中,你需要使用mex和cuda內核。或者使用matlab的arrayfire外套,這是不可買的。 謝謝 –