MATLAB Answers

0

error when using gpu

Asked by Mate 2u on 21 May 2012
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 Comments

Sign in to comment.

Tags

2 Answers

Answer by Ben Tordoff on 24 May 2012
 Accepted Answer

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 Comments

Sign in to comment.


Answer by Walter Roberson
on 21 May 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 Comments

Sign in to comment.