SPMD

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

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

Содержание
  • 1 SPMD vs SIMD
  • 2 Распределенная память
  • 3 Общая память
  • 4 Комбинация уровней параллелизма
  • 5 История
  • 6 Ссылки
  • 7 Внешние ссылки
SPMD и SIMD

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

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

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

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

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

Shared memory

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

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

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

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

История

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

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

Ссылки
  1. ^[1]
  2. ^M. Огин, Ф. Ларби, OPSILA: расширенная SIMD-карта для численного анализа и обработки сигналов, в Microcomputers: development in industry, business, and education / Девятый симпозиум EUROMICRO по микропроцессорам и микропрограммированию, стр. 311-318 Мадрид, 13–16 сентября 1983 г.
  3. ^Ф. Дарема, модель SPMD: прошлое, настоящее и будущее, Последние достижения в области параллельных виртуальных машин и интерфейса передачи сообщений: 8-е заседание Европейской группы пользователей PVM / MPI, Санторини / Тера, Греция, 23–26 сентября 2001 г. Конспект лекции in Computer Science 2131, p. 1, 2001.
Внешние ссылки
Последняя правка сделана 2021-06-06 04:08:14
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте