Используйте 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)

Похожие темы