stringtranslate.com

Параллельная оперативная память

В информатике параллельная машина с произвольным доступом ( параллельная RAM или PRAM ) — это абстрактная машина с общей памятью . Как следует из названия, PRAM предназначена как аналогия параллельных вычислений для машины с произвольным доступом (RAM) (не путать с памятью с произвольным доступом ). [1] Точно так же, как RAM используется разработчиками последовательных алгоритмов для моделирования алгоритмической производительности (такой как временная сложность), PRAM используется разработчиками параллельных алгоритмов для моделирования параллельной алгоритмической производительности (такой как временная сложность, где предполагаемое количество процессоров обычно также указывается). Подобно тому, как модель RAM игнорирует практические вопросы, такие как время доступа к кэш-памяти по сравнению с основной памятью, модель PRAM игнорирует такие вопросы, как синхронизация и связь , но предоставляет любое (зависящее от размера задачи) количество процессоров. Стоимость алгоритма, например, оценивается с использованием двух параметров O(время) и O(время × номер_процессора).

Конфликты чтения/записи

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

  1. Эксклюзивное чтение/эксклюзивная запись (EREW) — каждая ячейка памяти может быть прочитана или записана только одним процессором одновременно.
  2. Параллельное чтение и эксклюзивная запись (CREW) — несколько процессоров могут считывать ячейку памяти, но только один может записывать ее одновременно
  3. Эксклюзивное чтение с одновременной записью (ERCW) — в основном никогда не рассматривается, поскольку в большинстве случаев не добавляет мощности [2]
  4. Параллельное чтение и параллельная запись (CRCW) — несколько процессоров могут читать и писать. CRCW PRAM иногда называют параллельной машиной с произвольным доступом . [3]

Здесь E и C обозначают «исключительный» и «конкурентный» соответственно. Чтение не вызывает никаких расхождений, тогда как конкуренциональная запись далее определяется как:

Обычный — все процессоры записывают одно и то же значение; в противном случае это недопустимо
Произвольный — только одна произвольная попытка оказывается успешной, остальные снимаются
Приоритет — ранг процессора указывает, кто получает право записи
Другой вид операции сокращения массива , такой как СУММА, Логическое И или МАКС.

При рассмотрении разработки алгоритмов для PRAM делается несколько упрощающих предположений. Они следующие:

  1. Количество процессоров в машине не ограничено.
  2. Любая ячейка памяти одинаково доступна с любого процессора.
  3. Ограничений на объем разделяемой памяти в системе нет.
  4. Конфликт за ресурсы отсутствует.
  5. Программы, написанные на этих машинах, как правило, относятся к типу SIMD .

Эти типы алгоритмов полезны для понимания эксплуатации параллелизма, разделения исходной проблемы на схожие подзадачи и их параллельного решения. Введение формальной модели «P-RAM» в диссертации Уилли 1979 года [4] имело целью количественное определение анализа параллельных алгоритмов способом, аналогичным машине Тьюринга . Анализ был сосредоточен на модели MIMD программирования с использованием модели CREW, но показал, что многие варианты, включая реализацию модели CRCW и реализацию на машине SIMD, были возможны только с постоянными накладными расходами.

Выполнение

Алгоритмы PRAM не могут быть распараллелены с помощью комбинации ЦП и динамической памяти с произвольным доступом (DRAM), поскольку DRAM не допускает одновременного доступа к одному банку (даже к разным адресам в банке); но их можно реализовать аппаратно или считывать/записывать во внутренние блоки статической памяти с произвольным доступом (SRAM) программируемой пользователем вентильной матрицы (FPGA); это можно сделать с помощью алгоритма CRCW.

Однако проверка практической значимости алгоритмов PRAM (или RAM) зависит от того, обеспечивает ли их модель затрат эффективную абстракцию некоторого компьютера; структура этого компьютера может существенно отличаться от абстрактной модели. Знание слоев программного и аппаратного обеспечения, которые необходимо вставить, выходит за рамки этой статьи. Но такие статьи, как Vishkin (2011), демонстрируют, как абстракция, подобная PRAM, может поддерживаться парадигмой явной многопоточности (XMT), а такие статьи, как Caragea & Vishkin (2011), демонстрируют, что алгоритм PRAM для задачи максимального потока может обеспечить значительное ускорение по сравнению с самой быстрой последовательной программой для той же задачи. Статья Ghanim, Vishkin & Barua (2018) продемонстрировала, что алгоритмы PRAM как таковые могут достигать конкурентоспособной производительности даже без дополнительных усилий по их превращению в многопоточные программы на XMT.

Пример кода

Это пример кода SystemVerilog , который находит максимальное значение в массиве всего за 2 такта. Он сравнивает все комбинации элементов в массиве на первом такте и объединяет результат на втором такте. Он использует память CRCW; m[i] <= 1и maxNo <= data[i]записываются одновременно. Параллелизм не вызывает конфликтов, поскольку алгоритм гарантирует, что одно и то же значение записывается в одну и ту же память. Этот код можно запустить на оборудовании FPGA .

модуль FindMax #( параметр int len ​​= 8 ) ( входной бит clock , resetN , входной бит [ 7 : 0 ] данные [ len ], выходной бит [ 7 : 0 ] maxNo ); typedef enum bit [ 1 : 0 ] { COMPARE , MERGE , DONE } State ; Состояние state ; бит m [ len ]; int i , j ; always_ff @( posedge clock , negedge resetN ) begin if ( ! resetN ) begin for ( i = 0 ; i < len ; i ++ ) m [ i ] <= 0 ; state <= COMPARE ; конец else begin case ( state ) COMPARE: begin for ( i = 0 ; i < len ; i ++ ) begin for ( j = 0 ; j < len ; j ++ ) begin if ( data [ i ] < data [ j ]) m [ i ] <= 1 ; конец end state <= MERGE ; конец MERGE: begin for ( i = 0 ; i < len ; i ++ ) begin if ( m [ i ] == 0 ) maxNo <= data                                                                                                                [ i ]; конечное состояние <= DONE ; конец endcase конец конец endmodule        

Смотрите также

Ссылки

  1. ^ Fortune, Steven; Wyllie, James (1978-05-01). "Параллелизм в машинах с произвольным доступом". Труды десятого ежегодного симпозиума ACM по теории вычислений - STOC '78 . Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 114–118. doi :10.1145/800133.804339. hdl : 1813/7454 . ISBN 978-1-4503-7437-8.
  2. ^ MacKenzie, Philip D.; Ramachandran, Vijaya (1998-04-06). "ERCW PRAMs и оптическая связь". Теоретическая информатика . 196 (1): 153–180. doi :10.1016/S0304-3975(97)00199-0. ISSN  0304-3975.
  3. ^ Нил Иммерман, Выразимость и параллельная сложность . Журнал SIAM по вычислениям, т. 18, № 3, стр. 625-638, 1989.
  4. ^ Уайли, Джеймс С. Сложность параллельных вычислений, докторская диссертация, кафедра компьютерных наук, Корнелльский университет

Внешние ссылки