Масштабируемый параллелизм
Говорят, что программное обеспечение демонстрирует масштабируемый параллелизм , если оно может использовать дополнительные процессоры для решения более крупных задач. т.е. этот термин относится к программному обеспечению, для которого справедлив закон Густавсона . Рассмотрим программу, время выполнения которой определяется одним или несколькими циклами. каждый из них обновляет каждый элемент массива --- например, следующий конечно-разностного уравнения теплопроводности расчет трафарета :
for t := 0 to T do for i := 1 to N-1 do new(i) := (A(i-1) + A(i) + A(i) + A(i+1)) * .25 // explicit forward-difference with R = 0.25 end for i := 1 to N-1 do A(i) := new(i) end end
В приведенном выше коде мы можем одновременно выполнять все итерации каждого цикла «i», т. е. превратить каждый в параллельный цикл . В таких случаях часто можно эффективно использовать вдвое больше процессоров для задачи размера массива 2N что касается проблемы размера массива N. Как и в этом примере, масштабируемый параллелизм обычно является формой параллелизма данных . параллелизма часто является целью автоматического распараллеливания циклов Эта форма .
Распределенные вычислительные системы и неоднородные архитектуры доступа к памяти обычно легче всего масштабировать до большого количества процессоров, и поэтому может показаться естественной целью для программного обеспечения, демонстрирующего масштабируемый параллелизм. Однако приложения с масштабируемым параллелизмом могут не иметь параллелизма достаточно крупное зерно для эффективной работы в таких системах (если только программное обеспечение не является слишком параллельным ). В нашем примере выше второй цикл «i» поразительно параллелен. но в первом цикле каждая итерация требует результатов, полученных в нескольких предыдущих итерациях. Таким образом, для первого цикла распараллеливание может включать обширную связь или синхронизацию между процессорами. и, следовательно, приведет к чистому ускорению только в том случае, если такие взаимодействия имеют очень низкие накладные расходы, или можно ли преобразовать код для решения этой проблемы (т. е. путем комбинированной оптимизации масштабируемой локальности /масштабируемого параллелизма). [1] ).
Языки
[ редактировать ]- Ateji PX — расширение Java, делающее возможным масштабируемый параллелизм на виртуальной машине Java (JVM).
- BMDFM Бинарная модульная машина потока данных
- SequenceL — это функциональный язык программирования общего назначения, основными целями разработки которого являются производительность на многоядерном оборудовании, простота программирования и ясность/читаемость кода.
Ссылки
[ редактировать ]- ^ Воннакотт, Д. (2000). «Использование отклонения времени для устранения простоя из-за пропускной способности памяти и ограничений сети». Материалы 14-го Международного симпозиума по параллельной и распределенной обработке. ИППДС 2000 . стр. 171–180. дои : 10.1109/IPDPS.2000.845979 . ISBN 978-0-7695-0574-9 .