Э. Таненбаум - Архитектура компьютера (1127755), страница 176
Текст из файла (страница 176)
В конце концов, чем больше оборудования, тем выше производительность (когда оборудование работает). Более подробные сведения о Сопя!е ищите в (20, 76]. Коммуникационное программное обеспечение для мультикомпыотеров Для программирования мультикомпьютера требуется специальное программное обеспечение (обычно это библиотеки), позволяющее обеспечить взаимодействие между процессами и синхронизацию. Отметим, что в большинстве случаев программные пакеты предназначаются и для МРР-машин, и для кластеров, поэтому приложения являются переносимыми между платформами.
В системах передачи сообщений два и более процесса работают независимо друг от друга. Например, один из процессов может генерировать данные, а другой (или другие) — их потреблять. Если у отправителя есть еще данные, нет никакой гарантии, что получатель (получатели) готов принять эти данные, поскольку каждый процесс работает по собственной программе. В большинстве систем передачи сообщений используются два примитива зепо и гесе1 че, но возможны и другие варианты семантики. Тремя основными вариантами являются; + синхронная передача сообщений; + буферизуемая передача сообщений; + неблокирующая передача сообщений.
Если при синхронной передаче сообщений отправитель выполняет операцию зеп6, а получатель еще не выполнил операцию гесечче, отправитель блокируется (приостанавливается) до тех пор, пока получатель не выполнит операцию гесе! че, а в это время сообщение копируется.
Когда управление возвращается отправителю, он уже знает, что отправленное сообщение получено. Этот метод имеет простую семантику и не требует буферизации. Но у него есть серьезный недостаток: отправитель блокируется до тех пор, пока получатель не примет сообщение и подтвердит его прием. В случае буферизуемой передачи сообщений отправленное сообщение временно где-либо сохраняется (например в почтовом ящике), пока получатель не будет готов его оттуда забрать. При таком подходе отправитель может продолжать работу и после выполнения операции зепф даже если получатель в этот момент 688 Глава 8. Параллельные компьютерные архитектуры занят. Поскольку сообщение уже отправлено, отправитель может сразу же снова использовать буфер сообщений. Такая схема сокращает время запаздывания.
Однако никаких гарантий получения сообщения нет. Даже при надежной коммуникационной системе всегда есть вероятность, что из-за сбоя получатель не смог получить сообщение. При неблокирующей передаче сообщений отправитель, сделав вызов, может сразу продолжать работу. Единственная задача библиотеки — сообщить операционной системе, чтобы та обработала вызов, когда у нее появится время. В результате отправитель вообще не блокируется. Недостаток этого метода состоит в том, что когда отправитель продолжает работу после выполнения операции зепб, он не может снова использовать буфер сообщений, так как есть вероятность, что сообщение еще не отправлено.
Отправитель каким-то образом долэкен определять, что он может снова использовать буфер. Например, можно опрашивать систему. Другой вариант — при освобождении буфера выполнять системное прерывание. Однако оба варианта требуют сложного программного обеспечения. Далее мы рассмотрим популярную систему передачи сообщений, которая применяется во многих мультикомпьютерах. Интерфейс передачи сообщений Еще несколько лет назад пакет РУМ (Рага!!е! 'чг!ГГпа! МасЬ!пе — параллельная виртуальная машина) считался самым популярным пакетом для обмена информацией между мультикомпьютерами [74]. Однако в настоящее время он почти повсеместно вытеснен пакетом МР1 (Меззайе-Разе!пй 1птег!асе — интерфейс передачи сообщений).
Пакет МР1 гораздо сложнее, чем РчгМ; он поддерживает намного больше библиотечных вызовов и намного болыпе параметров для каждого вызова. Первая версия МР1, которая сейчас называется МР!-1, в 1997 году была дополнена второй версией, МР!-2. Далее мы кратко расскажем о МР1-1, а затем посмотрим, что нового появилось в МР1-2. Более подробную информацию об МР1 см. в [81, 190[. Пакет МР1-1, в отличии от РчтМ, никак не связан с созданием процессов и управлением процессами.
Создавать процессы должен сам пользователь путем локальных системных вызовов. После создания процессы организуются в группы, которые уже не изменяются. Именно с этими группами работает МР1. В основе МР1 лежат четыре концепции; коммуникаторы, типы передаваемых данных, коммуникационные операции и виртуальные топологии. Коммуникатор — это группа процессов плюс контекст. Контекстом называют метку, которая идентифицирует что-либо (например, фазу выполнения).
В процессе отправки и получения сообщений контекст может использоваться для того, чтобы не перепутать сообщения, не имеющие отношения друг к другу. Типы передаваемых в сообщениях данных могут быть разными, в том числе символами, короткими, обычными и длинными целыми, числами с плавающей точкой обычной и двойной точности, и т. д. Кроме того, из существующих типов данных можно строить новые. МР1 поддерживает множество коммуникационных операций. Вот как выглядит операция для отправки сообщений: ПР! 5епб(буфер, число эленентоа, тип ланнни, получатели, тег, ноннунинатор! влультикомпьютеры 669 В этом вызове получателю передается содержимое буфера, в котором находятся элементы типа тип даяньтх в количестве число элементов.
Поле тега— это метка сообщения; получатель имеет возможность получать только те сообщения, в которых имеется данный тег. Последнее поле (коммуникатор) показывает, к какой группе процессов относится получатель (получатель — это просто индекс в списке процессов из определенной группы). Аналогичный вызов для получения сообщения выглядит так: НР1 яесчтабу$ер, число эленентов, тип панныл, отправители, тет, коннуникатор, «статус) Этот вызов говорит о том, что получатель ждет от отправителя сообщение типа тип данных с заданным тегоат.
МР1 поддерживает четыре базовых коммуникационных режима. Первый режим — синхронный. В нем отправитель не может начать передачу данных, пока получатель не сделает вызов ИР1 кесч. Второй режим — буферизация. В этом режиме ограничение первого режима не действует. Третий режим — стандартный.
Он зависит от конкретной реализации, то есть может быть реализован либо синхронный режим, либо режим буферизации. Четвертый режим — готовность. Здесь, как и в синхронном режиме, отправитель требует, чтобы получатель был доступен, но без проверки. Каждый из этих примитивов имеет блокирующую и неблокирующую версии, что в сумме дает 8 примитивов. Получение может быть только в двух вариантах: блокирующим и неблокирующим. МР1 поддерживает разнообразные формы коллективного взаимодействия.
В любой форме такого взаимодействия все процессы в группе должны делать вызов с совместимыми параметрами. В противном случае возникает ошибка. Например, в типичной форме коллективного взаимодействия процессы могут быть организованы в виде древовидной структуры, в которой данные передаются от листьев к корню, подвергаясь на каждом шаге определенной обработке (это может быть сложение значений или поиск максимума). Четвертая базовая концепция МР1 — виртуальная топология процессов (дерево, кольцо, решетка, тор и т.
д.). Такая организация процессов обеспечивает возможность именования коммуникационных маршрутов и упрощает взаимодействие. В МР1-2 была добавлена поддержка динамических процессов, удаленного доступа к памяти, неблокирующего коллективного взаимодействия, масштабируемого ввода-вывода, обработки в режиме реального времени и многого другого. В научном сообществе годами шла «война» между сторонниками МР1 и РчтМ.
Сторонники РОМ утверждали, что эту систему проще изучать и легче использовать. Почитатели МР1 в ответ говорили, что МР1 поддерживает больше функций и, кроме того, эта система стандартизована, что подтверхсдается официальным документом. Соглашаясь с этим, защитники Р чтМ возражали, что отсутствие всех бумаг, связанных с бюрократическим процессом стандартизации, — еще не повод отказываться от системьь В конечном итоге, когда все было сказано и сделано, победа досталась МР1. Планирование Программистам систем МР1 несложно разрабатывать задания, в которых запросы делаются сразу к нескольким процессорам и которые выполняются достаточно 690 Глава 8. Параллельные компьютерные архитектуры долго.