
Лекции / lectures-parallel
.doc
—
Программа курса лекций
Программирование вычислительных задач для многопроцессорных систем
2 семестра, 60-64 часа
Аннотация.
Главная цель курса лекций – изучение основных практических подходов и методов решения вычислительно сложных задач, в первую очередь задач математической физики, на многопроцессорных вычислительных системах.
Рассматриваемые вопросы можно разделить на четыре группы.
Первая группа вопросов связана с ключевым объектом курса - вычислительно сложными задачами. Дается характеристика вычислительно сложных задач, примеры таких задач, обосновывается необходимость применения параллельных вычислительных систем для решения вычислительно сложных задач.
Вторая группа вопросов связана с инструментальным средством решения вычислительно сложных задач – многопроцессорными (параллельными) вычислительными системами. Дается краткая характеристика архитектур параллельных вычислительных систем, общий обзор существующих и перспективных многопроцессорных вычислительных системам. Рассматриваются тенденции развития архитектур, понятие производительности вычислительных систем, способы измерения производительности, основные понятия и результаты теории параллельной обработки данных.
Третья группа вопросов связана с изучением методов и средств программирования вычислительно сложных задач. Подробно рассматриваются основные используемые практически в настоящий момент средства программирования – технология передачи сообщений, основанная на применении библиотеки передачи сообщений MPI (модель параллелизма с распределенной памятью), и стандарт OpenMP (модель параллелизма с общей памятью). Дается обзор других средств разработки параллельных программ решения вычислительно сложных задач – средств распараллеливания последовательных программ, перспективных языков параллельного программирования, пакетов прикладных программ.
Четвертая группа вопросов связана с изучением методов отображения структуры алгоритма вычислительно сложной задачи на архитектуру многопроцессорной вычислительной системы при помощи средств программирования. Рассматриваются методы организации данных и вычислений для разных классов задач на сетках (прямоугольных, неструктурных, адаптивных), методы балансировки вычислений, факторы, влияющие на эффективность параллельной программы. Рассматриваются примеры программирования сложных задач нескольких классов из области математической физики.
Курс лекций рассчитан на 60-64 часа занятий (2 семестра), в том числе выполнение практических заданий по программированию на параллельном компьютере (вычислительном кластере), и письменных контрольных тестов.
Программа курса.
1. Вычислительно сложные задачи.
Характеристики вычислительно сложных задач. Разнообразие вычислительно сложных задач в различных прикладных областях (математическое моделирование физических процессов, инженерные приложения, вычислительная химия, бизнес-приложения и тп.). Проблемы “большого вызова”. Примеры (моделирование климатических систем, обтекание летательных аппаратов).
Необходимость параллельных вычислений для решения вычислительно сложных задач. Некоторые теоретические и эмпирические результаты в области ускорения вычислений. Соотношение последовательных и параллельных вычислений, ограничения ускорения (закон Амдала). Тенденция повышения производительности последовательных компьютеров (закон Мура). Накладные расходы на взаимодействие и передачу данных (гипотеза Минского). Высокая стоимость параллельных систем (закон Гроша).
Основные этапы решения вычислительной задачи на параллельной вычислительной системе. Некоторые общие проблемы создания параллельных программ. Последовательные и параллельные алгоритмы, доминирование последовательных программ. Сложность разработки и отладки параллельных программ. Интересы прикладных специалистов и параллельное программирование. Эффективность параллельных вычислений, зависимость эффективности параллельных вычислений от учета особенностей архитектуры параллельной системы.
2. Многопроцессорные (параллельные) вычислительные системы.
Классификации параллельных компьютеров и систем. Классификация Флинна. Методы оценки производительности. Введение единого числового параметра, Mflops, MIPS. Пиковая и реальная производительность компьютеров.
Архитектура параллельных вычислительных систем. Компьютеры с общей и распределенной памятью, принципы организации, сходства и различия, достоинства и недостатки.
Компьютеры с распределенной памятью. Вычислительные узлы и коммуникационная сеть, топология связи между узлами, свойства топологий. Вычислительные кластеры: узлы, коммуникационные технологии, программное обеспечение, латентность и пропускная способность, вспомогательные сети. Причины снижения производительности на реальных программах.
Многоядерные процессоры. Архитектура с двухуровневым параллелизмом – поле процессоров с распределенной памятью и многоядерный процессор.
Обзор других архитектур - неоднородные распределенные вычислительные системы, метакомпьютинг и концепция GRID, концепция data-flow компьютеров, программируемые логические интегральные схемы (ПЛИС).
Примеры современных суперкомпьютеров, Top500, производительность, объемы оперативной и внешней памяти.
3. Методы и средства программирования вычислительно сложных задач для параллельных компьютеров.
Основные понятия. Процессы, синхронизация, обмен данными, потенциальный (естественный) параллелизм алгоритма. Задача выявления параллелизма в последовательных программах при распараллеливании.
Модели параллелизма. Модель передачи сообщений и модель параллелизма с общей памятью.
Сведения об операционной системе UNIX, необходимые при работе с параллельной вычислительной системой.
Программирование в модели передачи сообщений. Технология параллельного программирования MPI. Общая структура параллельной программы. Общие функции MPI. Коммуникаторы. Взаимодействия точка-точка. Способы взаимодействия: блокированный, неблокированный, буферизованный, синхронный, по готовности. Операции посылки и приема данных. Коллективные взаимодействия: раздача данных (один-все), сбор данных (все-один), раздача/сбор от всех ко всем. Редукционные операции. Пользовательские типы данных. Примеры параллельных программ.
Программирование в модели с общей памятью с использованием стандарта OpenMP. Параллельные нити (процессы). Параллельные циклы. Параллельные секции. Синхронизация, барьер, критическая секция. Общие и локальные переменные. Примеры параллельных программ.
Обзор других средств разработки параллельных программ. Система распараллеливания ParaWise. Системы автоматизации параллельного программирования DVM. Система параллельного декларативного программирования Норма. Тенденции в развитии языков параллельного программирования, обзор существующих проектов (Сhapel, X10, Fortress, UPC, Coarray Fortran, Charm++). Инструментальные средства отладки параллельных программ. Инженерные и научно-исследовательские пакеты прикладных программ.
4. Методы программирования вычислительно сложных программ различных классов.
Графовые модели программ. Ярусно-параллельная форма графа алгоритма, высота, ширина, виды параллелизма. Эквивалентные преобразования программ, элементарные преобразования циклов. Зависимость степени параллелизма программ от формы записи алгоритма и выбора структур данных.
Организации данных и параллельных вычислений для разных классов задач на сетках (прямоугольных, неструктурных, адаптивных), методы балансировки вычислений, факторы, влияющие на эффективность параллельной программы.
Гипотеза о типовых информационных структурах.
Примеры программирования сложных задач нескольких классов из области математической физики.
Основная литература:
Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.
Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное пособие. - М.: Изд-во МГУ, 2004. - 71 с.
Антонов А.С. Параллельное программирование с использованием технологии OpenMP: Учебное пособие. - М.: Изд-во МГУ, 2009. - 76 с.
Корнеев В.Д. Параллельное программирование в MPI. - Москва-Ижевск, 2003. – 303 с.
Лупин С.А., Посыпкин М.А. Технологии параллельного программирования. – М., ИД “Форум”-ИНФРА-М, 2008. - 208 с.
В.В.Корнеев. Параллельные вычислительные системы. - М.: Изд-во "Нолидж", 1999. - 320 с.
Воеводин В.В. Математические модели и методы в параллельных процессах. - М.: Наука, 1986. - 296 с.
Воеводин В.В. Вычислительная математика и структура алгоритмов. - М.: Изд-во МГУ, 2006. - 112 с.
Материалы информационно-аналитического центра по параллельным вычислениям Parallel.ru. http://www.parallel.ru/
Дополнительная литература:
Воеводин Вл.В., Жуматий С.А. Вычислительное дело и кластерные системы. - М.: Изд-во МГУ, 2007. - 161 с.
Королев Л.Н. Архитектура процессоров электронных вычислительных машин. - М.: Изд. факультета ВМиК МГУ, 2003.
Р.Хокни, К.Джесхоуп. Параллельные ЭВМ. М.: Радио и связь. 1986
С.А.Немнюгин, О.Л.Стесик. Параллельное программирование для многопроцессорных вычислительных систем, БХВ-Петербург, 2002, 400 стр.
А.В.Старченко. Высокопроизводительные вычисления на кластерах, Издательство Томского университета, 2008, 198 стр.
Group W., Lusk E., Skjellum A. Using MPI. Portable Parallel Programming witn the Message-Passing Interface. – Cambridge-London, MIT Press, 1999. – 370 p.
Программу составил
Ефимкин Кирилл Николаевич,
зав. отделом ИПМ им. М.В. Келдыша РАН,
333-61-00
efi@a5.kiam.ru
bigcrocodile@yandex.ru