Adding just one line in my code slows the GPU.
Show older comments
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??
Answers (1)
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 Comments
TAEYOON KIM
on 19 Feb 2020
Edited: TAEYOON KIM
on 19 Feb 2020
Matt J
on 19 Feb 2020
Still, my other recommendations should help...
TAEYOON KIM
on 19 Feb 2020
Categories
Find more on Parallel Computing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!