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 |
Если итерации цикла будут действовать в недетерминированной последовательности, вы можете ожидать последовательность конкатенации в примере на праве быть непоследовательными. However, 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)