Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Модель PEM

В информатике модель с параллельной внешней памятью (PEM) - это абстрактная машина с поддержкой кеш-памяти и внешней памятью . [1] Это аналогия параллельных вычислений с моделью однопроцессорной внешней памяти (EM). Аналогичным образом, это аналогия с поддержкой кеширования с параллельной машиной с произвольным доступом (PRAM). Модель PEM состоит из нескольких процессоров вместе с их соответствующими частными кэшами и общей основной памятью.

Модель [ править ]

Определение [ править ]

Модель PEM [1] представляет собой комбинацию модели EM и модели PRAM. Модель PEM - это модель вычислений, которая состоит из процессоров и двухуровневой иерархии памяти . Эта иерархия памяти состоит из большой внешней памяти (основной памяти) определенного размера и небольших внутренних запоминающих устройств (кешей) . Процессоры совместно используют основную память. Каждый кеш является эксклюзивным для одного процессора. Процессор не может получить доступ к чужому кешу. Кеши имеют размер, который разделен на блоки . Процессоры могут выполнять операции только с данными, которые находятся в их кэше. Данные могут передаваться между основной памятью и кешем в блоках размера .

Сложность ввода / вывода [ править ]

Мера сложности модели PEM является сложность ввода / вывода, [1] , который определяет количество параллельных блоков переводов между основной памятью и кэш - памяти. Во время параллельной передачи блоков каждый процессор может передавать блок. Таким образом, если процессоры загружают в свои кеши параллельно блок данных размером с основную память, это считается сложностью ввода-вывода, а не нет . Программа в модели PEM должна минимизировать передачу данных между основной памятью и кешами и работать с данными в кэшах в максимально возможной степени.

Конфликты чтения / записи [ править ]

В модели PEM нет прямой сети связи между процессорами P. Процессоры должны косвенно обмениваться данными через основную память. Если несколько процессоров пытаются получить доступ к одному и тому же блоку в основной памяти одновременно, возникают конфликты чтения / записи [1] . Как и в модели PRAM, рассматриваются три различных варианта этой задачи:

  • Concurrent Read Concurrent Write (CRCW): один и тот же блок в основной памяти может быть прочитан и записан несколькими процессорами одновременно.
  • Параллельное чтение и монопольная запись (CREW): один и тот же блок в основной памяти может быть прочитан несколькими процессорами одновременно. Только один процессор может записывать в блок за раз.
  • Эксклюзивное чтение Эксклюзивная запись (EREW): один и тот же блок в основной памяти не может быть прочитан или записан несколькими процессорами одновременно. Только один процессор может получить доступ к блоку одновременно.

Следующие два алгоритма [1] решают проблему CREW и EREW, если процессоры одновременно записывают в один и тот же блок. Первый подход - сериализовать операции записи. Только один процессор за другим записывает в блок. Это приводит к параллельным передачам блоков. Второй подход требует параллельной передачи блоков и дополнительного блока для каждого процессора. Основная идея состоит в том, чтобы запланировать операции записи в виде двоичного дерева и постепенно объединить данные в один блок. В первом раунде процессоры объединяют свои блоки в блоки. Затем процессоры объединяют блоки в . Эта процедура продолжается до тех пор, пока все данные не будут объединены в один блок.

Сравнение с другими моделями [ править ]

Примеры [ править ]

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

Позвольте быть вектором d-1 опорных точек, отсортированных в порядке возрастания. Позвольте быть неупорядоченным набором из N элементов. Двустороннее разбиение [1] из - это множество , где и для . называется i-м ведром. Количество элементов в больше и меньше чем . В следующем алгоритме [1] входные данные разделяются на непрерывные сегменты размером N / P в основной памяти. Процессор i в первую очередь работает на сегменте . Алгоритм многостороннего разделения ( [1] ) использует алгоритм суммы префиксов PEM [1] для вычисления суммы префиксов с оптимальнымPEM_DIST_SORTСложность ввода / вывода. Этот алгоритм моделирует оптимальный алгоритм суммы префиксов PRAM.

// Параллельно вычислить d-разделение сегментов данных для каждого процессора i параллельно do Считать вектор опорных точек в кэш. Разделите на d сегментов и пусть вектор будет количеством элементов в каждой корзине.конец дляВыполните суммирование префикса PEM одновременно для набора векторов .// Используем вектор суммы префикса для вычисления последнего разделадля каждого процессора i параллельно выполните запись элементов в ячейки памяти, смещенные соответствующим образом на и .конец дляИспользуя префиксные суммы, хранящиеся в последнем процессоре P, вычисляет вектор размеров корзины и возвращает его.

Если вектор опорных точек M и входной набор A расположены в непрерывной памяти, то проблема d-образного разбиения может быть решена в модели PEM со сложностью ввода-вывода. Содержимое последних сегментов должно располагаться в непрерывной памяти.

Выбор [ править ]

Проблема выбора заключается в нахождении k-го наименьшего элемента в неупорядоченном списке размеров . В следующем коде [1] используется алгоритм оптимальной сортировки PRAM, который выполняется , и алгоритм выбора оптимального однопроцессорного кэша.PRAMSORTSELECT

если  тогда верните конец если     // Найти медиану каждого для каждого процессора в параллельном сделай конце для   // Сортировать медианы// Разделение вокруг медианы медианесли  тогда вернуть еще вернуться конец если     

В предположении, что ввод хранится в непрерывной памяти, PEMSELECTимеет сложность ввода-вывода:


Сортировка распределения [ править ]

Сортировка распределения разделяет входной список размера на непересекающиеся сегменты одинакового размера. Затем каждая корзина рекурсивно сортируется, а результаты объединяются в полностью отсортированный список.

Если задача делегирована оптимальному для кеша однопроцессорному алгоритму сортировки.

В противном случае используется следующий алгоритм [1] :

// Примеры элементов из для каждого процессора параллельно делать , если затем загрузите в -sized страниц и сортировки страниц по отдельности еще загружать и сортировать в качестве одной страницы конца , если Заберите каждый «й элемент из каждой отсортированной страницы памяти в прилежащей вектор из образцов енд для        параллельно do Объединить векторы в один непрерывный вектор Сделать копии : end do// Найти шарниры для , чтобы параллельно сделайте конец для   Упаковать сводные точки в непрерывный массив // Разбиение точек на сегменты// Рекурсивно сортировать сегментыдля , чтобы параллельно выполнять рекурсивный вызов на ведре размера с использованием процессоров , отвечающие за элементы в ведре конца для 

Сложность ввода-вывода PEMDISTSORT:

где

Если количество процессоров выбрано так, а сложность ввода-вывода составит:

Другие алгоритмы PEM [ править ]

Где время, необходимое для сортировки элементов с помощью процессоров в модели PEM.

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

  • Параллельная машина с произвольным доступом (PRAM)
  • Машина с произвольным доступом (RAM)
  • Внешняя память (EM)

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

  1. ^ Б с д е е г ч я J K L Арге, Ларс; Гудрич, Майкл Т .; Нельсон, Майкл; Ситчинава, Нодари (2008). «Фундаментальные параллельные алгоритмы для мультипроцессоров с частным кэшированием». Материалы двадцатого ежегодного симпозиума по параллелизму в алгоритмах и архитектурах - SPAA '08 . Нью-Йорк, Нью-Йорк, США: ACM Press: 197. doi : 10.1145 / 1378533.1378573 . ISBN 9781595939739.
  2. ^ а б в г Ардж, Ларс; Гудрич, Майкл Т .; Ситчинава, Нодари (2010). «Параллельные алгоритмы графа внешней памяти». 2010 Международный симпозиум IEEE по параллельной и распределенной обработке (IPDPS) . IEEE: 1–11. DOI : 10.1109 / ipdps.2010.5470440 . ISBN 9781424464425.