Масштабируемый параллелизм

редактировать

Считается, что программное обеспечение демонстрирует масштабируемый параллелизм, если оно может использовать дополнительные процессоры для решения более крупных задач, т.е. этот термин относится к программному обеспечению, для которого закон Густафсона выполняется. Рассмотрим программу, время выполнения которой определяется одним или несколькими циклами, каждый из которых обновляет каждый элемент массива - например, следующее конечная разность уравнение теплопроводности расчет шаблона :

для t: = 0 toT doдля i: = 1 до N-1 do new (i): = (A ( i-1) + A (i) + A (i) + A (i + 1)) *.25 // явная прямая разница с R = 0,25 endдля i : = 1 до N-1 do A (i): = new (i) endend

В приведенном выше коде мы может выполнять все итерации каждого цикла «i» одновременно, т.е. превращать каждую в параллельный цикл . В таких случаях часто можно эффективно использовать вдвое больше процессоров для проблемы размера массива 2N, чем для проблемы размера массива N. Как и в этом примере, масштабируемый параллелизм обычно является формой параллелизма данных . Эта форма параллелизма часто является целью автоматического распараллеливания циклов.

Распределенные вычислительные системы и неоднородный доступ к памяти архитектуры, как правило, наиболее легко масштабируются к большому количеству процессоров и, таким образом, может казаться естественной целью для программного обеспечения, демонстрирующего масштабируемый параллелизм. Однако приложения с масштабируемым параллелизмом могут не иметь достаточно грубого параллелизма для эффективной работы в таких системах (если только программное обеспечение не является чрезмерно параллельным ). В нашем примере, приведенном выше, второй цикл «i» является досадно параллельным, но в первом цикле каждая итерация требует результатов, полученных на нескольких предыдущих итерациях. Таким образом, для первого цикла распараллеливание может включать в себя обширную связь или синхронизацию между процессорами и, таким образом, привести к чистому ускорению только в том случае, если такие взаимодействия имеют очень низкие накладные расходы, или если код может быть преобразован для решения этой проблемы (т. 6>масштабируемая локальность / оптимизация масштабируемого параллелизма).

Языки
  • Ateji PX расширение Java, делающее возможным масштабируемый параллелизм на виртуальной машине Java (JVM)
  • BMDFM Binary Modular DataFlow Machine
  • SequenceL универсальный функциональный язык программирования, основными целями проектирования которого являются производительность на многоядерном оборудовании, простота программирования и ясность / читаемость кода
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-07 04:29:03
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте