Кластерные вычисления
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ИНТУИТ
Автор:
Сердюк Ю. П.
Год издания: 2016
Кол-во страниц: 144
Дополнительно
Основной акцент в учебном курсе делается на изучение основ параллельного программирования с использованием программного интерфейса MPI, а также высокоуровневого языка параллельного распределенного программирования MC# (<a href="http://www.mcsharp.net”
target="_blank”>www.mcsharp.net</a>), на базе технологий и продуктов Microsoft.
В частности, для изучения программирования и отладки приложений на основе MPI, предполагается использование Windows Compute Cluster Server 2003 и Visual Studio 2005. Высокоуровневый язык параллельного программирования MC#, разработанный в Институте программных систем РАН, г.Переславль-Залесский, является расширением языка C# для платформы .NET и имеет реализацию для ОС Windows. Этот язык ориентирован на создание программных приложений промышленного уровня, предназначенных для исполнения на кластерных вычислительных системах. Будучи современным высокоуровневым языком, он также дает возможность успешно изучать и осваивать
параллельное программирование студентам вузов, начиная уже со 2-го курса. Часть данного учебного курса посвящена также общим сведениям об архитектуре современных кластеров и используемых в них высокоскоростных интерконнектов таких, как Gigabit Ethernet, Infiniband, Myrinet и др.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Кластерные вычисления 2-е издание, исправленное Сердюк Ю.П. Национальный Открытый Университет “ИНТУИТ” 2016 2
Кластерные вычисления/ Ю.П. Сердюк - М.: Национальный Открытый Университет “ИНТУИТ”, 2016 Основной акцент в учебном курсе делается на изучение основ параллельного программирования с использованием программного интерфейса MPI, а также высокоуровневого языка параллельного распределенного программирования MC# (<a href=“http://www.mcsharp.net” target=“_blank”>www.mcsharp.net</a>), на базе технологий и продуктов Microsoft. В частности, для изучения программирования и отладки приложений на основе MPI, предполагается использование Windows Compute Cluster Server 2003 и Visual Studio 2005. Высокоуровневый язык параллельного программирования MC#, разработанный в Институте программных систем РАН, г.Переславль-Залесский, является расширением языка C# для платформы .NET и имеет реализацию для ОС Windows. Этот язык ориентирован на создание программных приложений промышленного уровня, предназначенных для исполнения на кластерных вычислительных системах. Будучи современным высокоуровневым языком, он также дает возможность успешно изучать и осваивать параллельное программирование студентам вузов, начиная уже со 2-го курса. Часть данного учебного курса посвящена также общим сведениям об архитектуре современных кластеров и используемых в них высокоскоростных интерконнектов таких, как Gigabit Ethernet, Infiniband, Myrinet и др. (c) ООО “ИНТУИТ.РУ”, 2008-2016 (c) Сердюк Ю.П., 2008-2016 3
Введение: кластерные вычислительные системы В данной лекции рассматривается архитектура высокопроизводительных процессоров и кластерных систем. Также внимание уделено принципам построения быстрых сетей передачи данных и операционным системам для кластерных систем, в частности, рассматривается Windows Compute Cluster Server 2003 В данном разделе, будут кратко рассмотрены архитектура современных высокопроизводительных процессоров и кластерных систем. На примере сети Infiniband будут продемонстрированы принципы построения быстрых сетей передачи данных, используемых в кластерных установках. Более детально будет представлена архитектура наиболее производительных кластерных вычислительных систем: Blue Gene/L и семейства SGI Altix. В качестве базового программного обеспечения для организации вычислений на кластерных системах рассматривается Windows Compute Cluster Server (CCS) 2003. Дается его общая характеристика и состав сервисов, работающих на узлах кластеров. В заключение данного раздела, приводятся правила работы с консолью запуска и управления заданиями CCS. Описываются подробности работы планировщика CCS при исполнении последовательностей заданий на кластере. 1.1. Архитектура высокопроизводительных процессоров и кластерных систем В истории развития архитектуры компьютерных процессоров можно выделить два крупных этапа: 1-й этап - увеличение тактовой частоты работы процессоров (до 2000 г.), 2-й этап - появление многоядерных процессоров ( после 2000) г. Таким образом, подход на основе SMP (Symmetrical MultiProcessing), который развивался при построении высокопроизводительных серверов, в которых несколько процессоров разделяют ресурс системы, и, в первую очередь, оперативную память (см. Рис 1.1), сместился “вниз” на уровень ядер внутри процессора. 4
Рис. 1.1. Классическая SMP-система На пути к многоядерным процессорам, первой появилась технология Hyper-Threading, впервые примененная в 2002 г. в процессорах Intel Pentium 4: Рис. 1.2. Процессор Intel Pentium 4, использующий технологию Hyper-Threading В этой технологии два виртуальных процессора разделяют между собой все ресурсы одного физического процессора, а именно, кэши, конвейер исполнения и отдельные исполнительные устройства. При этом, если один виртуальный процессор занял общий ресурс, то второй будет ожидать его освобождения. Тем самым, процессор с HyperThreading можно сравнить с многозадачной операционной системой, обеспечивающей каждому работающему в ней процессу свой виртуальный компьютер с полным набором средств и занимающейся планированием порядка и времени работы этих процессов на физическом оборудовании. Только в случае с Hyper-Threading, все это происходит на значительно более низком аппаратном уровне. Тем не менее, два потока команд позволяют более эффективно загрузить исполнительные устройства процессора. Реальный прирост производительности процессора от применения технологии Hyper-Threading оценивается от 10 до 20 процентов. Полноценный двухъядерный процессор (см. Рис 1.3), на отдельных задачах 5
демонстрирует прирост производительности от 80 до 100 процентов. Рис. 1.3. Система на базе двухъядерного процессора Таким образом, двухъядерный и, в общем случае, многоядерный процессор, можно рассматривать как SMP-систему в миниатюре, в которой отсутствует необходимость использования сложных и дорогих многопроцессорных материнских плат. Более того, каждое ядро может (как, например, в процессоре Intel Pentium Extreme Edition 840) поддерживать технологию Hyper-Threading, а потому такого рода двухъядерный процессор может выполнять четыре программных потока одновременно. В начале 2007 г., корпорация Intel представила 80-ядерный однокристальный процессор, получивший название Teraflops Research Chip (ссылка: http://www.intel.com/research/platform/terascale/teraflops.htm). Этот процессор может достигать производительности 1,01 терафлопс при минимальной тактовой частоте ядра 3,16 ГГц и напряжении 0,95 В. При этом общее энергопотребление чипа составляет всего 62 Вт. По прогнозам Intel, коммерческие варианты процессоров с большим числом ядер появятся в ближайшие 5 лет, а к 2010 г. четверть объема всех поставляемых серверов будут иметь терафлопную производительность. Кластерные вычислительные системы и их архитектура Кластер - это локальная (расположенная территориально в одном месте) вычислительная система, состоящая из множества независимых компьютеров и сети, связывающей их. Кроме того, кластер является локальной системой потому, что он управляется в рамках отдельного административного домена как единая компьютерная система. Компьютерные узлы из которых он состоит, являются стандартными, универсальными (персональными) компьютерами, используемыми в различных областях и для 6
разнообразных приложений. Вычислительный узел может содержать либо один микропроцессор, либо несколько, образуя, в последнем случае, симметричную (SMP-) конфигурацию. Сетевая компонента кластера может быть либо обычной локальной сетью, либо быть построена на основе специальных сетевых технологий, обеспечивающих сверхбыструю передачу данных между узлами кластера. Сеть кластера предназначена для интеграции узлов кластера и, обычно, отделена от внешней сети, через которую осуществляется доступ пользователей к кластеру. Программное обеспечение кластеров состоит из двух компонент: средств разработки/программирования и средств управления ресурсами. К средствам разработки относятся компиляторы для языков, библиотеки различного назначения, средства измерения производительности, а также отладчики, что, всё вместе, позволяет строить параллельные приложения. К программному обеспечению управления ресурсами относятся средства инсталляции, администрирования и планирования потоков работ. Хотя для параллельной обработки существует очень много моделей программирования, но, на настоящий момент, доминирующим подходом является модель на основе “передачи сообщений” (message passing), реализованная в виде стандарта MPI (Message Passing Interface). MPI - это библиотека функций, с помощью которых в программах на языках C или Фортран можно передавать сообщения между параллельными процессами, а также управлять этими процессами. Альтернативами такому подходу являются языки на основе так называемого “глобального распределенного адресного пространства” (GPAS - global partitioned address space), типичными представителями которых являются языки HPF (High Performance Fortran) и UPC (Unified Parallel C). 1.2. Принципы построения быстрых сетей передачи данных Выбор сетевой технологии зависит от ряда факторов, среди которых цена, скорость передачи данных, совместимость с другими аппаратными средствами и системным программным обеспечением, коммуникационные характеристики приложений, которые будут исполняться на кластере. Технические характеристики сети, непосредственно связанные с передачей данных, выражаются в терминах задержки (latency) и широты полосы пропускания (bandwidth). 7
Задержка определяется как время, затрачиваемое на передачу данных от одного компьютера к другому, и включает в себя время, за которое программное обеспечение подготавливает сообщение, и непосредственно время передачи битов данных с компьютера на компьютер. Широта полосы пропускания есть количество бит за секунду, которое может быть передано по участку сети. Достижение низкой задержки и большой широты полосы пропускания требует применения эффективных коммуникационных протоколов, которые снижают издержки, вносимые программным обеспечением. Коммуникационный протокол определяет правила и соглашения, которые используются двумя или более компьютерами для обмена данными по сети. В кластерах используются как традиционные сетевые протоколы, предназначенные для Internet, так и протоколы, специально ориентированные на использование в кластерах. Типичными IP (Internet Protocol)-протоколами являются TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Эти протоколы совместно с прикладным интерфейсом программиста (Application Programming Interface) на основе BSD-сокетов, были первой библиотекой для передачи сообщений для использования в кластерах. Исследования по протоколам с малой задержкой привели к созданию стандарта VIA (Virtual Interface Architecture). В частности, существует реализация версии MPICH стандарта MPI, которая называется MVICH, работающая с использованием VIA. Большой консорциум промышленных партнеров, включая Compaq, Dell, HewlettPackard, IBM и др., разработали и поддерживают стандарт Infiniband для передачи данных с малой задержкой. В Infiniband -архитектуре (см. Рис 1.4) компьютеры связываются между собой на основе высокоскоростной, последовательной, расширяемой, переключаемой фабрики, работающей на основе передачи сообщений. 8
Рис. 1.4. Архитектура сети Infiniband Все системы и устройства подсоединяются к фабрике либо через HCA-адаптеры (host channel adapters), либо через TCA-адаптеры (target channel adapters). Скорость передачи данных по отдельной Infiniband-линии - свыше 2,5 Гб/сек. Кроме того, в Infiniband поддерживается режим RDMA (Remote Direct Memory Access), который позволяет одному процессору обращаться к содержимому памяти другого процессора непосредственно, а также протокол IPv6 передачи сообщений для Internet. 1.3. Примеры архитектур кластерных вычислительных систем: Blue Gene/L, семейство SGI Altix Суперкомпьютер Blue Gene/L Кластерная вычислительная система Blue Gene/L - это первый шаг на пути реализации программы по созданию компьютера с производительностью 1 петафлопс, осуществляемой фирмой IBM. За последние годы, разработчики суперкомпьютеров пришли к выводу, что единственным способом конструирования систем с производительностью более 1 терафлопса является наращивание количества одновременно работающих процессоров (машин). Однако, применение кластеров с десятками тысяч мощных процессоров ограничивается большим их энергопотреблением и высокими требованиями к охлаждению. Принципиальный подход, принятый при построении семейства машин Blue Gene 9
состоит в том, что система, по-прежнему, собирается из огромного числа узлов, однако, каждый из них работает на сравнительно небольшой тактовой частоте. Тем самым, достигается как снижение стоимости системы, так и значительное уменьшение энергопотребления. Другая главная особенность Blue Gene/L заключается в применении так называемой технологии “система на чипе” - применении интегральных микросхем со сверхвысокой степенью интеграции, когда в рамках одной интегральной схемы объединяются: вычислительный процессор, коммуникационный процессор, три уровня кэш-памяти и несколько высокоскоростных сетевых интерфейсов. Система Blue Gene/L является масштабируемым (расширяемым) суперкомпьютером, который может состоять из более, чем 65536 вычислительных процессоров. Архитектура суперкомпьютера Blue Gene/L показана на Рис 1.5. Рис. 1.5. Архитектура суперкомпьютера Blue Gene/L Базовым компонентом суперкомпьютера Blue Gene/L является так называемая “вычислительная карта” (compute card), которая состоит из двух вычислительных узлов, где каждый узел содержит 2 процессора PowerPC 440. 16 вычислительных карт группируются в модульную (или узловую) карту, которая, таким образом, содержит уже 64 процессора. В свою очередь, 16 модульных карт устанавливаются на объединительной панели (midplane), и две таких панели монтируются в серверную стойку (cabinet), которая содержит в итоге 1024 узла с общим количеством процессоров 2048. Процессор PowerPC 440 способен выполнять за такт 4 операции с плавающей запятой, что для заданной частоты соответствует пиковой производительности в 1,4 терафлопса 10