Adding just one line in my code slows the GPU.

8 Ansichten (letzte 30 Tage)
TAEYOON KIM
TAEYOON KIM am 18 Feb. 2020
Kommentiert: TAEYOON KIM am 19 Feb. 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??

Antworten (1)

Matt J
Matt J am 18 Feb. 2020
Bearbeitet: Matt J am 18 Feb. 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 Kommentare
Matt J
Matt J am 19 Feb. 2020
Still, my other recommendations should help...
TAEYOON KIM
TAEYOON KIM am 19 Feb. 2020
Ok thanks a lot!!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Parallel Computing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by