error when using gpu
2 次查看(过去 30 天)
显示 更早的评论
Hi this is the part of code which troubles me:
for j=1:length(ZZ)
array(:,index) = A(ZZ(j)+n:ZZ(j)+n+x-1);
index=index+1;
end
The error I get is:
Undefined function 'colon' for input arguments of type 'parallel.gpu.GPUArray'.
Any help?
0 个评论
采纳的回答
Ben Tordoff
2012-5-24
Unfortunately, an expression like:
gpuArray(1):gpuArray(10)
won't work, and (as Walter says) it looks like one of your ":" expressions involves an argument that is a gpuArray. You have two choices. If you want the result of the ":" to be on the GPU you have to say so explicitly:
tmp = parallel.gpu.GPUArray.colon(ZZ(j)+n, ZZ(j)+n+x-1);
array(:,index) = A(tmp);
If you prefer the result in host memory, gather it first:
tmp = colon(gather(ZZ(j)+n), gather(ZZ(j)+n+x-1));
array(:,index) = A(tmp);
The result should be the same either way, but you may find one faster than the other depending on your data size, hardware and MATLAB release.
0 个评论
更多回答(1 个)
Walter Roberson
2012-5-21
This implies that ZZ or n are located on the GPU, with the result that ZZ(j)+n is a GPU object. The ":" operator cannot deal with GPU objects.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 GPU Computing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!