Why parfor loop so efficient?

1 view (last 30 days)
C.Hu
C.Hu on 30 May 2016
Answered: Walter Roberson on 30 May 2016
Hi I tested two script in the following
%1. Parall_try
parfor i = 1:2000
for j = 1:10000
b(i,j) = i*j+i/j;
end
end
and
%2. Serial_try
for i = 1:2000
for j = 1:10000
a(i,j) = i*j+i/j;
end
end
I set two workers totally. The profile report shows 32s for running serial_try, and about 2s for parallel_try. I noticed the parallel running does not output any i/j index to workspace, which may explain the speed up of parallel running. Is this really true? It motivates me to find a more efficient way to run my script. In script, it output every variable to workspace, which can be very time-consuming. Can I calculate them without output them to workspace? It may sounds absurd because I have not figured out why parfor loop can be that efficient.
  2 Comments
jgg
jgg on 30 May 2016
Do you pre-allocate those arrays? That could be the difference.
C.Hu
C.Hu on 30 May 2016
No, I clear the workspace everytime before running the script.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 30 May 2016
parfor effectively pre-allocates the arrays before use whereas your non-parfor solution does not. That makes a big difference in efficiency.

More Answers (0)

Categories

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

Community Treasure Hunt

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

Start Hunting!