Jump to content

Одна программа, несколько данных

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

Термин SPMD был введен в 1983 году и использовался для обозначения двух разных вычислительных моделей:

  1. Мишель Оген (Университет Ниццы София-Антиполис) и Франсуа Ларбей (Томсон/Синтра), [1] [2] [3] как подход « разветвление и объединение » и параллельные данные, при котором параллельные задачи («одна программа») разделяются и выполняются одновременно синхронно на нескольких SIMD-процессорах с разными входами, и
  2. Фредерика Дарема (IBM), [4] [5] [6] где « (процессоры) все процессы начинают выполнять одну и ту же программу... но посредством директив синхронизации... самопланируют себя для выполнения разных инструкций и действий с разными данными » и позволяют распараллеливать MIMD данной программы, и является более общим подход, чем параллелизм данных , и более эффективен, чем метод fork-and-join, для параллельного выполнения на мультипроцессорах общего назначения.

(IBM) SPMD — это наиболее распространенный стиль параллельного программирования, который можно рассматривать как подкатегорию MIMD, поскольку он относится к MIMD-выполнению заданной («единственной») программы. [7] Это также является предпосылкой для исследовательских концепций, таких как активные сообщения и распределенная общая память .

СПМД против SIMD

[ редактировать ]
Пример «Одна программа, несколько данных».

При параллельном выполнении SPMD несколько автономных процессоров одновременно выполняют одну и ту же программу в независимых точках, а не в синхронном режиме , который SIMD или SIMT навязывают различным данным. С помощью SPMD задачи можно выполнять на процессорах общего назначения . В SIMD одна и та же операция (инструкция) применяется к нескольким данным для управления потоками данных (версия SIMD — это векторная обработка , при которой данные организованы как векторы). Другой класс процессоров, графические процессоры, обеспечивает обработку нескольких потоков SIMD. Обратите внимание, что SPMD и SIMD не являются взаимоисключающими; Параллельное выполнение SPMD может включать SIMD, векторную обработку или подобработку на графическом процессоре. SPMD использовался для параллельного программирования машинной архитектуры как с передачей сообщений, так и с общей памятью.

Распределенная память

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

В компьютерных архитектурах с распределенной памятью реализации SPMD обычно используют передачи сообщений программирование . Компьютер с распределенной памятью состоит из набора взаимосвязанных независимых компьютеров, называемых узлами. Для параллельного выполнения каждый узел запускает свою собственную программу и взаимодействует с другими узлами, отправляя и получая сообщения, вызывая для этой цели процедуры отправки/получения. Другие директивы распараллеливания, такие как Barrier синхронизация , также могут быть реализованы посредством сообщений. Сообщения могут отправляться с помощью ряда механизмов связи, таких как TCP/IP через Ethernet или специализированных высокоскоростных межсоединений, таких как Myrinet и Supercomputer Interconnect. Для сред с распределенной памятью последовательные разделы программы могут быть реализованы путем идентичного вычисления последовательного раздела на всех узлах, а не путем вычисления результата на одном узле и отправки его другим, если это повышает производительность за счет снижения накладных расходов на связь.

В настоящее время программист изолирован от деталей передачи сообщений с помощью стандартных интерфейсов, таких как PVM и MPI .

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

Общая память

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

На машине с общей памятью (компьютер с несколькими взаимосвязанными процессорами , имеющими доступ к одному и тому же пространству памяти) совместное использование может быть реализовано в контексте либо физически общей памяти, либо логически общей (но физически распределенной) памяти; Помимо общей памяти, процессоры компьютерной системы также могут включать в себя локальную (или частную) память. Для любого из этих контекстов синхронизация может быть включена с помощью аппаратных примитивов (таких как сравнение и замена или выборка и добавление ). Для машин, которые не имеют такой аппаратной поддержки, можно использовать блокировки и «обменять данные». » между процессорами (или, в более общем смысле, процессами или потоками ) путем размещения разделяемых данных в области общей памяти. Когда оборудование не поддерживает разделяемую память, упаковка данных в виде «сообщения» часто является наиболее эффективным способом программирования ( логически) компьютеры с общей памятью с большим количеством процессоров, где физическая память является локальной для процессоров и доступ к памяти другого процессора занимает больше времени. SPMD на машине с общей памятью может быть реализован с помощью стандартных процессов (тяжеловесных) или потоков (облегченных).

с общей памятью Многопроцессорная обработка (как симметричная многопроцессорная обработка , SMP, так и неоднородный доступ к памяти , NUMA) предоставляет программисту общее пространство памяти и возможность распараллеливания выполнения. В модели SPMD (IBM) взаимодействующие процессоры (или процессы) проходят разные пути в программе, используя параллельные директивы ( директивы распараллеливания и синхронизации ), которые могут использовать операции сравнения и замены, а также операции выборки и сложения над переменными синхронизации общей памяти. ) и выполнять операции с данными в общей памяти («общие данные»); процессоры (или процессы) также могут иметь доступ и выполнять операции с данными в своей локальной памяти («частные данные»). Напротив, при использовании подходов fork-and-join программа начинает выполнение на одном процессоре, а выполнение разделяется на параллельную область, которая запускается при обнаружении параллельных директив; в параллельной области процессоры выполняют параллельную задачу с разными данными. Типичным примером является параллельный цикл DO, где разные процессоры работают над отдельными частями массивов, участвующих в цикле. В конце цикла выполнение синхронизируется (с мягкими или жесткими барьерами). [6] ), а процессоры (процессы) переходят к следующему доступному разделу программы для выполнения. (IBM) SPMD был реализован в текущем стандартном интерфейсе многопроцессорной обработки с общей памятью OpenMP , который использует многопоточность, обычно реализуемую облегченными процессами, называемыми потоками .

Комбинирование уровней параллелизма

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

Современные компьютеры позволяют одновременно использовать множество параллельных режимов для достижения максимального совокупного эффекта. Программа с распределенной памятью, использующая MPI, может работать на наборе узлов. Каждый узел может представлять собой компьютер с общей памятью и выполняться параллельно на нескольких процессорах с использованием OpenMP. В каждом ЦП векторные инструкции SIMD (обычно генерируемые автоматически компилятором) и выполнение суперскалярных инструкций (обычно прозрачно обрабатываемые самим ЦП), такие как конвейерная обработка и использование нескольких параллельных функциональных блоков, используются для максимальной скорости одного ЦП.

Аббревиатура SPMD, означающая «одна программа, множественные данные», использовалась для описания двух различных вычислительных моделей для использования параллельных вычислений, и это связано с тем, что оба термина являются естественным расширением таксономии Флинна. [7] Две соответствующие группы исследователей не знали об использовании друг другом термина SPMD для независимого описания различных моделей параллельного программирования.

Термин SPMD был впервые предложен в 1983 году Мишелем Огеном (Университет Ниццы, София-Антиполис) и Франсуа Ларби (Томсон/Синтра) в контексте параллельного компьютера OPSILA, а также в контексте параллельных вычислений по принципу разветвления и объединения и обработки данных. модельный подход. [1] Этот компьютер состоял из ведущего (процессора-контроллера) и SIMD-процессоров (или режима векторного процессора, как предложил Флинн). В модели SPMD Огена одна и та же (параллельная) задача (« одна и та же программа ») выполняется на разных (SIMD) процессорах (« работающих в синхронном режиме »). [1] действие на часть («срез») вектора данных. В частности, в своей статье 1985 г. [2] (и аналогично в [3] [1] ) указано: « Мы рассматриваем режим работы SPMD (Одна программа, несколько данных). Этот режим позволяет одновременно выполнять одну и ту же задачу (по одной на процессор), но предотвращает обмен данными между процессорами. Обмен данными осуществляется только в режиме SIMD посредством векторных присвоений. Мы предполагаем, что синхронизация сводится к переключениям (sic) между режимами работы SIMD и SPMD (sic) с использованием глобальных примитивов fork-join ».

Примерно в тот же период (конец 1983 - начало 1984 года) термин SPMD был предложен Фредерикой Дарема (в то время работавшей в IBM и входившей в группу RP3) для определения другой предложенной ею вычислительной модели SMPD: [6] [5] [4] как модель программирования, которая за прошедшие годы была применена к широкому спектру высокопроизводительных компьютеров общего назначения (включая RP3 - 512-процессорный прототип параллельного процессора IBM Research) и привела к нынешним стандартам параллельных вычислений. Модель программирования (IBM) SPMD предполагает наличие множества процессоров, которые работают совместно, выполняя одну и ту же программу, но могут использовать разные пути выполнения программы на основе директив распараллеливания, встроенных в программу; и, в частности, как указано в [6] [5] [4] [9] [10] « все процессы, участвующие в параллельных вычислениях, создаются в начале выполнения и продолжают существовать до конца », (процессоры/процессы) « выполняют разные инструкции и действуют с разными данными », « задание (работа) должно быть выполнено ». выполняемые каждым процессом, распределяются динамически », то есть процессы « самопланируют себя для выполнения разных инструкций и действий с разными данными », таким образом, самоназначаются для совместной работы при выполнении последовательных и параллельных задач (а также репликации задач). в программе. Понятие «процесс» использовалось как обобщение термина «процессор» в том смысле, что на процессоре может выполняться несколько процессов (например, для использования большей степени параллелизма для большей эффективности и балансировки нагрузки). Модель (IBM) SPMD была предложена Даремой как подход, отличный и более эффективный, чем подход «разветвление и объединение», который применялся всеми остальными членами сообщества в то время; она также является более общей, чем просто вычислительная модель с «параллельными данными», и может включать в себя fork&join (в качестве реализации подкатегории). Исходным контекстом SPMD (IBM) был компьютер RP3 (прототип параллельного процессора IBM Research с 512 процессорами), который поддерживал вычисления общего назначения как с распределенной, так и (логически) разделяемой памятью. [9] Модель (IBM) SPMD была реализована Даремой и коллегами из IBM в EPEX (Среда для параллельного выполнения), одном из первых прототипов сред программирования. [6] [5] [4] [9] [10] [11] Эффективность (IBM) SPMD была продемонстрирована для широкого класса приложений. [9] [4] и в 1988 году был реализован в IBM FORTRAN, [12] первый продукт в области параллельного программирования; а также в MPI (1991 г. и позже), OpenMP (1997 г. и позже) и других средах, которые приняли и цитируют вычислительную модель (IBM) SPMD.

К концу 1980-х годов существовало множество распределенных компьютеров с собственными библиотеками передачи сообщений. Первым стандартом SPMD был PVM . Текущий стандарт де-факто — MPI .

Параллельные директивы Cray были прямыми предшественниками OpenMP .

  1. ^ Перейти обратно: а б с д М. Оген, Ф. Ларби (1983). «OPSILA: расширенный SIMD для численного анализа и обработки сигналов». Микрокомпьютеры: достижения в промышленности, бизнесе и образовании / Девятый симпозиум EUROMICRO по микропроцессорам и микропрограммированию, стр. 311–318 Мадрид, 13–16 сентября 1983 г.
  2. ^ Перейти обратно: а б М. Оген, Ф. Лабри (1985). «Многопроцессорная SIMD-машина: OPSILA». К. Вальдшмидт и Б. Мирхауг Эдс, @EUROMICRO, 1985, Elsevier Science Publishers BV – Северная Голландия .
  3. ^ Перейти обратно: а б Оген, М.; Боэри, Ф.; Далбан, Япония; Винсент-Карфур, А. (1987). «Опыт использования многопроцессорной архитектуры SIMD/SPMD». Многопроцессорность и микропрограммирование . 21 (1–5): 171–178. дои : 10.1016/0165-6074(87)90034-2 .
  4. ^ Перейти обратно: а б с д и Дарема, Фредерика (2001). «Модель SPMD: прошлое, настоящее и будущее, последние достижения в области параллельных виртуальных машин и интерфейса передачи сообщений». 8-е собрание европейской группы пользователей PVM/MPI, Санторини/Тера, Греция, 23–26 сентября 2001 г. Конспекты лекций по информатике 2131 .
  5. ^ Перейти обратно: а б с д Ф. Дарема-Роджерс, Д.А. Джордж, В.А. Нортон и Г.Ф. Пфистер (1985). «Параллельная среда виртуальной машины». IBM/RC11225 (23.01.85) и IBM/RC11381 (19.09.85) . {{cite journal}}: CS1 maint: несколько имен: список авторов ( ссылка )
  6. ^ Перейти обратно: а б с д и Дарема, Ф.; Джордж, округ Колумбия; Нортон, Вирджиния; Пфистер, Г. Ф. (1988). «Вычислительная модель с одной программой и несколькими данными для EPEX/FORTRAN». Журнал параллельных вычислений . 7 :11–24. дои : 10.1016/0167-8191(88)90094-4 .
  7. ^ Перейти обратно: а б Флинн, Майкл (1972). «Некоторые компьютерные организации и их эффективность» (PDF) . Транзакции IEEE на компьютерах . С-21 (9): 948–960. дои : 10.1109/TC.1972.5009071 . S2CID   18573685 .
  8. ^ Флинн, Майкл Дж. (сентябрь 1972 г.). «Некоторые компьютерные организации и их эффективность» (PDF) . Транзакции IEEE на компьютерах . С-21 (9): 948–960. дои : 10.1109/TC.1972.5009071 .
  9. ^ Перейти обратно: а б с д Дарема, Фредерика (1987). «Среда приложений для прототипа параллельного процессора IBM Research (RP3)». IBMRC12627 (27 марта 1987 г.) и в материалах 1-й Международной конференции по суперкомпьютерам (ICS'87) Springer-Verlag (1987) .
  10. ^ Перейти обратно: а б Дарема, Фредерика (1988). «Разработка параллельных приложений для систем с общей памятью». IBM/RC12229 (1986) и в «Параллельных системах и вычислениях», Дж. Пол и Г.С. Алмаси Эдс, Elsevier Science Publishers BV (Северная Голландия), 1988 .
  11. ^ Дж. М. Стоун, Ф. Дарема-Роджерс, В. А. Нортон, Г. Ф. Пфистер (1985). «Введение в препроцессор VM/EPEX и справочник». IBM/RC11407 (30.09.85) и IBM/RC11408 (30.09.85) . {{cite journal}}: CS1 maint: несколько имен: список авторов ( ссылка )
  12. ^ Туми, Эл Джей; Плачи, ЕС; Скарборо, Род-Джеймс; Сахулка, Р.Дж.; Шоу, Дж. Ф.; Шеннон, AW (1988). «IBM параллельный FORTRAN». Системный журнал IBM . 27 (4): 416–435. дои : 10.1147/sj.274.0416 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 06e2eeaf0ef9391f72ed0407a5b05d6d__1706181240
URL1:https://arc.ask3.ru/arc/aa/06/6d/06e2eeaf0ef9391f72ed0407a5b05d6d.html
Заголовок, (Title) документа по адресу, URL1:
Single program, multiple data - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)