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.

답변 (1개)

Sarah Wait Zaranek
Sarah Wait Zaranek 2012년 2월 20일

0 개 추천

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.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2012년 1월 12일

편집:

2017년 10월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by