Параллельная Обработка Данных, 06 лекция (от 09 октября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Содержание

Компьютеры с распределенной памятью

Составляются из блоков, каждый блок является самостоятельным компьютером со своей памятью, возможен доступ к чужой локальной памятью. Недостаток -- неоднородность доступа к памяти.

Их использование сложнее, хотя соотношение цена/производительность у них выше. К тому же, такая архитектура позволяет объединять в один компьютер практически неограниченное количество процессоров (сейчас уже есть объединения сотен тысяч процессоров). Тем не менее усложняется программирование для них. Было несколько поколений компьютеров с распределенной памятью.

Intel Paragon. На i860. Сейчас Intel переориентировался на кластеры, о них мы тоже поговорим. IBM SP(1/2) CRAY T3D/T3E/XT3/XT4 Сегодня подробней рассмотрим CRAY T3E.

CRAY T3E

Это массивно-параллельные компьютеры(фактически другое название компьютеров с распределнной памятью). Все компьютеры такого класса состоят из двух основных частей

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

конфигурации:24-16-256, 7-5-260

    • процессорный элемент содержит один процессор(Дек Альфа)(в ранних версиях было по два процессорных элемента), локальную память и некоторые вспомогательные подсистемы. Последние версии AMD Opteron(XT3(одноядерные),XT4(двухядерные), обещают четырехядерные). Сетевой интерфейс, связанный с сетевыми маршрутизаторами. Все вместе логические узлы объединяются в структуру трехмерного тора. Это приводит к тому, что, в отличие от топологии параллелепипеда, у нас получается однородная система. У каждого узла ровно 6 соседей. В торе среднее расстояние уменьшается примерно в два раза. Итак тор позволяет объединить в достаточно компактную структуру большое число процессоров.

Маршрутизация

Пусть надо передать сообщение из узла (х1,у1,з1) узлу (х2,у2,з2). Сообщение идет сначало вдоль оси х до точки, когда координаты по оси х выравняются. То есть до (х2, у1,з1), потом до (х2, у2,з1) и потом до (х2,у2,з2). Это приводит к тому, что мы заранее знаем, как сообщение пойдет по сети, что упрощает работу маршрутизаторам. Наличие обратных связей позволяет сохранить функциональность системы при разрыве одной связи. Скорость передачи данных -- 480 мб/сек. Латентность составляла менее 1 микросекунды. Почти рекордная характеристика для своего времени. Это скорость передачи по одному каналу. Процессор мог работать параллельно с передачей сообщений(это называется асинхронность). Все каналы связи двунаправленные. Еще одно интересное св-во реализованное в этом компьютере. Когда много проц работают над одной задачей важно синхронизировать их работу. Один из распр способов синхронизации -- это барьерная синхронизация. Это означает точку в программе до которой должны дойти все процессоры. Если один дошел а остальные нет, то он стоит и ждет. Эта возможность была реализована аппаратно. В каждом из проц элементов выделяются регистры, отвечающие за эту синхронизацию. Эти регистры интерпретируются побитово. Каждый бит отвечает за свою схему синхронизацию. выходы регистров(например первый бит из всех) подаются на схему логического попарно. У того, который дошел до барьера в бите 1, кто не дошел 0. Когда все дошли до барьера на выходе схемы оказывается единичка. Для этого эта единичка подается на схему дублирования. Обратное двоичное дерево, в узлах дублирование. И записывается в другой бит. Процессор смотрит на бит и узнает, когда все дошли до барьера и он может идти считать дальше. Синхронизация происходит очень быстро. Другой режим использования этой схемы -- вместо и используем или. Получаем другую функциональность. Она соответствует некоторому поиску -- дошел ли хоть один процессор до барьера. Соответствует тому когда все процессоры что то ищут. Один нашел и тут же сообщает другим. Это называется схема "Эврика". Она уже не для синхронизации. На этом закончим с характеристиками этого конкретного компьютера.

В принципе компьютеры с распределенной памятью могут строится разными способами. Перейдем к рассмотрению кластерных систем (они сейчас наиболее распространены). Они так же являются системами с распределенной памятью.

Кластеры

В науке слово кластер перегружено. Даже в программировании оно используется в разных смыслах. Мы будем говорить о вычислительных кластерах. В чем отличие кластеров от массивно параллельных? В первую очередь проводят различие по тому какие сетевые технологии используются. Для массивно-параллельных компьютеров используются специально разработанные коммуникационные среды. Кластеры строят на основе свободно распространяемых коммуникационных сред. Здесь тоже есть свои особенности, но раздел обычно производят именно здесь. Решения с кластерами намного более дешевые. В тоже время современные сетевые техн позволяют объединять для работы над одной задачей большое число процессоров, наращивать мощность кластера можно практически бесконечно, другое дело, что сделать так, чтобы все узлы работали над одной задачей -- сложная задача. В качестве узлов кластера могут фигурировать и обычные компьютеры и, к примеру, векторные. Возникают интересные задачи -- когда объединяются в кластерные компьютеры с разной архитектурой. Если посмотреть топ 50 СНГ, то в нем в последней редакции все 50 систем -- кластерные. Причины конечно прежде всего в дешевизне. Ну и в мире есть такая тенденция, число кластеров постоянно растет. ИБМ перешла последнее время на кластерные системы, да и другие фирмы. Общая схема кластера достаточно простая.

Некоторое количество вычислительных узлов, соединенных какой-то коммуникационной средой. Обычно для кластеров создается отдельный файл-сервер, хотя это и не является обязательным требованием. Обычно так же выделяется отдельный хост компьютер, на который заходит пользователь, компилирует, который раздает задачи. Или к хосту пользователи могут подключаться к интернет. Сложность состоит в том, чтобы заставить все узлы работать над одной задачей. Чаще всего на кластерах используется MPI. Примеров кластерных систем очень много, мы не будем ими заниматься. Есть две основных характеристики - вычислительные узлы могут быть практически любыми, а второе - коммуникационные среды имеют две характеристики - латентность -- время начальной задержки при посылке сообщения. То есть после выполнения SEND сообщение должно пройти через все уровни протоколов. Латентность - время от встречания SEND до отсылки сообщение от процессора. НО это очень сложно измерить, ее только иногда сообщают производители. Обычно под латентностью понимают другое -- время, которое затрачивается на посылку сообщения минимальной длины туда сюда между двумя процессорами деленное пополам. -пропускная способность. Сколько данных за единицу времени можно переслать, используя эту коммуникационную технологию. М/Г/Б/сек

Время на пересылку т = т0 + (н/в) н - кол-во байт, в - пропускная способность, т0 - латентность. Если в программе много мелких сообщений, то больше становится время латентности. В этом случае больше подходят коммуникационные среды с меньшей латентностью, даже если у них меньше скорость. Соотвественно, если сообщения большие, то выгодней большая латентность и большая скорость.

Личные инструменты
Разделы