Loops are slow inside spmd blocks!!

Hi, Can anybody explain what's happening here:
spmd(0) for i=1:100000000,end end
is supposed to run the code on the client. This on most systems is 22 times slower than:
for i=1:100000000, end
without the spmd. However,if you take the loop and put it in a function like:
spmd (0) testfun; end
function testfunc for i=1:100000000,end end
it runs the same speed without spmd. This is quite puzzling.

Respuestas (1)

Sarah Wait Zaranek
Sarah Wait Zaranek el 20 de Feb. de 2012

0 votos

Looks like loops inside parfor/spmd with tons of iterations are not getting all the benefit from JIT (Just-in-Time interpreter/compiler) which allows for-loops to run faster and not be interpreted very single time step.
I have seen this happen before mostly with cases like this - with many, many iterations of a very simple loop.
To force the JIT into action, the appropriate work-around is to put it in a function - as you have done here.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 12 de En. de 2012

Editada:

el 27 de Oct. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by