Speed up a for loop by utilizing a gpu

조회 수: 17 (최근 30일)
tiwwexx
tiwwexx 2022년 6월 30일
답변: tiwwexx 2022년 6월 30일
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!

채택된 답변

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 GPU Computing에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by