Автор работы: Пользователь скрыл имя, 26 Марта 2012 в 23:27, лекция
Технологии высокопроизводительных вычислений сегодня переживают весьма резкие качественные изменения. Круг вопросов, подлежащих обсуждению при систематическом изложении предмета, не устоялся и стремительно меняется. По этой причине мы разделим настоящий текст на две части.
В первой части, озаглавленной «Освоенные технологии», изложим предмет так, как его надо было рассказывать, скажем, 2 – 3 года назад, не забывая, конечно, о линейном, количественном развитии, имевшем место за эти 2 – 3 года в рамках традиционных подходов.
Введение.
Часть 1. Освоенные технологии.
1. Таксономия суперкомпьютеров и применяемых в связи с ними программистских технологий.
1.1. Архитектура фон Неймана.
1.2. Три этапа развития суперкомпьютерных технологий и две суперкомпьютерных революции.
1.3. Способы объединения многих процессоров в единую систему.
1.4. Альтернативные архитектуры.
1.5. Простейшая модельная программа.
1.5.1. Решение двумерной краевой задачи для уравнения теплопроводности методом Якоби.
1.5.2. Параллельная реализация «на бумаге».
1.5.3. Что потребуется для параллельной реализации на практике.
1.6. Общий состав программного обеспечения вычислительного кластера
1.7. Некоторые основные определения.
1.8. Технологии параллельной обработки данных без использования суперкомпьютеров.
2. Некоторые основные понятия архитектуры процессоров и ОС.
2.1. Некоторые основные определения.
2.2. Пример системы команд: обработка данных в памяти.
2.3. Чего нам не хватает.
2.3.1. Общее представление об управлении внешними устройствами.
2.3.2. Программа – диспетчер.
2.3.3. Прерывания.
2.3.4. Защита памяти и многорежимность процессора.
2.3.5. Виртуальная память.
2.4. Еще несколько определений.
3. Критерии эффективности коммуникационной сети.
4. Обзор процессорных и сетевых решений, применяемых в современных кластерах.
4.1. Выбор процессора.
4.2. Выбор коммуникационной сети.
5. Суперкомпьютер МВС-1000 и метакластер МВС-900.
5.1. Основные принципы организации МВС – 1000.
5.2. Как работает и зачем нужен метакластер МВС – 900.
6. Модели и технологии параллельного программирования.
6.1. Два способа параллельной обработки данных.
6.2. Два лица программистской модели.
6.3. Модель: явный двусторонний обмен сообщениями.
6.4. Модель: односторонний обмен сообщениями.
6.5. Модель: NUMA.
6.6. Модели, производные от явного двустороннего обмена сообщениями.
6.6.1. Модель библиотек коллективных операций над распределенными массивами.
6.6.2. Модель параллельных трансляторов в стиле HPF.
6.6.3. Модель непроцедурных языков.
6.7. Парадокс неприятия новых технологий.
6.8. Немного о технике реализации MPI.
Часть 2. Технологии, появляющиеся сегодня.
7. Почему «эпоха кластеров» заканчивается.
Литература.
65
Введение.
Часть 1. Освоенные технологии.
1. Таксономия суперкомпьютеров и применяемых в связи с ними программистских технологий.
1.1. Архитектура фон Неймана.
1.2. Три этапа развития суперкомпьютерных технологий и две суперкомпьютерных революции.
1.3. Способы объединения многих процессоров в единую систему.
1.4. Альтернативные архитектуры.
1.5. Простейшая модельная программа.
1.5.1. Решение двумерной краевой задачи для уравнения теплопроводности методом Якоби.
1.5.2. Параллельная реализация «на бумаге».
1.5.3. Что потребуется для параллельной реализации на практике.
1.6. Общий состав программного обеспечения вычислительного кластера
1.7. Некоторые основные определения.
1.8. Технологии параллельной обработки данных без использования суперкомпьютеров.
2. Некоторые основные понятия архитектуры процессоров и ОС.
2.1. Некоторые основные определения.
2.2. Пример системы команд: обработка данных в памяти.
2.3. Чего нам не хватает.
2.3.1. Общее представление об управлении внешними устройствами.
2.3.2. Программа – диспетчер.
2.3.3. Прерывания.
2.3.4. Защита памяти и многорежимность процессора.
2.3.5. Виртуальная память.
2.4. Еще несколько определений.
3. Критерии эффективности коммуникационной сети.
4. Обзор процессорных и сетевых решений, применяемых в современных кластерах.
4.1. Выбор процессора.
4.2. Выбор коммуникационной сети.
5. Суперкомпьютер МВС-1000 и метакластер МВС-900.
5.1. Основные принципы организации МВС – 1000.
5.2. Как работает и зачем нужен метакластер МВС – 900.
6. Модели и технологии параллельного программирования.
6.1. Два способа параллельной обработки данных.
6.2. Два лица программистской модели.
6.3. Модель: явный двусторонний обмен сообщениями.
6.4. Модель: односторонний обмен сообщениями.
6.5. Модель: NUMA.
6.6. Модели, производные от явного двустороннего обмена сообщениями.
6.6.1. Модель библиотек коллективных операций над распределенными массивами.
6.6.2. Модель параллельных трансляторов в стиле HPF.
6.6.3. Модель непроцедурных языков.
6.7. Парадокс неприятия новых технологий.
6.8. Немного о технике реализации MPI.
Часть 2. Технологии, появляющиеся сегодня.
7. Почему «эпоха кластеров» заканчивается.
Литература.
Технологии высокопроизводительных вычислений сегодня переживают весьма резкие качественные изменения. Круг вопросов, подлежащих обсуждению при систематическом изложении предмета, не устоялся и стремительно меняется. По этой причине мы разделим настоящий текст на две части.
В первой части, озаглавленной «Освоенные технологии», изложим предмет так, как его надо было рассказывать, скажем, 2 – 3 года назад, не забывая, конечно, о линейном, количественном развитии, имевшем место за эти 2 – 3 года в рамках традиционных подходов. В начале рассказа об уже освоенных технологиях высокопроизводительных вычислений некоторое внимание придется уделить сжатому повторению основ архитектуры ЭВМ и операционных систем. Опыт показывает, что у значительной части слушателей курса знание этих основ имеет слишком общий характер, не позволяющий проследить конкретную логику изложения некоторых вопросов организации высокопроизводительных вычислений.
Во второй части, озаглавленной «Технологии, появляющиеся сегодня», расскажем о принципиально новых технологиях, методах и подходах.
Цель такого разделения – не только естественное желание автора «подстраховаться», разделив вопросы, уже решенные мировой практикой, и вопросы, сегодняшнее мнение автора по которым может буквально завтра оказаться неверным. Гораздо важнее то, что вторая часть подразумевает рассмотрение в терминах, обычно не используемых в программистских спецкурсах. Это само по себе тяжело для слушателей, и «размазывать» эти сложные моменты мелкими порциями по всему курсу не хотелось бы. Кроме того, достаточно сложный и непривычный материал второй части гораздо легче излагать, опираясь на уже законченное рассмотрение освоенных на сегодня технологий.
Первое, определяющее упоминание термина здесь и далее выделяется в тексте жирным курсивом.
Часть 1. Освоенные технологии.
Определение. Суперкомпьютером называется вычислительная система, вычислительное быстродействие которой многократно выше, чем у современных ей компьютеров массового выпуска [1].
Первые компьютеры середины прошлого века были суперкомпьютерами – это были машины для вычислительных приложений, выпускаемые единичными экземплярами.
1.1. Архитектура фон Неймана.
Первые же попытки автоматизировать процесс вычислений показали, что быстродействие определяется не только и не столько тем, как быстро машина выполняет арифметические операции, сколько тем, как именно организован процесс «объяснения» машине, что именно вычислять. Например, вычислительная производительность лаборанта, считающего на арифмометре, определяется не скоростью срабатывания колес арифмометра, а скоростью, с которой лаборант набирает числа и команды и записывает промежуточные результаты. Для автоматизации управления процессом вычислений арифметическое устройство пришлось снабдить устройством программного управления, оснащенным оперативной памятью для хранения программ и промежуточных данных. Наиболее общие принципы архитектуры устройства управления были сформулированы Джоном фон Нейманом. Кратко суть их в следующем: однородная адресуемая память хранит данные, используемые арифметическим устройством, и команды, выполняющиеся в определенной последовательности. Принципы эти остаются неизменными уже 60 лет: то, что мы называем «обычным универсальным процессором», в действительности – «фон Неймановская машина» [2]. Строгое определение упомянутого здесь понятия «архитектура» будет дано ниже.
1.2. Три этапа развития суперкомпьютерных технологий и две суперкомпьютерных революции.
Примерно до конца 80-х годов удавалось строить суперкомпьютеры в рамках фон Неймановской архитектуры. Усложняя внутреннее устройство процессора, можно было заставить его выполнять примерно (или даже в точности) такие же последовательности машинных команд, что и «обычный» процессор, во много раз быстрее.
На этом этапе:
- программист не задумывался о том, для суперкомпьютера или для «обычного» компьютера он пишет программу,
- разработчик оборудования суперкомпьютера разрабатывал «супер-процессор»,
- суперкомпьютер, таким образом, представлял собой обычную фон Неймановскую машину, оснащенную «супер-процессором».
Сама возможность значительно ускорять процессор по сравнению с серийно выпускаемыми образцами, совершенствуя лишь его внутреннее устройство, объяснялась дефицитом транзисторов, используемых при изготовлении «обычного» процессора. «Супер-процессор» работал быстрее «обычного» процессора за счет того, что на его изготовление потратили гораздо больше транзисторов. В конце 80-х годов прогресс микроэлектроники привел к тому, что на кристалле СБИС стало умещаться количество транзисторов, превосходящее уровень фантазии любого разработчика. Практически все, что можно было ускорить в рамках фон Неймановской архитектуры, уже было ускорено, и стало «обычным» процессором.
Единственным способом изготовления суперкомпьютера стало изготовление параллельной вычислительной системы, то есть машины, в которой многие процессоры совместно трудятся над одной задачей. Такие машины строились из серийно выпускаемых микросхем, в частности, микропроцессоров, но на оригинальной схемотехнической базе (шкафы, платы, линии связи). Этот технологический переворот будем называть первой суперкомпьютерной революцией.
На этом этапе:
- программист был поставлен перед необходимостью писать специальные – параллельные – программы, чтобы получить суперкомпьютерный уровень быстродействия,
- разработчик оборудования суперкомпьютера переключился на разработку средств объединения многих стандартных, серийно выпускаемых микропроцессоров в единую систему – смысла разрабатывать собственный «супер-процессор» больше не было,
- суперкомпьютер, таким образом, представлял собой уже не фон Неймановскую машину, а параллельную вычислительную систему.
Возможность получать суперкомпьютер при помощи разработки собственных средств интеграции стандартных микропроцессоров в единую систему существовала до тех пор, пока серийно выпускаемые средства интеграции, то есть оборудование локальных сетей, были развиты сравнительно слабо, и для интеграции процессоров «на суперкомпьютерном уровне» не годились. По мере совершенствования оборудования локальных сетей и интерфейсов их подключения к серийно выпускаемым компьютерам и эта ситуация изменилась. Примерно в конце 90-х серийно выпускаемое сетевое оборудование позволило использовать в качестве суперкомпьютера обычную локальную сеть, компактно расположенную и оснащенную соответствующим программным обеспечением. Технический и экономический смысл разработки и изготовления собственных плат и шкафов для интеграции стандартных микропроцессоров в единую систему пропал. Подавляющее большинство суперкомпьютеров стало строиться по технологии кластеров выделенных рабочих станций, то есть собираться методами обычной системной интеграции из готовых, выпускаемых серийно, компьютеров общего назначения, плат и коммутаторов локальных сетей. Этот переворот будем называть второй суперкомпьютерной революцией.
На этом этапе:
- для программиста, по сравнению с предшествующим этапом, ничего принципиально не изменилось, кроме того, что таких программистов стало многократно больше, как и самих суперкомпьютеров,
- разработчик суперкомпьютерного оборудования вынужден был стать системным интегратором – разрабатывать стало нечего, все используемые компоненты и средства их интеграции теперь выпускаются крупными сериями,
- суперкомпьютер, таким образом, из параллельной вычислительной системы на оригинальной схемотехнической базе стал кластером выделенных рабочих станций [1,2].
Заметив, что интервал суперкомпьютерных революций – примерно 10 лет, легко сделать вывод, что именно сейчас, на подходе к концу первого десятилетия 21-го века, должна начаться третья суперкомпьютерная революция. Несколько труднее представить себе, в чем именно она могла бы заключаться. В действительности, третья суперкомпьютерная революция уже идет полным ходом, но, поскольку масштаб происходящего переворота поистине громаден, более или менее состоявшиеся результаты его пока не всем очевидны. Изменения происходят, но еще не произошли. Во второй части курса мы подробно обсудим эти вопросы, а пока остановимся на этой точке: сегодня (вчера?) весь мир считает на кластерах.
1.3. Способы объединения многих процессоров в единую систему.
Способы интеграции многих процессоров в единую систему логически разделяются на две большие группы: объединение процессоров на общей памяти и объединение процессоров, каждый из которых оснащен своей, локальной, памятью при помощи высокоскоростных линий связи [1,2,3].
Системы, в которых вся оперативная память равно доступна всем процессорам, называются SMP-системами (Symmetric Multi Processing). Это наиболее удобный для программиста, но наиболее дорогой в технической реализации способ. При таком способе программист делит между процессорами только работу, но не данные, причем делить работу можно очень мелкими частями (порядка десятков команд). Помимо высокой стоимости, такие системы очень плохо масштабируются: даже в очень дорогих системах число объединяемых процессоров не дотягивает до сотни. Качество объединения часто оставляет желать лучшего: чем больше процессоров, тем более они склонны конкурировать за доступ к общей памяти, взаимно замедляя работу друг друга.
Отметим, что все популярные в последнее время многоядерные процессоры являются, с логической точки зрения, SMP-системами.
Системы, в которых общей памяти нет вообще, называются MPP-системами (Massively Parallel Processing). Они в десятки раз дешевле в расчете на один процессор, прекрасно масштабируются (до десятков тысяч узлов), но на них труднее программировать. Делить между процессорами приходится не только работу, но и данные, причем работу приходится «нарезать» крупными частями (порядка сотен тысяч команд и более), а передачи данных, расположенных в одном процессоре, но необходимых для вычислений в другом, приходится явно записывать в программе. Вторая суперкомпьютерная революция усилила и закрепила господство этой технологии: с появлением возможности строить MPP-системы вообще без специальных аппаратных разработок ценовая пропасть между ними и SMP-системами сравнимого размера стала еще гораздо более широкой, чем раньше. Весь прогресс в удешевлении и росте доступности суперкомпьютеров, достигнутый второй суперкомпьютерной революцией, пришелся на долю MPP-систем.
Довольно часто узлом MPP-системы бывает не единичный однопроцессорный компьютер, а SMP-система сравнительно небольшого размера.
Промежуточное положение занимают NUMA-системы (Non-Uniform Memory Access). Это компромиссный вариант: память общая (хотя не обязательно вся), но делится на блоки, каждый из которых доступен быстро «своему» процессору, и медленно – всем остальным. «Медленно» - это может означать «в 2 раза медленнее, чем своя память», а может – и «в 100 раз». При этом «медленная», или «чужая», для данного процессора память все равно доступна напрямую: к ее ячейкам можно обращаться теми же командами, что и к «своим», различно лишь время выполнения этих команд.
На том этапе развития суперкомпьютерной технологии, на котором мы пока мысленно остановились, эта архитектура была «экзотической». Такие машины были не всегда заметно дешевле, чем SMP-системы, и встречались неизмеримо реже, чем кластеры. Третья суперкомпьютерная революция, речь о которой – впереди, сделает эту архитектуру основной и, скорее всего, единственной. Но об этом – ниже.
1.4. Альтернативные архитектуры.
До сих пор мы молчаливо полагали, что параллельная вычислительная система, в любом случае, строится из универсальных (фон Неймановских) процессоров. Строго говоря, это далеко не всегда так. Например, векторный процессор – это тоже параллельная не фон Неймановская архитектура, но полученная не объединением в одну систему многих фон Неймановских процессоров, а другим способом – добавлением к универсальному процессору команд работы с векторами [2,3]. Мы не будем специально обсуждать вопросы векторных вычислений, по крайней мере, в первой части курса. Однако отметим, что узел как SMP-, так и MPP-системы может быть и векторным процессором. Также, как мы уже отмечали выше, узел MPP-системы может быть SMP- или NUMA-системой, размер которой заметно меньше размера установки в целом.
1.5. Простейшая модельная программа.
Рассказывать о составе и назначении программного обеспечения суперкомпьютеров лучше всего на конкретном примере. Выберем модельную программу, спланируем «на бумаге» ее параллельную реализацию, а затем – посмотрим, какого рода программное обеспечение нам потребуется, чтобы выполнить эту параллельную реализацию на суперкомпьютере вообще, и на кластере рабочих станций – в частности.
1.5.1. Решение двумерной краевой задачи для уравнения теплопроводности методом Якоби.
Физика задачи: рассмотрим бесконечно высокий однородный кирпич, к боковым граням которого плотно прислонены утюги бесконечной массы и заданной температуры. Очевидно, задача симметрична по глубине, поэтому будем рассматривать ее двумерное приближение – горизонтальный срез. По мере прогрева кирпича в нем (с нашей точки зрения – в любом его горизонтальном срезе) установится некоторое распределение температуры, которое нам и требуется найти. Для краткости будем далее называть эту задачу «задачей о прогреве кирпича». Подчеркнем, что ни физическая, ни вычислительно – математическая сторона этой прекрасно изученной задачи нас не интересует – мы рассматриваем ее как пример заданной и не обсуждаемой вычислительной процедуры, для которой надо построить параллельную реализацию [1].
Информация о работе Технологии высокопроизводительных вычислений