User`s guide
2 Parallel for-Loops (parfor)
2-6
Comparing for-Loops and parfor-Loops
Because parfor-loops are not quite the same as for-loops, there are specific behaviors
of each to be aware of. As seen from the example in the topic “Create a parfor-Loop” on
page 2-4, when you assign to an array variable (such as A in that example) inside the loop
by indexing with the loop variable, the elements of that array are available in the client
workspace after the loop, much the same as with a for-loop.
However, suppose you use a nonindexed variable inside the loop, or a variable whose
indexing does not depend on the loop variable i. Try these examples and notice the
values of d and i afterward:
clear A
d = 0; i = 0;
for i = 1:4
d = i*2;
A(i) = d;
end
A
d
i
A =
2 4 6 8
d =
8
i =
4
clear A
d = 0; i = 0;
parfor i = 1:4
d = i*2;
A(i) = d;
end
A
d
i
A =
2 4 6 8
d =
0
i =
0
Although the elements of A come out the same in both of these examples, the value
of d does not. In the for-loop above on the left, the iterations execute in sequence, so
afterward d has the value it held in the last iteration of the loop. In the parfor-loop on
the right, the iterations execute in parallel, not in sequence, so it would be impossible to
assign d a definitive value at the end of the loop. This also applies to the loop variable, i.
Therefore, parfor-loop behavior is defined so that it does not affect the values d and i
outside the loop at all, and their values remain the same before and after the loop. So, a