Цель курса состоит в изучении
математических моделей, методов и технологий параллельного программирования для
многопроцессорных вычислительных систем в объеме, достаточном для успешного
начала работ в области параллельного программирования. Излагаемый набор знаний и
умений составляет теоретическую основу для методов разработки сложных программ и
включают такие темы, как цели и задачи параллельной обработки данных, принципы
построения параллельных вычислительных систем, моделирование и анализ
параллельных вычислений, принципы разработки параллельных алгоритмов и программ,
системы разработки параллельных программ, параллельные численные алгоритмы для
решения типовых задач вычислительной математики. Изучение курса поддерживается
расширенным лабораторным практикумом.
Требования к слушателям: Знание учебного материала курсов CS101
"Введение в методы программирования", CS105 "Дискретная математика", CS220
"Архитектура ЭВМ", CS225"Операционные системы", CS304 "Методы вычислений". При
выполнении практических и лабораторных заданий требуется владение методами
программирования на алгоритмическом языке С.
Описание курса:
- Цели и задачи введения параллельной обработки данных (2 часа)
Важность
проблематики параллельных вычислений.
- Принципы построения параллельных вычислительных систем (4 часа)
Обзор
современных параллельных вычислительных систем. Классификация и оценка
производительности. Понятие кластерных систем.
- Модели вычислений и методы анализа эффективности (4 часа)
Показатели
эффективности параллельных вычислений: ускорение, эффективность,
масштабируемость. Модель вычислений в виде графа "операции-операнды". Анализ
модели: определение времени выполнения параллельного метода, оценка
максимально достижимого распараллеливания, выбор вариантов распределения
вычислительной нагрузки. Агрегация модели вычислений.
- Анализ коммуникационной трудоемкости параллельных алгоритмов (4
часа)
Критерии оценки топологии сети. Алгоритмы маршрутизации и методы
передачи данных. Типовые операции взаимодействия. Методы логического
представления топологии сети. Оценка времени передачи данных для кластерных
систем.
- Технология разработки параллельных программ для многопроцессорных систем с
распределенной памятью (стандарт передачи сообщений MPI) (6 часов)
Общая
характеристика стандарта MPI. Режимы передачи данных. Коллективные операции.
Конструирование производных типов данных. Управление процессами. Создание
логических топологий. Примеры: матричные вычисления, решение уравнений в
частных производных.
- Модели функционирования параллельных программ (6 часов)
Представление
параллельной программы как системы параллельно выполняемых процессов.
Обеспечение взаимоисключения при использовании разделяемых ресурсов. Понятие
семафоров и монитора. Моделирование состояния программы в виде графа
"процесс-ресурс". Анализ модели: обнаружение и исключение тупиковых ситуаций.
Применение сетей Петри. Типовые задачи взаимоисключения: проблема
"производитель-потребитель", задача "обедающие философы" и др.
- Параллельные численные алгоритмы для решения типовых задач вычислительной
математики (4 часа)
Матричные вычисления (умножение матриц,
транспонирование, решение систем линейных уравнений). Сортировка. Обработка
графов. Оптимизация.
- Технология разработки параллельных программ для многопроцессорных систем с
общей памятью (стандарт OpenMP) (2 часа)
Общая характеристика стандарта
OpenMP. Создание параллельных областей. Разделение вычислительной нагрузки
между потоками. Работа с данными. Синхронизация. Функции и переменные
окружения. Сравнительная характеристика подходов параллельного
программирования для систем с распределенной и общей памятью.
Описание лабораторного практикума:
- Методы разработки параллельных программ для многопроцессорных систем с
распределенной памятью с использованием библиотек реализации интерфейса
передачи сообщений MPI (4 часа)
- Практикум по разработке параллельных алгоритмов и программ для решения
задач вычислительной математики (8 часов)
- Практикум по использованию библиотек параллельных методов для решения
сложных научно-технических задач (на примере библиотеки PLAPACK) (4 часа)
Затрагиваемые разделы:
- AL4 Распределенные алгоритмы 3 осн. часа ( из 3)
- AL11 Параллельные алгоритмы 4 осн. часов
- AR7 Многопроцессорные архитектуры 1 осн. часов (из 3)
- AR8 Улучшение производительности 2 осн. часа
- OS3 Параллелизм 4 осн. часа (из 6)
- NC1 Введение в распределенные вычисления 2 осн. часов (из 2)
- CN1 Численный анализ 4 осн. час
- CN4 Высокопроизводительные вычисления 12 осн. часов
Описание курса в соответствии со стандартом направления 5119
"Информационные технологии":
- АЛ4 Распределенные алгоритмы 3 осн. часа ( из 3)
- АР7 Параллельные архитектуры 1 осн. часов (из 3)
- ОС3 Параллелизм 4 осн. часа (из 6)
- КС1 Введение в сетевую обработку данных 2 осн. часов (из 2)
- Вычислительная математика 4 осн. час
- Суперкомпьютеры и их применение 12 осн. часов
Материалы
курса