is there any substitute for "gather" function in MATLAB?

tic
k = gpuArray(1:0.5:10);
a = gpuArray(1:0.5:10);
n1 = numel(k);
nump = kron(k, ones(1, length(a)))';
n2 = numel(a);
denp = repmat([ones(n2,1), a.', zeros(n2,1)], n1, 1);
w = gpuArray([0.1 0.5 1 5 10 20 30 50 70 100]);
%%%%%% freqcp %%%%%%%%%%%%%%%%%%%%
delay = 0;
w = w(:)';
s = 1i * w;
upper = nump(:, 1);
for i = 2:size(nump, 2)
upper = bsxfun(@plus, bsxfun(@times, s, upper), nump(:, i));
end
lower = denp(:, 1);
for i = 2:size(denp, 2)
lower = bsxfun(@plus, bsxfun(@times, s, lower), denp(:, i));
end
P = bsxfun(@times, bsxfun(@rdivide, upper, lower), exp(-s * delay));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
p=gather(P);

6 Comments

Gather gets the distributed array into local work space.....I don't think there would be any other alternative.....what is problem with gather ?
Do your calculations on the CPU, is the alternative!
Now I'm curious. Why wouldn't you want to use gather? It's not to avoid the parallel computing toolbox because you're using gpuArray anyway.
I'm tempted to say: Use CUDA instead (if your gpu is nvidia). Or OpenGL if you're feeling masochistic.
José-Luis, I wonder if you meant OpenCL instead of OpenGL ?
Yes, thanks for the correction. I will die in acronym hell.
I've never actually used OpenGL and since it is low-level graphics then it probably has ways of interacting with the GPU. I'll google that out of curiosity... eventually.
The alternative to gather is to not call gather and just leave your data on the GPU. Don't move your data around unless you need to display it, save it, or run some code on it that doesn't support gpuArray.
People often blame gather for all ills because it appears to be very slow, but what's really happening is that in order for the data to be copied to the host, MATLAB has to wait for all the asynchronous operations currently queued on the device to finish. Sometimes that makes it look like gather is being slow.

Sign in to comment.

Answers (0)

Categories

Products

Tags

No tags entered yet.

Asked:

on 3 Aug 2017

Commented:

on 3 Aug 2017

Community Treasure Hunt

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

Start Hunting!