Переменная цикла определяет значение индекса цикла для каждой итерации. Вы установите его в первой линии a parfor
оператор.
parfor p=1:12
Для значений во всех итерациях переменная цикла должна вычисляться как возрастающие последовательные целые числа. Каждая итерация не зависит от всех других, и каждая имеет свое значение индекса цикла.
Требуется (статический): Назначения переменной цикла не разрешены. |
Это ограничение требуется, потому что меняются p
в parfor
орган не может гарантировать независимость итераций.
Этот пример пытается изменить значение переменной цикла p
в теле цикла и, таким образом, является недопустимым.
parfor p = 1:n p = p + 1; a(p) = i; end
Требуется (статический): Вы не можете индексировать или индекс переменную цикла каким-либо образом. |
Это ограничение требуется, потому что ссылка на поле переменной цикла не может гарантировать независимость итераций.
Следующий код пытается ссылаться на поле (b
) переменной цикла (p
) как будто это структура. Обе линии в цикле недопустимы.
parfor p = 1:n p.b = 3 x(p) = fun(p.b) end
Аналогично, следующий код недопустим, потому что он пытается индексировать переменную цикла как матрицу 1 на 1:
parfor p = 1:n x = p(1) end
Требуется (статический): Вы не можете использовать шаг области значений в for - циклы, вложенные в parfor -цикл. |
Рассмотрим следующий пример:
N = 10; T = 3; A = zeros(N,T); B = zeros(N,T);
Следующий код недействителен.
parfor i = 1:1:N for t = 1:1:T A(i,t) = t; end end
Следующий код действителен.
parfor i = 1:1:N for t = 1:T B(i,t) = t; end end