Вперед: 1.4. Краткий иллюстративный обзор средств программирования параллельных вычислений
Назад: 1.3.2. Системы с общей памятью
К содержанию: Оглавление


1.3.3. Системы с распределенной памятью

Системы с распределенной памятью изначально конструировались как системы, призванные преодолеть ограничения свойственные системам с общей памятью. Было предложено строить многопроцессорные вычислительные системы как набор независимых вычислительных узлов, состоящих из процессора, локальной оперативной памяти, и коммуникационного оборудования для взаимодействия узлов. Такая архитектура вычислительной системы снимала проблемы, связанные с пропускной способность шины памяти и с необходимостью поддержки когерентности кэш-памяти всех процессоров. Это значительно расширило возможности по наращиванию числа процессоров в вычислительной системе, которое ограничивалось теперь только возможностями коммуникационного оборудования.

На самом деле устранение одних проблем, как это часто бывает, порождает другие. Для MPP систем на первый план выходит проблема эффективности коммуникационной среды. Когда говорят: <Давайте соберем систему из 1000 узлов>, то сразу возникает вопрос - каким образом соединить в единое целое такое множество узлов. Самое простое и эффективное решение состояло бы в соединении каждого узла с каждым. Но тогда на каждом узле потребовалось бы 999 двунаправленных каналов. Очевидно, что это не реально. Разные производители использовали различные топологии. В компьютерах Intel Paragon процессоры образовывали двумерную прямоугольную сетку. Для этого на каждом узле достаточно четырех коммуникационных каналов. В компьютерах Cray T3D/T3E использовалась топология трехмерного тора. Для организации такой топологии на узлах должно быть шесть коммуникационных каналов. При таких топологиях, если требовалась передача данных между узлами, не являющимися непосредственными соседями, то необходима была трансляция сообщения через промежуточные узлы. Для больших вычислительных систем число промежуточных трансляций становилось недопустимо большим, поскольку это неизбежно приводило к снижению производительности коммуникационной среды . В компьютерах nCUBE для сокращения промежуточных трансляций использовалась топология n-мерного куба (с максимальной технически реализованной размерностью n равной 13). Каждый узел снабжался 13 коммуникационными каналами, что позволяло создавать вычислительные системы, содержащие до 8192 процессоров. При этом максимальное число трансляций составляло всего 13.

В настоящее время функционируют вычислительные системы с распределенной памятью, состоящие из нескольких сотен тысяч процессоров (IBM Blue Gene/L). При построении таких систем используются высокоскоростные коммутаторы, соединяемые в топологию <толстого дерева> - .

Первоначально, системы с распределенной памятью появились как дорогие специализированные вычислительные системы. Однако, с появлением недорого высокоскоростного коммуникационного оборудования, вычислительные системы с распределенной памятью стали создавать на базе стандартных системных блоков. Это значительно снизило стоимость многопроцессорных вычислительных систем и сделало их общедоступными. Такие вычислительные системы получили название вычислительных кластеров. Не составляет большого труда создать вычислительный кластер из компьютеров учебного класса или лаборатории. Законченные, хорошо сбалансированные решения предлагаются сегодня практически всеми фирмами - производителями компьютерного оборудования.

Отсутствие общей памяти улучшило масштабируемость вычислительных систем, но значительно усложнило взаимодействие между процессорами и, соответственно, программирование для них. Как правило, на каждом узле функционирует своя копия операционной системы, в которой запускается отдельная копия параллельной программы. Взаимосвязь между узлами осуществляется с помощью механизма передачи сообщений. Этот механизм реализуется в виде прикладных библиотек, которые должны подключаться к параллельной программе. Каждый производитель многопроцессорных систем с распределенной памятью поставлял такие библиотеки в составе системного программного обеспечения своих компьютеров. Например, среда параллельного программирования (PSE) многопроцессорной системы nCUBE2 включала в себя 5 встроенных функций и небольшую вспомогательную библиотеку. В настоящее время в качестве стандарта коммуникационной библиотеки принята платформенно-независимая библиотека MPI. Эта библиотека предоставляет широкий набор средств для создания параллельных программ, однако программирование на уровне вызовов коммуникационных библиотечных функций остается довольно трудоемким. Предпринимаются попытки создания средств для автоматического и полуавтоматического распараллеливания программ. Одним из наиболее законченных решений такого рода является язык HPF (High Performance Fortran). Имеются как коммерческие версии компиляторов (PGHPF - Portland Group Inc., xlhpf - IBM, Absoft Pro Fortran - Absoft Corporation), так и открытые продукты (Adaptor - GMD-SCAI, DVM - ИПМ им Келдыша РАН). .Применение упомянутых средств будет проиллюстрировано ниже.



Вперед: 1.4. Краткий иллюстративный обзор средств программирования параллельных вычислений
Назад: 1.3.2. Системы с общей памятью
К содержанию: Оглавление