2014-01-15 73 views
1

我想在Matlab中並行實現一個大N-D數組的一維卷積。卷積濾波器足夠小,以至於使用FFT來完成是沒有意義的。對於很長的一維信號,我知道我可以打電話conv(gpuArrayA,gpuArrayB),併爲許多功能,我可以使用bsxfun並行跨gpuArray的單一維度應用功能,但是當我嘗試在Matlab中沿GPU上的單獨尺寸卷積

bsxfun(@conv,gpuArrayA,gpuArrayB)

我得到錯誤

Error using gpuArray/bsxfun 
Use of 'conv' is not supported. 

那麼是否有一種方法可以在Matlab中實現而不必編寫自定義CUDA代碼?

回答

1

你不能只是調用CONVN()與一維卷積核,例如,

A=gpuArray(rand(100,100,100)); 
kernel=gpuArray([1;1;1]); 

result = convn(A,kernel,'same'); % convolution along dim=1 

,我覺得我得到這個更快的結果比同等的CPU版本,所以必須有一些內置GPU並行進入這個。