Speed up: Parfor loop vs Vectorization
Mostrar comentarios más antiguos
I'm trying to speed up my code, which is bottlenecking here:
tic
FD = zeros(28, Rotations);
parfor i = 1:Rotations
CodePR = rotate (CodeP, i*(Rotations - 1)*angle, [0 0]);
for j = 1:28
FD(j, i) = (area(intersect(intersect(CodePR, MaskP), WholeVD(j))))/(AreaFD(j));
end
end
A = FD;
toc
I came up with that solution:
tic
FD = zeros(28, Rotations);
WholeVD = transpose(WholeVD);
AreaFD = transpose(AreaFD);
parfor i = 1:Rotations
CodePR = rotate (CodeP, i*(Rotations - 1)*angle, [0 0]);
FD(:,i) = area(intersect(intersect(CodePR, MaskP), WholeVD))./AreaFD;
end
B = FD;
toc
which is like 20 times (for my rig at least). The bad thing is that with actual dataset it consumes too much RAM (and eventually crashes matlab) so I can't evaluate that. Getting rid or PARFOR helps with memory problem but effectivly slower (by amount of CPU cores). Is there any walk arounds to reduce memory usage so I could utilize more threads?
The whole code is in attachment (fold everything, described part is not foldable). Thanks.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!