Параллельное программирование
Специальность: Программная инженерия
Преподаватель: Гергель В.П.
Цель данной дисциплины состоит в изучении математических моделей, методов и технологий параллельного программирования для многопроцессорных и многоядерных вычислительных систем в объеме, достаточном для успешного начала работ в области параллельного программирования. Излагаемый набор знаний и умений составляет теоретическую основу для методов разработки сложных программ. Изучение курса поддерживается расширенным лабораторным практикумом.
Содержание
- Цели и задачи введения параллельной обработки данных.
Важность проблематики параллельных вычислений. - Принципы построения параллельных вычислительных систем. Обзор современных параллельных вычислительных систем. Классификация и оценка производительности. Понятие кластерных систем.
- Модели вычислений и методы анализа эффективности. Показатели эффективности параллельных вычислений: ускорение, эффективность, масштабируемость. Модель вычислений в виде графа "операции-операнды". Анализ модели: определение времени выполнения параллельного метода, оценка максимально достижимого распараллеливания, выбор вариантов распределения вычислительной нагрузки. Агрегация модели вычислений.
- Анализ коммуникационной трудоемкости параллельных алгоритмов. Критерии оценки топологии сети. Алгоритмы маршрутизации и методы передачи данных. Типовые операции взаимодействия. Методы логического представления топологии сети. Оценка времени передачи данных для кластерных систем.
- Технология разработки параллельных программ для многопроцессорных систем с распределенной памятью (стандарт передачи сообщений MPI). Общая характеристика стандарта MPI. Режимы передачи данных. Коллективные операции. Конструирование производных типов данных. Управление процессами. Создание логических топологий. Примеры: матричные вычисления, решение уравнений в частных производных.
- Модели функционирования параллельных программ. Представление параллельной программы как системы параллельно выполняемых процессов. Обеспечение взаимоисключения при использовании разделяемых ресурсов. Понятие семафоров и монитора. Моделирование состояния программы в виде графа "процесс-ресурс". Анализ модели: обнаружение и исключение тупиковых ситуаций. Применение сетей Петри. Типовые задачи взаимоисключения: проблема "производитель-потребитель", задача "обедающие философы" и др.
- Параллельные численные алгоритмы для решения типовых задач вычислительной математики. Матричные вычисления (умножение матриц, транспонирование, решение систем линейных уравнений). Сортировка. Обработка графов. Оптимизация.
- Технология разработки параллельных программ для многопроцессорных систем с общей памятью (стандарт OpenMP). Общая характеристика стандарта OpenMP. Создание параллельных областей. Разделение вычислительной нагрузки между потоками. Работа с данными. Синхронизация. Функции и переменные окружения. Сравнительная характеристика подходов параллельного программирования для систем с распределенной и общей памятью.
Лабораторный практикум
Часть 1. Методы параллельного программирования для вычислительных систем с распределенной памятью
- Разработка параллельных программ с использованием интерфейса передачи сообщений MPI.
- Практикум по разработке параллельных алгоритмов и программ для решения задач вычислительной математики.
- Практикум по использованию библиотек параллельных методов ParaLib для решения задач вычислительной математики.
- Практикум по оценке эффективности параллельных методов для разных топологий многопроцессорных вычислительных систем.
Часть 2. Методы параллельного программирования для вычислительных систем с общей памятью
- Разработка параллельных программ с использованием технологии ОрепМР.
- Практикум по разработке параллельных алгоритмов и программ для решения задач вычислительной математики.
- Практикум по методам параллельных вычислений для решения задач дифференциальных уравнений в частных производных.
- Практикум по использованию библиотек параллельных методов для решения сложных научно-технических задач.
- Практикум по методам параллельных вычислений для решения задачмногомерной многоэкстремальной оптимизации.
Литература
а) основная литература:
- Гергель В.П. Высокопроизводительные вычисления для многопроцессорных многоядерных систем. — М.: Издательство Московского университета, 2010. – 544 с.
- Корняков К. В., Кустикова В. Д., Мееров И. Б., Сиднев А. А., Сысоев А. В., Шишков А. В. Инструменты параллельного программирования в системах с общей памятью : учебник / под ред. проф. В. П. Гергеля. — М.: Издательство Московского университета, 2010. 272 с.
- Гергель В.П. Теория и практика параллельных вычислений. – М.: Интернет-Университет Информационных технологий; Бином. Лаборатория Знаний, 2007.
- Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2002.
- Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем. – Н.Новгород, ННГУ, 2001.
б) дополнительная литература:
- Гергель В.П. Новые языки и технологии параллельного программирования. — М.: Издательство Московского университета, 2012. 434 с.
- Линев А.В., Боголепов Д.К., Бастраков С.И., Технологии параллельного программирования для процессоров новых архитектур: учебник / под ред. В.П. Гергеля. — М.: Издательство Московского университета, 2010. – 160 с.
в) информационные ресурсы сети Интернет:
- Информационно-аналитические материалы по параллельным вычислениям (http://www.parallel.ru
- Материалы курса в полном объеме представлены на сайте http://www.software.unn.ac.ru/ccam/?doc=14.
- Курс в составе библиотеки учебных материалов русскоязычного сайта компании Microsoft – см. http://www.microsoft.com/Rus/Msdnaa/Curricula. Вариант курса на английском языке представлен на сайте компании Microsoft https://www.academicresourcecenter.net/curriculum/pfv.aspx?ID=6594
Курс можно изучить и сдать экзамен дистанционно при помощи сайта Интернет-университета информационных технологий (http://www.intuit.ru/department/calculate/paralltp) и в системе дистанционного обучения Нижегородского университета (https://e-learning.unn.ru).
Отчетность
- Семестр 5: Зач
- Семестр 6: Экз