Adding just one line in my code slows the GPU.

1 vue (au cours des 30 derniers jours)
TAEYOON KIM
TAEYOON KIM le 18 Fév 2020
Commenté : TAEYOON KIM le 19 Fév 2020
hello, my first code was
for i = 1:1000
r=0.8*r+0.2*tanh(A*r+W_in*xc(i+T0)+(0.3)*bias);
end
In the code above,the gpu is faster than cpu but I have to stack 'r' which is (nx1) matrix, so I just adding 'R' on previous code makes the gpu slower than cpu.
R=zeros(n,1000);
for i = 1:1000
r=0.8*r+0.2*tanh(A*r+W_in*xc(i+T0)+(0.3)*bias);
R(:,i)=r;
end
I want to make my code runs fast on gpu than cpu. What should I do??

Réponses (1)

Matt J
Matt J le 18 Fév 2020
Modifié(e) : Matt J le 18 Fév 2020
Pre-allocate on the GPU. Also, pre-compute things on the GPU that are easily vectorized and don't depend on r.
R=gpuArray.zeros(n,1000);
r=gpuArray(r);
A-gpuArray(A);
increments = W_in*gpuArray( xc((1:1000)+T0) ) + 0.3*bias;
for i = 1:1000
r=0.8*r+0.2*tanh(A*r+ increments(i));
R(:,i)=r;
end
  3 commentaires
Matt J
Matt J le 19 Fév 2020
Still, my other recommendations should help...
TAEYOON KIM
TAEYOON KIM le 19 Fév 2020
Ok thanks a lot!!

Connectez-vous pour commenter.

Catégories

En savoir plus sur GPU Computing 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!

Translated by