Я работаю с длительным циклом parfor в Matlab.
parfor iter=1:1000
chunk_of_work(iter);
end
Обычно бывает около 2-3 отклонений по времени за прогон. То есть на каждые 1000 выполненных кусков работы приходится 2-3, которые занимают примерно в 100 раз больше времени, чем остальные. Когда цикл приближается к завершению, рабочие процессы, которые оценивали выбросы, продолжают работать, в то время как остальные рабочие процессы не имеют вычислительной нагрузки.
Это согласуется со статическим распределением работы цикла parfor. Это контрастирует с документацией для набора инструментов для параллельных вычислений , найденной здесь :
«Распределение работы является динамическим. диапазон итераций, рабочим назначается новая итерация только после они заканчивают обработку своей текущей итерации, что приводит к даже распределение рабочей нагрузки."
Есть идеи о том, что происходит?