~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 5A0D0BEF6B716E10DF55B526EB3CCAE6__1713080760 ✰
Заголовок документа оригинал.:
✰ Parallel programming model - Wikipedia ✰
Заголовок документа перевод.:
✰ Модель параллельного программирования — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Parallel_programming_model ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/5a/e6/5a0d0bef6b716e10df55b526eb3ccae6.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/5a/e6/5a0d0bef6b716e10df55b526eb3ccae6__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:28:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 14 April 2024, at 10:46 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Модель параллельного программирования — Википедия Jump to content

Модель параллельного программирования

Из Википедии, бесплатной энциклопедии

В вычислительной технике модель параллельного программирования — это абстракция параллельной компьютерной архитектуры, с помощью которой удобно выражать алгоритмы и их композицию в программах . О ценности модели программирования можно судить по ее общности : насколько хорошо может быть выражен ряд различных проблем для множества различных архитектур, и по ее производительности : насколько эффективно могут выполняться скомпилированные программы. [1] Реализация модели параллельного программирования может принимать форму библиотеки , вызываемой из языка программирования в качестве расширения существующих языков.

Консенсус вокруг конкретной модели программирования важен, поскольку он приводит к созданию различных параллельных компьютеров с поддержкой этой модели, тем самым облегчая переносимость программного обеспечения. В этом смысле модели программирования называются мостом между аппаратным и программным обеспечением. [2]

Классификация моделей параллельного программирования [ править ]

Классификации моделей параллельного программирования можно разделить на две области: взаимодействие процессов и декомпозиция задач. [3] [4] [5]

Взаимодействие процессов [ править ]

Взаимодействие процессов относится к механизмам, с помощью которых параллельные процессы могут взаимодействовать друг с другом. Наиболее распространенными формами взаимодействия являются общая память и передача сообщений, но взаимодействие также может быть неявным (невидимым для программиста).

Общая память [ править ]

Общая память — это эффективное средство передачи данных между процессами. В модели с общей памятью параллельные процессы совместно используют глобальное адресное пространство, в котором они читают и записывают асинхронно. Асинхронный одновременный доступ может привести к состояниям гонки такие механизмы, как блокировки , семафоры и мониторы , и чтобы избежать этого, можно использовать . Обычные многоядерные процессоры напрямую поддерживают разделяемую память, многие языки и библиотеки параллельного программирования, такие как Cilk , OpenMP и Threading Building Blocks для использования которой предназначены .

Передача сообщений [ править ]

В модели передачи сообщений параллельные процессы обмениваются данными посредством передачи сообщений друг другу. Эти коммуникации могут быть асинхронными, когда сообщение может быть отправлено до того, как получатель будет готов, или синхронными, когда получатель должен быть готов. Формализация передачи сообщений Communicating Sequential Processes (CSP) использует синхронные каналы связи для соединения процессов и привела к появлению таких важных языков, как Occam , Limbo и Go . Напротив, модель актера использует асинхронную передачу сообщений и использовалась при разработке таких языков, как D , Scala и SALSA.

Разделенное глобальное адресное пространство [ править ]

Модели разделенного глобального адресного пространства (PGAS) обеспечивают золотую середину между общей памятью и передачей сообщений. PGAS предоставляет абстракцию глобального адресного пространства памяти, которая логически разделена, где часть является локальной для каждого процесса. Параллельные процессы взаимодействуют посредством асинхронного выполнения операций (например, чтения и записи) в глобальном адресном пространстве, что напоминает модели общей памяти. Однако за счет семантического разделения глобального адресного пространства на части, связанные с конкретными процессами, они позволяют программистам использовать локальность ссылок и обеспечивают эффективную реализацию на параллельных компьютерах с распределенной памятью . PGAS предлагается многими языками и библиотеками параллельного программирования, такими как Fortran 2008 , Chapel , UPC++ и SHMEM .

Неявное взаимодействие [ править ]

В неявной модели программист не видит взаимодействия процессов, и вместо этого за его выполнение отвечает компилятор и/или среда выполнения. Двумя примерами неявного параллелизма являются языки, специфичные для предметной области, где предписывается параллелизм в операциях высокого уровня, и языки функционального программирования, поскольку отсутствие побочных эффектов позволяет независимым функциям выполняться параллельно. [6] Однако с таким параллелизмом трудно справиться. [7] а функциональные языки, такие как Concurrent Haskell и Concurrent ML, предоставляют функции для явного и правильного управления параллелизмом.

Декомпозиция задачи [ править ]

Параллельная программа состоит из одновременно выполняемых процессов. Декомпозиция проблемы связана со способом формулировки составляющих процессов. [8] [5]

Параллелизм задач [ править ]

Модель параллельного выполнения задач фокусируется на процессах или потоках выполнения. Эти процессы часто будут поведенчески различны, что подчеркивает необходимость общения. Параллелизм задач — это естественный способ выразить коммуникацию посредством передачи сообщений. В таксономии Флинна параллелизм задач обычно классифицируется как MIMD / MPMD или MISD .

Параллелизм данных [ править ]

Модель с параллельными данными фокусируется на выполнении операций с набором данных, обычно с регулярно структурированным массивом. С этими данными будет работать набор задач, но независимо на непересекающихся разделах. В таксономии Флинна параллелизм данных обычно классифицируется как MIMD / SPMD или SIMD .

Параллелизм потоков [ править ]

Потоковый параллелизм, также известный как конвейерный параллелизм, фокусируется на разделении вычислений на последовательность этапов, где каждый этап обрабатывает часть входных данных данные. Каждая ступень работает независимо и одновременно, а выход одной ступени этап служит входом для следующего этапа. Параллелизм потоков особенно удобен для приложений с непрерывными потоками данных или конвейерными вычислениями.

Неявный параллелизм [ править ]

Как и в случае неявного взаимодействия процессов, неявная модель параллелизма ничего не раскрывает программисту, поскольку ответственность за это несут компилятор, среда выполнения или оборудование. Например, в компиляторах автоматическое распараллеливание — это процесс преобразования последовательного кода в параллельный код, а в компьютерной архитектуре суперскалярное выполнение — это механизм, посредством которого параллелизм на уровне команд используется для параллельного выполнения операций.

Терминология [ править ]

Модели параллельного программирования тесно связаны с моделями вычислений . Модель параллельных вычислений — это абстракция , используемая для анализа стоимости вычислительных процессов, но она не обязательно должна быть практичной, поскольку ее можно эффективно реализовать в аппаратном и/или программном обеспечении. Модель программирования, напротив, конкретно подразумевает практические соображения по реализации аппаратного и программного обеспечения. [9]

Язык параллельного программирования может быть основан на одной модели программирования или на их комбинации. Например, высокопроизводительный язык Fortran основан на взаимодействиях с общей памятью и декомпозиции задач с параллельными данными, а Go предоставляет механизм для взаимодействия с общей памятью и передачи сообщений.

Примеры моделей параллельного программирования [ править ]

Имя Класс взаимодействия Класс разложения Пример реализации
Модель актера Асинхронная передача сообщений Задача D , Эрланг , Скала , САЛЬСА
Массовая синхронная параллель Общая память Задача Apache Giraph , Apache Hama , BSPlib
Коммуникация последовательных процессов Синхронная передача сообщений Задача Ада , Оккам , VerilogCSP , Го
Схемы Передача сообщений Задача Верилог , VHDL
Поток данных Передача сообщений Задача Блеск , TensorFlow , Apache Flink
Функциональный Передача сообщений Задача Параллельный Haskell , Параллельное машинное обучение
ЛогП-машина Синхронная передача сообщений Не указан Никто
Параллельная машина произвольного доступа Общая память Данные Cilk , CUDA , OpenMP , строительные блоки многопоточности , XMTC
СПМД ПГАС Разделенное глобальное адресное пространство Данные Фортран 2008 , унифицированный параллельный C , UPC++ , SHMEM
Глобальный параллелизм задач Разделенное глобальное адресное пространство Задача Часовня , X10

См. также [ править ]

Ссылки [ править ]

  1. ^ Скиликорн, Дэвид Б., «Модели для практических параллельных вычислений», Международный журнал параллельного программирования, 20.2 133–158 (1991), https://www.ida.liu.se/~chrke55/papers/modelsurvey.pdf
  2. ^ Лесли Г. Валиант, «Модульная модель для параллельных вычислений», Communications of ACM, том 33, выпуск 8, август 1990 г., страницы 103–111.
  3. ^ Джон Э. Сэвидж, Модели вычислений: исследование возможностей вычислений, 2008, Глава 7 (Параллельные вычисления), http://cs.brown.edu/~jes/book/. Архивировано 5 ноября 2016 г. в Wayback Machine.
  4. ^ «1.3 Модель параллельного программирования» . www.mcs.anl.gov . Проверено 21 марта 2024 г.
  5. ^ Перейти обратно: а б «Учебное пособие «Введение в параллельные вычисления | HPC @ LLNL»» . hpc.llnl.gov . Проверено 21 марта 2024 г.
  6. ^ Хаммонд, Кевин. Параллельное функциональное программирование: Введение. На Международном симпозиуме по параллельным символьным вычислениям, стр. 46. ​​1994.
  7. ^ Макберни, Д.Л., и М. Ронан Сон. «Транспьютерные эксперименты с архитектурой ZAPP». PARLE Параллельные архитектуры и языки Европы. Шпрингер Берлин Гейдельберг, 1987.
  8. ^ «2.2 Разделение» . www.mcs.anl.gov . Проверено 21 марта 2024 г.
  9. ^ Скилликорн, Дэвид Б. и Доменико Талия, Модели и языки для параллельных вычислений, ACM Computing Surveys, 30.2 123–169 (1998), https://www.cs.utexas.edu/users/browne/CS392Cf2000/papers/ ModelsOfParallelComputation-Skillicorn.pdf

Дальнейшее чтение [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 5A0D0BEF6B716E10DF55B526EB3CCAE6__1713080760
URL1:https://en.wikipedia.org/wiki/Parallel_programming_model
Заголовок, (Title) документа по адресу, URL1:
Parallel programming model - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)