Vectorization of for loop (indexing of a vector)

Please help, I'm trying to get this code to run faster on my GPU. Currently this is the main bottleneck of my function. I was wondering whether this code is vectorizable in order to remove the for-loop? vector_1 is a gpuArray
for i=1:n
A = vector_1((i-1)+(1:10));
B = vector_1((i-1)+16+(1:10));
AA(i+10) = (A'*B)/10;
BB(i+10) = (A'*A)/10;
end

 Accepted Answer

first = gpuArray.colon(1,n);
indexA = bsxfun(@plus, first, [0:9]');
indexB = indexA + 16;
A = vector_1(indexA);
B = vector_1(indexB);
AA(first+10) = sum(A.*B)/10;
BB(first+10) = sum(A.*A)/10;

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 13 Nov 2015

Edited:

on 18 Nov 2015

Community Treasure Hunt

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

Start Hunting!