363Explicit Parallelization by Other Means
gdata.im_final = zeros([size(data.x_mat)], 'double');
ngpu = getfield(ginfo, 'gpu_count');
% start parallel processing on ngpu labs
spmd (ngpu)
% cast data explicitly to the GPU for each worker
minF = gdouble(data.minF);
AntX = gdouble(data.AntX);
AntY = gdouble(data.AntY);
AntZ = gdouble(data.AntZ);
R0 = gdouble(data.R0);
phdata = gdouble(data.phdata);
x_mat = gdouble(data.x_mat);
y_mat = gdouble(data.y_mat);
z_mat = gdouble(data.z_mat);
im_slices = gzeros(size(data.x_mat), 'double');
% Loop through every pulse
for ii = drange(1:Np)
% Calculate differential range for each image pixel (m)
dR = sqrt((AntX(ii)-x_mat).^2 + ...
(AntY(ii)-y_mat).^2 + ...
(AntZ(ii)-z_mat).^2) ...