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

1 visualizzazione (ultimi 30 giorni)
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 Commenti
José-Luis
José-Luis il 3 Ago 2017
Modificato: José-Luis il 3 Ago 2017
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.
Joss Knight
Joss Knight il 3 Ago 2017
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.

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Graphics Performance in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by