Переменная цикла задает значение индекса цикла для каждой итерации. Вы устанавливаете его в первой линии 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