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

 Réponse acceptée

Joss Knight
Joss Knight le 18 Nov 2015
Modifié(e) : Joss Knight le 18 Nov 2015
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;

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by