error when using gpu
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Ben Tordoff
il 24 Mag 2012
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 Commenti
Più risposte (1)
Walter Roberson
il 21 Mag 2012
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 Commenti
Vedere anche
Categorie
Scopri di più su GPU Computing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!