Парадигма модели параллельного программирования в информатике
В информатике глобальное адресное пространство с разделением ( PGAS ) — это парадигма параллельной модели программирования . PGAS описывается коммуникационными операциями, включающими абстракцию глобального адресного пространства памяти , которая логически разделена, где часть является локальной для каждого процесса, потока или элемента обработки . [1] [2] Новизна PGAS заключается в том, что части общего пространства памяти могут иметь сродство к определенному процессу, тем самым используя локальность ссылок для повышения производительности. Модель памяти PGAS представлена в различных языках и библиотеках параллельного программирования, включая: Coarray Fortran , Unified Parallel C , Split-C, Fortress , Chapel , X10 , UPC++, Coarray C++, Global Arrays , DASH и SHMEM . Парадигма PGAS теперь является неотъемлемой частью языка Fortran , начиная с Fortran 2008 , который стандартизировал coarrays.
Различные языки и библиотеки, предлагающие модель памяти PGAS, значительно различаются в других деталях, таких как базовый язык программирования и механизмы, используемые для выражения параллелизма. Многие системы PGAS сочетают преимущества стиля программирования SPMD для систем распределенной памяти (как это используется MPI ) с семантикой ссылок на данные систем с общей памятью. В отличие от передачи сообщений , модели программирования PGAS часто предлагают односторонние операции связи, такие как удаленный доступ к памяти (RMA), посредством которых один элемент обработки может напрямую обращаться к памяти с привязкой к другому (потенциально удаленному) процессу, без явного семантического участия пассивного целевого процесса. PGAS предлагает большую эффективность и масштабируемость, чем традиционные подходы с общей памятью с плоским адресным пространством, поскольку локальность данных , специфичная для оборудования, может быть явно раскрыта в семантическом разбиении адресного пространства.
Вариант парадигмы PGAS, асинхронное секционированное глобальное адресное пространство ( APGAS ), дополняет модель программирования возможностями как для локального, так и для удаленного создания асинхронных задач. [3] Двумя языками программирования, которые используют эту модель, являются Chapel и X10 .
Примеры
- Coarray Fortran [4] [5] теперь является неотъемлемой частью языка Fortran 2008 [6]
- Unified Parallel C [7] [8] [9] явно параллельный SPMD-диалект языка программирования ISO C
- Chapel [10] параллельный язык, изначально разработанный Cray в рамках проекта DARPA HPCS
- UPC++, [11] Библиотека шаблонов C++ , которая обеспечивает операции связи PGAS, предназначенные для поддержки высокопроизводительных вычислений на суперкомпьютерах exascale , включая удаленный доступ к памяти (RMA) и удаленный вызов процедур (RPC)
- Coarray C++ [12] библиотека C++, разработанная Cray, предоставляющая близкий аналог функциональности Fortran coarray
- Global Arrays [13] библиотека, поддерживающая параллельные научные вычисления на распределенных массивах
- DASH [14] библиотека шаблонов C++ для распределенных структур данных с поддержкой иерархической локальности
- SHMEM — семейство библиотек, поддерживающих параллельные научные вычисления на распределенных массивах.
- X10 [15] параллельный язык, разработанный IBM в рамках проекта DARPA HPCS
- Fortress — параллельный язык, разработанный Sun Microsystems в рамках проекта DARPA HPCS.
- Titanium [16] [17] — явно параллельный диалект Java, разработанный в Калифорнийском университете в Беркли для поддержки научных высокопроизводительных вычислений на крупномасштабных многопроцессорных системах.
- Split-C [18] параллельное расширение языка программирования C , которое поддерживает эффективный доступ к глобальному адресному пространству
- Архитектура Adapteva Epiphany представляет собой многоядерную сеть на кристалле процессора с адресацией блокнотной памяти между ядрами.
Смотрите также
Внешние ссылки
- Официальный сайт
- Введение в модель разделенного глобального адресного пространства
- Программирование в модели разделенного глобального адресного пространства. Архивировано 12 июня 2010 г. на Wayback Machine (2003 г.)
- Система связи GASNet — обеспечивает программную инфраструктуру для языков PGAS через высокопроизводительные сети [19]
Ссылки
- ^ Алмаси, Джордж. «Языки PGAS (Разделенное глобальное адресное пространство)», Энциклопедия параллельных вычислений, Springer, (2011): 1539-1545. https://doi.org/10.1007/978-0-387-09766-4_210
- ^ Кристиан Коарфэ; Юрий Доценко; Джон Меллор-Крамми, «Оценка языков глобального адресного пространства: Co-Array Fortran и Unified Parallel C»
- ^ Тим Ститт, «Введение в модель программирования с использованием разделенного глобального адресного пространства (PGAS)»
- ^ Numrich, RW, Reid, J., Co-array Fortran для параллельного программирования. ACM SIGPLAN Fortran Forum 17(2), 1–31 (1998).
- ^ J. Reid: Coarrays в следующем стандарте Fortran. SIGPLAN Fortran Forum 29(2), 10–27 (июль 2010 г.)
- ^ GCC wiki, Поддержка Coarray в gfortran, как указано в стандарте Fortran 2008
- ^ W. Chen, D. Bonachea, J. Duell, P. Husbands, C. Iancu, K. Yelick. Анализ производительности компилятора Berkeley UPC. 17-я ежегодная международная конференция по суперкомпьютерам (ICS), 2003. https://doi.org/10.1145/782814.782825
- ^ Тарек Эль-Газави, Уильям Карлсон, Томас Стерлинг и Кэтрин Йелик. UPC: распределенное программирование общей памяти. John Wiley & Sons, 2005.
- ^ Консорциум UPC, Спецификации языка и библиотеки UPC, v1.3, Технический отчет Национальной лаборатории Лоуренса в Беркли LBNL-6623E, ноябрь 2013 г. https://doi.org/10.2172/1134233
- ^ Брэдфорд Л. Чемберлен, Чапел, Модели программирования для параллельных вычислений, под редакцией Павана Баладжи, MIT Press, ноябрь 2015 г.
- ^ Джон Бачан, Скотт Б. Баден, Стивен Хофмейр, Матиас Жаклин, Амир Камил, Дэн Боначеа, Пол Х. Харгроув, Хадия Ахмед. «UPC++: высокопроизводительная коммуникационная структура для асинхронных вычислений», на 33-м Международном симпозиуме IEEE по параллельной и распределенной обработке (IPDPS'19), 20–24 мая 2019 г. https://doi.org/10.25344/S4V88H
- ^ TA Johnson: Coarray C++. Труды 7-й Международной конференции по моделям программирования PGAS. стр. 54–66. PGAS'13 (2013),
- ^ Nieplocha, Jaroslaw; Harrison, Robert J.; Littlefield, Richard J. (1996). Глобальные массивы: модель программирования доступа к неоднородной памяти для высокопроизводительных компьютеров. Журнал суперкомпьютеров. 10 (2): 169–189.
- ^ K. Furlinger, C. Glass, A. Knupfer, J. Tao, D. Hunich и др. DASH: структуры данных и алгоритмы с поддержкой иерархической локальности. Семинары по параллельной обработке Euro-Par (2014).
- ^ P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra и др. X10: объектно-ориентированный подход к неоднородным кластерным вычислениям. Труды 20-й ежегодной конференции ACM SIGPLAN по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA'05) (2005).
- ^ Кэтрин Йелик, Пол Хилфингер, Сьюзан Грэм, Дэн Боначеа, Джимми Су, Амир Камил, Каушик Датта, Филипп Колелла и Тонг Вэнь, «Параллельные языки и компиляторы: взгляд с точки зрения Titanium Experience», Международный журнал высокопроизводительных вычислительных приложений, 1 августа 2007 г., 21(3):266-290
- ^ Кэтрин Йелик, Сьюзан Грэм, Пол Хилфингер, Дэн Боначеа, Джимми Су, Амир Камил, Каушик Датта, Филипп Колелла, Тонг Вэнь, «Титан», Энциклопедия параллельных вычислений, под редакцией Дэвида Падуа, (Springer: 2011) Страницы: 2049-2055
- ^ Каллер, Д. Э., Дюссо, А., Голдштейн, С. К., Кришнамурти, А., Люметта, С., Фон Эйкен, Т. и Йелик, К. Параллельное программирование в Split-C. В Supercomputing'93: Труды конференции ACM/IEEE 1993 года по суперкомпьютерам (стр. 262-273). IEEE.
- ^ Боначеа Д., Харгроув П. GASNet-EX: Высокопроизводительная, портативная коммуникационная библиотека для Exascale Proceedings of Languages and Compilers for Parallel Computing (LCPC'18). Октябрь 2018 г. https://doi.org/10.25344/S4QP4W