Are gpuArray supported within parfor?

2 views (last 30 days)
Bharath Lohray
Bharath Lohray on 24 Oct 2018
Hi,
I am running the following code and receive an error
Error using gpuArrayTest (line 16)
The following error occurred converting from gpuArray to double:
Conversion to double from gpuArray is not possible.
Line 16 is
parfor i = 1:numel(x_c)
My Code is as follows
%Window Size
W=20;
num_files=3;
% My Code: Read template image from disk - imread > imcrop
im1 = gpuArray(rand(150));
% Actual Code: S = size(template image | im1)
S=[65,62];
[x_c,y_c]=meshgrid(W+1:S(2)-W, W+1:S(1)-W);
max_xcorr_1=zeros(size(x_c),'gpuArray');
% store xcorr results from all filse
max_xcorr_arr=zeros([size(x_c),num_files]);
Loop over a file list.
for j=1:num_files
% My Code: Read image from disk - imread > imcrop
im2 = gpuArray(rand(150));
tic;
parfor i = 1:numel(x_c)
x=x_c(i);
y=y_c(i);
% Check to see if all pixels in template is not 0 (same).
if (~max(im1(x-W:x+W,y-W:y+W),[],'all')==0)
nxc = normxcorr2(im1(x-W:x+W-1, y-W:y+W-1), im2(x-W:x+W-1, y-W:y+W-1));
% Commenting the line below avoids the gpuArray > double coversion error.
max_xcorr_1(i)=max(nxc,[],'all');
end
end
max_xcorr_arr(:,:,j)=gather(max_xcorr_1);
toc
end
However, I do not receive the error if I do one of the following -
  1. I comment out the line `max_xcorr_1(i)=max(nxc,[],'all');`
  2. Reduce the size of the meshgrid to `S=[40, 40]`. The smallest number that I can use without getting the error varies from time to time.
  3. I replace `parfor` with `for`.
I have 8 local MATLAB Workers running. My GPU is an NVIDIA GeForce GTX860M with 4GB of dedicated RAM. My questions are -
  1. Is gpuArray supported within a `parfor`?
  2. Irrespective of the meshgrid size defined by S, The `normxorr2` operation runs on a 2W x 2W sized matrix. So, why does the size S affect the code?
  3. How can I get around this?

Answers (0)

Categories

Find more on Parallel Computing Fundamentals in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!