Некоторые методы повышения гранулярности параллельных вычислений:
- Декомпозиция. cc.dvfu.ru Задача разбивается на порции, которые можно выполнить параллельно. cc.dvfu.ru Есть два способа декомпозиции: на порции разбиваются все функции, которые нужно выполнить, или все данные, которые нужно обработать или получить. cc.dvfu.ru
- Балансировка. cc.dvfu.ru Подразумевает равномерную загрузку процессоров при выполнении задач. cc.dvfu.ru Для этого нужно знать время выполнения каждой итерации и распределить их так, чтобы каждый процессор был загружен примерно равномерно. cc.dvfu.ru Если время выполнения итерации изменяется по предсказуемому закону, это можно сделать статически, то есть указать распределение нагрузки на этапе компиляции программы. cc.dvfu.ru Если время изменяется по случайному закону, например, зависит от данных, которые рассчитываются, распределение нагрузки нужно выполнять динамически, то есть во время выполнения программы. cc.dvfu.ru
- Определение минимального блока, который имеет смысл выполнять параллельно. cc.dvfu.ru Для этого после определения предполагаемых параллельных участков нужно провести вычислительный эксперимент по определению времени выполнения этого участка в последовательном и параллельном режиме. cc.dvfu.ru Минимальный размер блока определяется значением, при котором достигается ожидаемое ускорение. cc.dvfu.ru
Оптимальная производительность достигается между двумя крайностями: мелкозернистым и крупнозернистым параллелизмом. en.wikipedia.org Поиск наилучшего размера зерна зависит от ряда факторов и сильно варьируется от задачи к задаче. en.wikipedia.org