Добавлен: 30.06.2023
Просмотров: 106
Скачиваний: 4
СОДЕРЖАНИЕ
1.2 Архитектура симметричных мультипроцессоров UMA с общей шиной
1.3 Мультипроцессоры UMA с координатными коммутаторами
1.4 Мультипроцессоры UMA c многоступенчатые коммутаторными сетями
2 Архитектура многопроцессорных вычислительных систем
2.1 Векторно-конвейерные суперкомпьютеры
2.2 Симметричные мультипроцессорные системы
2.3 Системы с массовым параллелизмом
3. Разработка имитационной модели мультипроцессорной системы
2.3 Системы с массовым параллелизмом
Проблемы, присущие многопроцессорным системам с общей памятью простим и естественным образом устраняться в системах с массовым параллелизмом.[28] Компьютеры этого типа представляют собой многопроцессорные системы с распределенной памятью, в которых с помощью некоторой коммуникационной среды объединяются однородные вычислительные узлы (рис.7).
Рисунок 7 – Архитектура систем с распределенной памятью
Каждый из узлов состоит из одного или нескольких процессоров, собственной оперативной памяти, коммуникационного оборудования, подсистемы ввода/вывода, т.е. обладает всем необходимым для независимого функционирования. При этом на каждом узле может функционировать либо полноценная операционная система (как в системе RS/6000 SP2), либо урезанный вариант, поддерживающий только базовые функции ядра, а полноценная ОС работает на специальном управляющем компьютере (как в системах ray T3E, nCUBE2).
Процессоры в таких системах имеют прямой доступ только к своей локальной памяти. Доступ к памяти других узлов реализуется обычно с помощью механизма передачи сообщений. Такая архитектура вычислительной системы устраняет одновременно к проблему конфликтов при обращении памяти, та и проблему когерентности кэш-памяти. Это дает возможность практически неограниченного наращивания числа процессоров в системе, увеличивая тем самым ее производительность. Успешно функционируют MPP с сотням и тысячами процессоров (ASCI White – 8192, Blue Mountain – 6144). Производительность наиболее мощных систем достигает 10 триллионов оп/сек (10 Tflops).[29] Важным свойством MPP систем является их высокая степень масштабируемости. В зависимости от вычислительных потребностей для достижения необходимой производительности требуется просто собрать систему с нужным числом узлов.
На практике все, конечно, гораздо сложнее. Устранение одних проблем, как это обычно бывает, порождает другие. Для MPP систем на первый план выходит проблема эффективности коммуникационной среды. Легко сказать: “Давайте соберем систему из 1000 узлов”. Самым простым и наиболее эффективным было бы соединение каждого процессора с каждым. Но тогда на каждом узле бы 999 коммуникационных каналов, желательно двунаправленных. Очевидно, что это нереально. Различные производители MPP систем использовали разные топологии. В компьютерах Intel Paragon процессоры образовывали прямоугольную двумерную сетку. Для этого в каждом узле достаточно четырех коммуникационных каналов. В компьютерах Cray T3D/T3E использовалась топология трехмерного тора. Соответственно, в узлах этого компьютера было шесть коммуникационных каналов. Фирма nCUBE использовала в своих компьютерах топологию n-мерного гиперкуба. Подробнее на этой топологии мы остановимся в главе 4 при изучении суперкомпьютера nCUBE2. Каждая из рассмотренных топологий имеет свои преимущества и недостатки. Отметим, что при обмене данными между процессорами, не являющимися ближайшими соседями, происходит трансляция данных через промежуточные узлы. Очевидно, что в узлах должны быть предусмотрены какие-то аппаратные средства, которые освобождали бы центральный процессор от участия в трансляции данных. В последнее время для соединения вычислительных узлов чаще используется иерархическая система высокоскоростных коммутаторов как это впервые было реализовано в компьютерах IBM SP2. Такая топология дает возможность прямого обмена данными между любыми узлами, без участия в этом промежуточных узлов.[30]
Системы с распределенной памятью идеально подходят для параллельного выполнения независимых программ, поскольку при том каждая программа выполняется на своем узле и никаким образом не влияет на выполнение других программ.[31] Однако при разработке параллельных программ приходится учитывать более сложную, чем в SMP системах, организацию памяти. Оперативная память в MPP системах имеет 3-х уровневую структуру:
- кэш-память процессора;
- локальная оперативная память узла;
- оперативная память других узлов.
При этом отсутствует возможность прямого доступа к данным, расположенным в других узлах. Для их использования эти данные должны быть предварительно переданы в тот узел, который в данный момент в них нуждается. Это значительно усложняет программирование. Кроме того, обмены данными между узлами выполняются значительно медленнее, чем обработка данных в локальной оперативной памяти узлов. Поэтому написание эффективных параллельных программ для таких компьютеров представляет собой более сложную задачу, чем для SMP систем.
2.4 Кластерные системы
Кластерные технологии стали логическим продолжением развития идей, заложенных в архитектуре MPP систем. Если процессорный модуль в MPP системе представляет собой законченную вычислительную систему, то следующий шаг напрашивается сам собой: почему бы в качестве таких вычислительных узлов не использовать обычные серийно выпускаемые компьютеры. Развитие коммуникационных технологий, а именно, появление высокоскоростного сетевого оборудования и специального программного обеспечения, такого как система MPI, реализующего механизм передачи сообщений над стандартными сетевыми протоколами, сделали кластерные технологии общедоступными. Сегодня не составляет большого труда создать небольшую кластерную систему, объединив вычислительные мощности компьютеров отдельной лаборатории или учебного класса.[32]
Привлекательной чертой кластерных технологий является то, что они позволяют для достижения необходимой производительности объединять в единые вычислительные системы компьютеры самого разного типа, начиная от персональных компьютеров и заканчивая мощными суперкомпьютерами. Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно удешевляет стоимость вычислительной системы. В частности, одним из первых был реализован проект COCOA [4], в котором на базе 25 двухпроцессорных персональных компьютеров общей стоимостью порядка $100000 была создана система с производительностью, эквивалентной 48-процессорному Cray T3D стоимостью несколько миллионов долларов США.[33]
Конечно, о полной эквивалентности этих систем говорить не приходится. Как указывалось в предыдущем разделе, производительность систем с распределенной памятью очень сильно зависит от производительности коммуникационной среды. Коммуникационную среду можно достаточно полно охарактеризовать двумя параметрами: латентностью – временем задержки при посылке сообщения и пропускной способностью – скоростью передачи информации. Так вот для компьютера Cray T3D эти параметры составляют соответственно 1 мкс и 480 Мб/сек, а для кластера, в котором в качестве коммуникационной среды использована сеть Fast Ethernet, 100 мкс и 10 Мб/сек. Это отчасти объясняет очень высокую стоимость суперкомпьютеров. При таких параметрах, как у рассматриваемого кластера, найдется не так много задач, которые могут эффективно решаться на достаточно большом числе процессоров.
Если говорить кратко, то кластер – это связанный набор полноценных компьютеров, используемый в качестве единого вычислительного ресурса. Преимущества кластерной системы перед набором независимых компьютеров очевидны. Во-первых, разработано множество диспетчерских систем пакетной обработки заданий, позволяющих послать задание на обработку кластеру в целом, а не какому-то отдельному компьютеру.[34] Эти диспетчерские системы автоматически распределяют задания по свободным вычислительным узлам или буферизуют их при отсутствии таковых, что позволяет обеспечить более равномерную и эффективную загрузку компьютеров. Во-вторых, появляется возможность совместного использования вычислительных ресурсов нескольких компьютеров для решения одной задачи.
Для создания кластеров обычно используются либо простые однопроцессорные персональные компьютеры, либо двух- или четырех- процессорные SMP-серверы. При этом не накладывается никаких ограничений на состав и архитектуру узлов. Каждый из узлов может функционировать под управлением своей собственной операционной системы. Чаще всего используются стандартные ОС: Linux, FreeBSD, Solaris, Tru64 Unix, Windows NT. В тех случаях, когда узлы кластера неоднородны, то говорят о гетерогенных кластерах.[35]
При создании кластеров можно выделить два подхода. Первый подход применяется при создании небольших кластерных систем. В кластер объединяются полнофункциональные компьютеры, которые продолжают работать и как самостоятельные единицы, например, компьютеры учебного класса или рабочие станции лаборатории. Второй подход применяется в тех случаях, когда целенаправленно создается мощный вычислительный ресурс.[36] Тогда системные блоки компьютеров компактно размещаются в специальных стойках, а для управления системой и для запуска задач выделяется один или несколько полнофункциональных компьютеров, называемых хост-компьютерами. В этом случае нет необходимости снабжать компьютеры вычислительных узлов графическими картами, мониторами, дисковыми накопителями и другим периферийным оборудованием, что значительно удешевляет стоимость системы.
Разработано множество технологий соединения компьютеров в кластер. Наиболее широко в данное время используется технология Fast Ethernet. Это обусловлено простотой ее использования и низкой стоимостью коммуникационного оборудования. Однако за это приходится расплачиваться заведомо недостаточной скоростью обменов. В самом деле, это оборудование обеспечивает максимальную скорость обмена между узлами 10 Мб/сек, тогда как скорость обмена с оперативной памятью составляет 250 Мб/сек и выше. Разработчики пакета подпрограмм ScaLAPACK, предназначенного для решения задач линейной алгебры на многопроцессорных системах, в которых велика доля коммуникационных операций, формулируют следующим образом требование к многопроцессорной системе: “Скорость межпроцессорных обменов между двумя узлами, измеренная в Мб/сек, должна быть не менее 1/10 пиковой производительности вычислительного узла, измеренной в Mflops”[37]. Таким образом, если в качестве вычислительных узлов использовать компьютеры класса Pentium III 500 Мгц (пиковая производительность 500 Mflops), то аппаратура Fast Ethernet обеспечивает только 1/5 от требуемой скорости. Частично это положение может поправить переход на технологии Gigabit Ethernet.[38]
Ряд фирм предлагают специализированные кластерные решения на основе более скоростных сетей, таких как SCI фирмы Scali Computer (~100 Мб/сек) и Mirynet (~120 Мб/сек). Активно включились в поддержку кластерных технологий и фирмы-производители высокопроизводительных рабочих станций (SUN, HP, Silicon Graphics).
3. Разработка имитационной модели мультипроцессорной системы
За последнее десятилетие мультипроцессорные системы получили повсеместное распространение. На сегодняшний день многоядерными процессорами оснащаются не только суперкомпьютеры, но и подавляющее большинство мобильных устройств. Миллионы людей по всему миру стали пользователями таких систем. Поэтому сегодня, как никогда, важны открытые общедоступные материалы, способствующие лучшему пониманию принципов работы мультипроцессорных систем.
В связи с этим возникает необходимость в разработке подходов и методик, способствующих лучшему пониманию особенностей построения мультипроцессорных вычислительных систем. Одним из таких подходов является применение имитационного моделирования [39][40]. Анализ функционирования вычислительной системы посредством имитационного моделирования способствует лучшему пониманию влияния структуры и рабочей нагрузки на временные характеристики работы системы.
Приведём особенности разработки имитационной модели функционирования мультипроцессорной вычислительной системы. Под временными характеристиками функционирования системы, прежде всего, понимается её производительность. Производительность системы может оцениваться как по времени выполнения некоторой программы, так и по «индексам производительности»[41]. В качестве индексов производительности могут быть приняты временные потери, вызванные простоями в очередях к общим ресурсам либо информационными зависимостями между параллельно выполняющимися потоками вычислений[42]. Производительность может оцениваться как аналитически, так и имитационно. В ряде случаев целесообразней использовать имитационные модели для более детального определения временных характеристик работы системы.
Построение имитационной модели сводится к моделированию рабочей нагрузки и структуры вычислительной системы. Рабочая нагрузка может моделироваться в виде смеси команд (последовательности команд, характерных для конкретного приложения), стохастических моделей (случайных величин, представляющих запросы на ресурсы), эталонов (образцов использования ресурсов системы прикладным процессором), а так же трасс (множество записей о работе программ)[43]. В качестве рабочей нагрузки будем использовать характеристики разработанного программного обеспечения для решения обратной задачи кинематики в режиме реального времени[44]. Данная задача состоит в определении разворотов всех рычагов манипулятора по известному угловому положению схвата. Методы решения этой задачи разделяются на аналитические[45] и численные[46].
Алгоритм решения обратной задачи был составлен согласно аналитическому методу простых кинематических связей[47]. Разработанное программное обеспечение было проанализировано с целью составления графа, показывающего последовательность выполнения линейных и распараллеленных вычислений[48]. В его вершинах указаны количество процессорных инструкций и обращений к памяти на соответствующих стадиях работы программы.
При моделировании структуры мультипроцессорной вычислительной системы ключевым моментом является определение организации доступа к оперативной памяти. В данном случае предполагалось обращение одинаковых по производительности процессоров к разделяемой памяти через общую шину (с одинаковым временем доступа к памяти) в связи с высокой информационной связностью между параллельно выполняющимися потоками[49].