Speed up a for loop by utilizing a gpu

18 views (last 30 days)
Hello, I'm trying to speed up the following for loop
for n=1:size(Q_test,3)
Q_test(:,:,n) = sigma(n) / 2 / mass(n) * Q_in(:,:,n);
end
I tried implementing this with all the above arrays being gpuArrays and running
Q_gpu = arrayfun(@scale_Q,sigmaE_gpu,mass_gpu,Q_gpu,size(Q_gpu,3));
function output = scale_Q(sigma,mass,Q_in,itterations)
output = zeros(size(Q_in),'single');
for n=1:itterations
output(:,:,n) = sigma(n) / 2 / mass(n) * Q_in(:,:,n);
end
end
but I get the error
"Error using gpuArray/arrayfun
Arrays have incompatible sizes for this operation."
% Error using gpuArray/arrayfun
% Arrays have incompatible sizes for this operation.
Any help would be appriciated!

Accepted Answer

tiwwexx
tiwwexx on 30 Jun 2022
This solution was given by Jan here.
Q_gpu = reshape(0.5*sigmaE_gpu./mass_gpu,1,1,size(sigmaE_gpu,1)).*Q_gpu;

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!