is there any substitute for "gather" function in MATLAB?
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
  Joss Knight
    
 el 3 de Ag. de 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.
Respuestas (0)
Ver también
Categorías
				Más información sobre Graphics Performance en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





