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:12For 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