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