Are gpuArray supported within parfor?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 -
- I comment out the line `max_xcorr_1(i)=max(nxc,[],'all');`
- 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.
- 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 -
- Is gpuArray supported within a `parfor`?
- 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?
- How can I get around this?
0 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur Parallel Computing Fundamentals dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!