parfor
-Циклы для назначений сокращенияЭти два примера показывают parfor
-циклы с использованием назначений сокращений. Уменьшение является накоплением через итерации цикла. Пример слева использует x
для накопления суммы через 10 итераций цикла. Пример справа генерирует конкатенированный массив, 1:10
. В обоих этих примерах порядок выполнения итераций на работниках не имеет значения: в то время как рабочие вычисляют отдельные результаты для каждой итерации, клиент правильно накапливает и собирает конечный результат цикла.
x = 0; parfor i = 1:10 x = x + i; end x x = 55 |
x2 = []; n = 10; parfor i = 1:n x2 = [x2, i]; end x2 x2 = 1 2 3 4 5 6 7 8 9 10 |
Если итерации цикла работают в недетерминированной последовательности, можно ожидать, что последовательность конкатенации в примере справа будет неконсективной. Однако MATLAB® распознает операцию конкатенации и приводит к детерминированным результатам.
Следующий пример, который пытается вычислить числа Фибоначчи, не является допустимым parfor
-цикл, потому что значение элемента f
в одной итерации зависит от значений других элементов f
вычисляется в других итерациях.
f = zeros(1,50); f(1) = 1; f(2) = 2; parfor n = 3:50 f(n) = f(n-1) + f(n-2); end
Когда вы закончите с примерами цикла, очистите рабочую область и удалите свой параллельный пул работников:
clear delete(gcp)