The loop variable defines the loop index value for each iteration.
You set it in the first line of a parfor
statement.
parfor p=1:12
For values across all iterations, the loop variable must evaluate to ascending consecutive integers. Each iteration is independent of all others, and each has its own loop index value.
Required (static): Assignments to the loop variable are not allowed. |
This restriction is required,
because changing p
in the parfor
body
cannot guarantee the independence of iterations.
This example attempts to modify the value of the loop variable p
in
the body of the loop, and thus is invalid.
parfor p = 1:n p = p + 1; a(p) = i; end
Required (static): You cannot index or subscript the loop variable in any way. |
This restriction is required, because referencing a field of a loop variable cannot guarantee the independence of iterations.
The following code attempts
to reference a field (b
) of the loop variable (p
)
as if it were a structure. Both lines within the loop are invalid.
parfor p = 1:n p.b = 3 x(p) = fun(p.b) end
Similarly, the following code is invalid because it attempts to index the loop variable as a 1-by-1 matrix:
parfor p = 1:n x = p(1) end
Required (static): You cannot
use a range increment in for -loops nested inside
a parfor -loop. |
Consider the following example:
N = 10; T = 3; A = zeros(N,T); B = zeros(N,T);
The following code is invalid.
parfor i = 1:1:N for t = 1:1:T A(i,t) = t; end end
The following code is valid.
parfor i = 1:1:N for t = 1:T B(i,t) = t; end end