two - loop with GPU
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I just have GPU on my desktop with matlab R2012b I plotted a Gaussian profile using two - loop on CPUas below:
for n=1:1:N
for m=1:1:N
x(n)=n*ds-L/2;
y(m)=m*ds-L/2;
G(n,m)=exp(-((x(n)^2)+(y(m)^2)))/(w^2);
end
end
I read somewhere that GPU does not support index like that, I even tried but it not work either. Is there any way possible to do the same thing on GPU?
Thank so much
2 commentaires
James Lebak
le 5 Avr 2013
It seems like it should be possible to do this on the GPU. Can you tell us what variables were on the GPU, and what happened when it failed to work? Did you receive an error message, or did MATLAB compute an incorrect answer?
Réponses (1)
James Lebak
le 23 Avr 2013
Yes, 1:gpuArray(N) for scalar N doesn't work in MATLAB R2013a. Try the following:
x=gpuArray.colon(1,N)*ds-L/2;
y=gpuArray.colon(1,N)*ds-L/2;
G = exp(-((x.*x).'*gpuArray.ones(1,N)+gpuArray.ones(N,1)*(y.*y)))./(w^2);
This vectorizes the calculation of x and y and calculates all the elements in the matrix at once, which should be much more efficient on the GPU than using a loop.
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!