Jump to content

ШЕМ

SHMEM (из библиотеки «общей памяти» Cray Research). [1] ) — это семейство библиотек параллельного программирования, предоставляющее односторонние интерфейсы параллельной обработки RDMA для суперкомпьютеров с распределенной памятью с малой задержкой. Аббревиатура SHMEM впоследствии была преобразована в «Симметричную Иерархическую ПАМЯТЬ». [2] Позже он был расширен до параллельных компьютерных кластеров с распределенной памятью и используется в качестве интерфейса параллельного программирования или низкоуровневого интерфейса для создания разделенного глобального адресного пространства (PGAS). систем и языков [3] «Libsma», первая библиотека SHMEM, была создана Ричардом Смитом из Cray Research в 1993 году как набор тонких интерфейсов для доступа к оборудованию межпроцессорной связи CRAY T3D. SHMEM был реализован Cray Research, SGI, Cray Inc., Quadrics, HP, GSHMEM, IBM, QLogic, Mellanox, университетами Хьюстона и Флориды; существует также OpenSHMEM с открытым исходным кодом. [4]

SHMEM заложил основы односторонней связи с малой задержкой (субмикросекунды). [5] После использования на CRAY T3E, [6] его популярность пошла на убыль, поскольку лишь немногие машины могли обеспечить задержку, близкую к микросекунде, необходимую для поддержания эффективности его отличительной черты передачи отдельных слов. С появлением популярных субмикросекундных межсоединений SHMEM стал использоваться для решения проблемы необходимости в сверхэффективных, портативных методах параллельной связи для экзафлопсных вычислений. [7]

Программы, написанные с использованием SHMEM, можно запускать на нескольких компьютерах, соединенных между собой какой-либо высокопроизводительной сетью, поддерживаемой используемой библиотекой SHMEM. На каждом компьютере работает копия программы ( SPMD ); каждая копия называется PE (процессорный элемент). PE могут попросить библиотеку SHMEM выполнить операции удаленного доступа к памяти, такие как чтение (операция «shmem_get») или запись (операция «shmem_put») данных. Одноранговые операции являются односторонними, что означает, что для завершения действия не требуется активное сотрудничество со стороны удаленного потока (но он может опросить свою локальную память на наличие изменений, используя «shmem_wait»). Операции могут выполняться с короткими типами, такими как байты или слова, или с более длинными типами данных, такими как массивы, иногда равномерно распределенными или индексированными (отправляются только некоторые элементы массива). Для коротких типов данных SHMEM может выполнять атомарные операции ( CAS , выборка и добавление, атомарное приращение и т. д.) даже в удаленной памяти. Также существует два разных метода синхронизации: [4] синхронизация управления задачами (барьеры и блокировки) и функции для обеспечения ограждения и упорядочивания памяти. В SHMEM есть несколько коллективных операций, которые должны быть запущены всеми PE, например сокращение, трансляция, сбор.

У каждого PE часть памяти объявлена ​​как «симметричный» сегмент (или область общей памяти), а другая часть памяти является частной. Доступ к «общей» памяти возможен только в одностороннем режиме с удаленных PE. Программисты могут использовать конструкции статической памяти или процедуры shmalloc/shfree для создания объектов с симметричным адресом, охватывающих PE.

Типичные функции SHMEM

[ редактировать ]
  • start_pes(N) — запустить N обрабатывающих элементов (PE)
  • _my_pe() — попросить SHMEM вернуть идентификатор PE текущего потока
  • shmem_barrier_all() — дождаться, пока все PE доберутся до барьера; затем дайте им возможность пойти дальше
  • shmem_put(target, source, length, pe) — запись данных длиной «length» на удаленный адрес «target» на PE с идентификатором «pe» с локального адреса «source»
  • shmem_get(target, source, length, pe) — прочитать данные длиной «length» с удаленного адреса «source» на PE с идентификатором «pe» и сохранить для чтения значений в локальный адрес «target» [8]

Список реализаций SHMEM

[ редактировать ]
  • Cray Research: Оригинальный SHMEM для суперкомпьютеров Cray T3D , Cray T3E и Cray Research PVP. [9]
  • SGI: SGI-SHMEM для систем с NUMAlink и Altix, построенных с сетевыми адаптерами InfiniBand.
  • Cray Inc.: MP-SHMEM для Unicos MP (суперкомпьютер X1E)
  • Cray Inc.: LC-SHMEM для Unicos LC (Cray XT3, XT4, XT5)
  • Квадрика: Q-SHMEM [10] для кластеров Linux с межсетевым соединением QsNet [9]
  • Циклоп-64 ШМЕМ
  • HP ШМЕМ [9]
  • IBM ШМЕМ [9]
  • GPSHMEM [9]

Реализации OpenSHMEM

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

OpenSHMEM — это стандартная разработка SGI и Open Source Software Solutions, Inc.

  • Хьюстонский университет: Справочник OpenSHMEM [4] [9]
  • Mellanox МасштабируемыйSHMEM [9]
  • Portals-SHMEM (поверх интерфейса порталов )
  • Университет Флориды: Gator SHMEM [9]
  • Open MPI включает реализацию OpenSHMEM. [11]
  • Сопроцессор Адаптева Епифания [12]
  • Sandia OpenSHMEM (SOS) поддерживает несколько сетевых API. [13]

Недостатки

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

В первые годы SHMEM был доступен только на некоторых машинах Cray Research (позже дополнительно на SGI). [1] оснащены специальными сетями, что ограничивает широкое распространение библиотек и привязано к поставщику (например, Cray Research рекомендовала частично переписать программы MPI, чтобы объединить вызовы MPI и shmem, что делает программу непереносимой в другую среду с чистым MPI).

SHMEM не был определен как стандарт, [9] [1] поэтому другими поставщиками было создано несколько несовместимых вариантов библиотек SHMEM. Библиотеки имели разные имена файлов, разные имена функций управления для запуска PE или получения текущего идентификатора PE, [9] и некоторые функции были изменены или не поддерживаются.

Некоторые процедуры SHMEM были разработаны в соответствии с ограничениями архитектуры Cray T3D, например, сокращение и широковещательная передача могли быть запущены только на подмножествах PE, размер которых равен степени двойки . [2] [9]

Варианты библиотек SHMEM могут работать поверх любой библиотеки MPI, даже если в кластере имеется только Ethernet, не оптимизированный для RDMA , однако производительность обычно будет хуже, чем у других расширенных сетевых протоколов.

Память в общей области следует выделять с помощью специальных функций ( шмаллок / shfree ), а не в системе маллок . [9]

SHMEM доступен только для C и Fortran (некоторые версии также для C++). [9]

Многие недостатки SHMEM были преодолены за счет использования OpenSHMEM в популярных субмикросекундных соединениях, что стало возможным благодаря экзафлосной разработке. [7]

См. также

[ редактировать ]
  1. ^ Jump up to: а б с ШМЕМ // Крей, документ 004-2178-002, глава 3
  2. ^ Jump up to: а б Введение в параллельные вычисления. 3.11. Сопутствующая работа // курс cse590o, Вашингтонский университет, зима 2002 г.; стр. 154
  3. ^ «Новые ускорения параллельного программирования» (PDF) . Мелланокс. 2012 . Проверено 18 января 2014 г. SHMEM используется/предлагается в качестве интерфейса нижнего уровня для реализаций PGAS.
  4. ^ Jump up to: а б с Пул, Стивен (2011). «OpenSHMEM - На пути к единой модели RMA». Энциклопедия параллельных вычислений . стр. 1379–1391. дои : 10.1007/978-0-387-09766-4_490 . ISBN  978-0-387-09765-7 .
  5. ^ Инструменты для сравнительного анализа, отслеживания и моделирования приложений SHMEM // CUG 2012, статья Суперкомпьютерного центра Сан-Диего и ORNL.
  6. ^ Последние достижения в области параллельных виртуальных машин и передачи сообщений ..., том 11, стр. 59: «Одностороннее общение как парадигма программирования изначально стало популярным благодаря библиотеке SHMEM на Cray T3D и T3E ...»
  7. ^ Jump up to: а б «ОпенШМЭМ 2015» . www.csm.ornl.gov . Проверено 10 апреля 2017 г.
  8. ^ man shmem_get (SGI TPL)
  9. ^ Jump up to: а б с д и ж г час я дж к л м Учебное пособие по OpenSHMEM // Университет Хьюстона, Техас, 2012 г.
  10. ^ Руководство по программированию Шмем // Квадрикс, 2000-2001 гг.
  11. ^ OpenMPI
  12. ^ Джеймс Росс и Дэвид Ричи. Реализация OpenSHMEM для сопроцессора Adapteva Epiphany. В материалах третьего семинара по OpenSHMEM и родственным технологиям, «ОпенШМЭМ 2016» . www.csm.ornl.gov . . Спрингер, 2016.
  13. ^ Сандия OpenSHMEM (SOS) на Github

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
  • Использование SHMEM на CRAY T3E
  • man intro_shmem (SGI TPL) — Введение в модель программирования SHMEM.
  • OpenSHMEM : попытка создать спецификацию стандартизированного API для параллельного программирования в разделенном глобальном адресном пространстве.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: da15782c2b9cc3eb9b7ebc236b0eeff1__1716562920
URL1:https://arc.ask3.ru/arc/aa/da/f1/da15782c2b9cc3eb9b7ebc236b0eeff1.html
Заголовок, (Title) документа по адресу, URL1:
SHMEM - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)