СПМД - SPMD

В вычисление, СПМД (одна программа, несколько данных) - это метод, используемый для достижения параллелизм; это подкатегория MIMD. Задачи разделяются и выполняются одновременно на нескольких процессорах с разными входными данными, чтобы быстрее получать результаты. SPMD - это наиболее распространенный стиль параллельного программирования.[1][неудачная проверка ] Это также необходимое условие для таких исследовательских концепций, как активные сообщения и распределенная разделяемая память.

SPMD против SIMD

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

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

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

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

Распределенная память - это стиль программирования, используемый на параллельных суперкомпьютерах отечественного производства. Кластеры Беовульфа к крупнейшим кластерам на Терагрид.

Общая память

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

В отличие от SPMD, общая память многопроцессорность (обе симметричная многопроцессорная обработка, SMP и неравномерный доступ к памяти, NUMA) предоставляет программисту общее пространство памяти и возможность распараллеливать выполнение, заставляя программу выполнять разные пути на разных процессорах. Программа начинает выполнение на одном процессоре, и выполнение разделяется на параллельную область, которая запускается, когда параллельные директивы встречаются. В параллельной области процессоры выполняют одну программу с разными данными. Типичным примером является параллельный цикл DO, в котором разные процессоры работают с отдельными частями массивов, задействованных в цикле. В конце цикла выполнение синхронизируется, только один процессор продолжает работу, а остальные ждут. Текущий стандартный интерфейс для многопроцессорной обработки с общей памятью: OpenMP. Обычно это реализуется облегченными процессами, называемыми потоки.

Сочетание уровней параллелизма

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

История

SPMD был впервые предложен в 1983 году Мишелем Огеном (Университет Ниццы София-Антиполис) и Франсуа Ларби (Thomson / Sintra) в параллельном компьютере OPSILA.[2] а затем в 1984 г. Фредерика Дарема в IBM для высокопараллельных машин, таких как RP3 (прототип IBM Research Parallel Processor Prototype), в неопубликованной памятке IBM.[3] К концу 1980-х было много распределенных компьютеров с проприетарными библиотеками передачи сообщений. Первый стандарт SPMD был PVM. Текущий стандарт де-факто MPI.

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

Рекомендации

  1. ^ [1]
  2. ^ М. Авгуин, Ф. Ларби, OPSILA: расширенная SIMD-карта для численного анализа и обработки сигналов, в «Микрокомпьютеры: разработки в промышленности, бизнесе и образовании» / Девятый симпозиум EUROMICRO по микропроцессам и микропрограммам, стр. 311-318 Мадрид, 13–16 сентября , 1983 г.
  3. ^ Ф. Дарема, Модель СПМД: прошлое, настоящее и будущее, Последние достижения в области параллельных виртуальных машин и интерфейса передачи сообщений: 8-е заседание Европейской группы пользователей PVM / MPI, Санторини / Тера, Греция, 23–26 сентября 2001 г. Конспект лекций по информатике 2131, стр. 1, 2001.

внешняя ссылка