Введение: кластерные вычислительные системы
В данном разделе, будут кратко рассмотрены архитектура современных высокопроизводительных процессоров и кластерных систем. На примере сети 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), сместился "вниз" на уровень ядер внутри процессора.
На пути к многоядерным процессорам, первой появилась технология Hyper-Threading, впервые примененная в 2002 г. в процессорах Intel Pentium 4:
В этой технологии два виртуальных процессора разделяют между собой все ресурсы одного физического процессора, а именно, кэши, конвейер исполнения и отдельные исполнительные устройства. При этом, если один виртуальный процессор занял общий ресурс, то второй будет ожидать его освобождения. Тем самым, процессор с Hyper-Threading можно сравнить с многозадачной операционной системой, обеспечивающей каждому работающему в ней процессу свой виртуальный компьютер с полным набором средств и занимающейся планированием порядка и времени работы этих процессов на физическом оборудовании. Только в случае с Hyper-Threading, все это происходит на значительно более низком аппаратном уровне. Тем не менее, два потока команд позволяют более эффективно загрузить исполнительные устройства процессора. Реальный прирост производительности процессора от применения технологии Hyper-Threading оценивается от 10 до 20 процентов.
Полноценный двухъядерный процессор (см. Рис 1.3), на отдельных задачах демонстрирует прирост производительности от 80 до 100 процентов.
Таким образом, двухъядерный и, в общем случае, многоядерный процессор, можно рассматривать как 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 г. четверть объема всех поставляемых серверов будут иметь терафлопную производительность.
Кластерные вычислительные системы и их архитектура
Кластер - это локальная (расположенная территориально в одном месте) вычислительная система, состоящая из множества независимых компьютеров и сети, связывающей их. Кроме того, кластер является локальной системой потому, что он управляется в рамках отдельного административного домена как единая компьютерная система.
Компьютерные узлы из которых он состоит, являются стандартными, универсальными (персональными) компьютерами, используемыми в различных областях и для разнообразных приложений. Вычислительный узел может содержать либо один микропроцессор, либо несколько, образуя, в последнем случае, симметричную (SMP-) конфигурацию.
Сетевая компонента кластера может быть либо обычной локальной сетью, либо быть построена на основе специальных сетевых технологий, обеспечивающих сверхбыструю передачу данных между узлами кластера. Сеть кластера предназначена для интеграции узлов кластера и, обычно, отделена от внешней сети, через которую осуществляется доступ пользователей к кластеру.
Программное обеспечение кластеров состоит из двух компонент:
- средств разработки/программирования и
- средств управления ресурсами.
К средствам разработки относятся компиляторы для языков, библиотеки различного назначения, средства измерения производительности, а также отладчики, что, всё вместе, позволяет строить параллельные приложения.
К программному обеспечению управления ресурсами относятся средства инсталляции, администрирования и планирования потоков работ.
Хотя для параллельной обработки существует очень много моделей программирования, но, на настоящий момент, доминирующим подходом является модель на основе "передачи сообщений" (message passing), реализованная в виде стандарта MPI (Message Passing Interface). MPI - это библиотека функций, с помощью которых в программах на языках C или Фортран можно передавать сообщения между параллельными процессами, а также управлять этими процессами.
Альтернативами такому подходу являются языки на основе так называемого "глобального распределенного адресного пространства" (GPAS - global partitioned address space), типичными представителями которых являются языки HPF (High Performance Fortran) и UPC (Unified Parallel C).