Параллельное программирование

Кафедра программной инженерии

Специальность: Программная инженерия

Преподаватель: Гергель В.П.

Цель данной дисциплины состоит в изучении математических моделей, методов и технологий параллельного программирования для многопроцессорных и многоядерных вычислительных систем в объеме, достаточном для успешного начала работ в области параллельного программирования. Излагаемый набор знаний и умений составляет теоретическую основу для методов разработки сложных программ. Изучение курса поддерживается расширенным лабораторным практикумом.

 

 

Содержание

  1. Цели и задачи введения параллельной обработки данных.
    Важность проблематики параллельных вычислений.
  2. Принципы построения параллельных вычислительных систем. Обзор современных параллельных вычислительных систем. Классификация и оценка производительности. Понятие кластерных систем.
  3. Модели вычислений и методы анализа эффективности. Показатели эффективности параллельных вычислений: ускорение, эффективность, масштабируемость. Модель вычислений в виде графа "операции-операнды". Анализ модели: определение времени выполнения параллельного метода, оценка максимально достижимого распараллеливания, выбор вариантов распределения вычислительной нагрузки. Агрегация модели вычислений.
  4. Анализ коммуникационной трудоемкости параллельных алгоритмов. Критерии оценки топологии сети. Алгоритмы маршрутизации и методы передачи данных. Типовые операции взаимодействия. Методы логического представления топологии сети. Оценка времени передачи данных для кластерных систем.
  5. Технология разработки параллельных программ для многопроцессорных систем с распределенной памятью (стандарт передачи сообщений MPI). Общая характеристика стандарта MPI. Режимы передачи данных. Коллективные операции. Конструирование производных типов данных. Управление процессами. Создание логических топологий. Примеры: матричные вычисления, решение уравнений в частных производных.
  6. Модели функционирования параллельных программ. Представление параллельной программы как системы параллельно выполняемых процессов. Обеспечение взаимоисключения при использовании разделяемых ресурсов. Понятие семафоров и монитора. Моделирование состояния программы в виде графа "процесс-ресурс". Анализ модели: обнаружение и исключение тупиковых ситуаций. Применение сетей Петри. Типовые задачи взаимоисключения: проблема "производитель-потребитель", задача "обедающие философы" и др.
  7. Параллельные численные алгоритмы для решения типовых задач вычислительной математики. Матричные вычисления (умножение матриц, транспонирование, решение систем линейных уравнений). Сортировка. Обработка графов. Оптимизация.
  8. Технология разработки параллельных программ для многопроцессорных систем с общей памятью (стандарт OpenMP). Общая характеристика стандарта OpenMP. Создание параллельных областей. Разделение вычислительной нагрузки между потоками. Работа с данными. Синхронизация. Функции и переменные окружения. Сравнительная характеристика подходов параллельного программирования для систем с распределенной и общей памятью.

Лабораторный практикум

Часть 1. Методы параллельного программирования для вычислительных систем с распределенной памятью

  1. Разработка параллельных программ с использованием интерфейса передачи сообщений MPI.
  2. Практикум по разработке параллельных алгоритмов и программ для решения задач вычислительной математики.
  3. Практикум по использованию библиотек параллельных методов ParaLib для решения задач вычислительной математики.
  4. Практикум по оценке эффективности параллельных методов для разных топологий многопроцессорных вычислительных систем.

Часть 2. Методы параллельного программирования для вычислительных систем с общей памятью

  1. Разработка параллельных программ с использованием технологии ОрепМР.
  2. Практикум по разработке параллельных алгоритмов и программ для решения задач вычислительной математики.
  3. Практикум по методам параллельных вычислений для решения задач дифференциальных уравнений в частных производных.
  4. Практикум по использованию библиотек параллельных методов для решения сложных научно-технических задач.
  5. Практикум по методам параллельных вычислений для решения задачмногомерной многоэкстремальной оптимизации.

Литература

а) основная литература:

  1. Гергель В.П. Высокопроизводительные вычисления для многопроцессорных многоядерных систем. — М.: Издательство Московского университета, 2010. – 544 с.
  2. Корняков К. В., Кустикова В. Д., Мееров И. Б., Сиднев А. А., Сысоев А. В., Шишков А. В. Инструменты параллельного программирования в системах с общей памятью : учебник / под ред. проф. В. П. Гергеля. — М.: Издательство Московского университета, 2010. 272 с.
  3. Гергель В.П. Теория и практика параллельных вычислений. – М.: Интернет-Университет Информационных технологий; Бином. Лаборатория Знаний, 2007.
  4. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2002.
  5. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем. – Н.Новгород, ННГУ, 2001.

б) дополнительная литература:

  1. Гергель В.П. Новые языки и технологии параллельного программирования. — М.: Издательство Московского университета, 2012. 434 с.
  2. Линев А.В., Боголепов Д.К., Бастраков С.И., Технологии параллельного программирования для процессоров новых архитектур: учебник / под ред. В.П. Гергеля. — М.: Издательство Московского университета, 2010. – 160 с.

в) информационные ресурсы сети Интернет:

  1. Информационно-аналитические материалы по параллельным вычислениям (http://www.parallel.ru
  2. Материалы курса в полном объеме представлены на сайте http://www.software.unn.ac.ru/ccam/?doc=14.
  3. Курс в составе библиотеки учебных материалов русскоязычного сайта компании 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: Экз