MATLAB: GPU for loops indexing slow

gpunested for loopsslow

Hello. I have this code, which is slow when run in GPU: A is an array NXN
A=rand(3000);
[m,n]=size(A);
tic;
for j=m:-1:2
for i=j-1:-1:1
s=(A(i,j)/A(j,j));
A(i,:)=A(i,:)-A(j,:)*s;
end
end
toc
How can i optimaze this code? Should i use bsxfun or arrayfun?

Best Answer

You can vectorize the inner loop,
for j=m:-1:2
idx=j-1:-1:1;
delta=(A(idx,j)/A(jj))*A(j,:);
A(idx,:)=A(idx,:)-delta;
end