Методы и алгоритмы параллельного программирования

Вайс Юрий Андреевич

*InstructorProfile(zh-CN)*

内容描述: Курс дает представление о моделировании и анализе параллельных вычислений, принципах разработки параллельных алгоритмов и программ, технологиях и системах разработки параллельных программ, параллельных численных алгоритмах. По окончании курса магистрант способен строить модель выполнения параллельных программ, оценивать эффективности параллельных вычислений, анализировать сложность вычислений и возможность распараллеливания разрабатываемых алгоритмов, оценивать основные параметры программ.

贷款数: 5

Пререквизиты:

  • Современные среды и языки программирования
  • Алгоритмы, структуры данных и программирование

*СomplexityDiscipline(zh-CN)*:

*TypesOfClasses(zh-CN)* *hours(zh-CN)*
*Lectures(zh-CN)* 15
*PracticalWork(zh-CN)*
*LaboratoryWork(zh-CN)* 30
*srop(zh-CN)* 30
*sro(zh-CN)* 75
*FormOfFinalControl(zh-CN)* экзамен
*FinalAssessment(zh-CN)*

零件: Компонент по выбору

循环次数: Профилирующие дисциплины

Цель
  • Изучении математических моделей, методов и технологий параллельного программирования для многопроцессорных вычислительных систем (МВС) в объеме, достаточном для успешного начала работ в области параллельного программирования.
Задача
  • Формирование у студентов теоретических знаний и практических навыков разработки алгоритмов и программ и их реализации на (МВС) (суперкомпьютерах).
Результат обучения: знание и понимание
  • Методы параллельных вычислений для задач вычислительной математики.
  • Основные подходы к разработке параллельных программ
Результат обучения: применение знаний и пониманий
  • Строить модель выполнения параллельных программ.
  • Применять общие схемы разработки параллельных программ для реализаций собственных алгоритмов.
Результат обучения: формирование суждений
  • Анализировать сложность вычислений и возможность распараллеливания разрабатываемых алгоритмов.
  • Оценивать основные параметры получаемых параллельных программ, таких как ускорение, эффективность и масштабируемость.
  • Способность разрабатывать и анализировать концептуальные и теоретические модели решаемых научных проблем и задач.
Результат обучения: коммуникативные способности
  • Развивать коммуникативные способности, в том числе владение минимум одним иностранным языком для работы с открытыми ресурсами интернет и навыки межличностной и групповой коммуникации для делового взаимодействия в рамках ИТ проектов и других видов деятельности.
Результат обучения: навыки обучения или способности к учебе
  • Навык разработки параллельных программ для МВС с применением технологий MPI, OpenMP.
*TeachingMethods(zh-CN)*

Модульно-блочные технологии. В основе модульный или циклический тип обучения, а также информационно-коммуникационный (в том числе дистанционные образовательные технологии). Ведущими формами обучения выступают лекции, а методами эвристический, программированный и объяснительно-иллюстративный. Основными средствами диагностики являются итоговые письменные работы и выполнение работ по пройденным темам и разделам.

Темы лекционных занятий
  • Введение в параллельные вычисления. Архитектура ВС. Классификация вычислительных систем. Пути достижения параллелизма. Параллелизм на уровне команд, потоков, приложений. Анализ эффективности параллельных вычислений. Закон Амдала.
  • Проблемы разработки параллельных приложений. Декомпозиция, выявление информационных зависимостей между подзадачами, масштабирование подзадач и балансировка нагрузки для каждого процессора.
  • Работа с потоками. Создание потоков, ожидания завершения потоков. Пул потоков ThreadPool.
  • Средства синхронизации. Критическая секция. Конструкция Lock. Атомарные операторы. Класс Interlocked Семафоры. Semaphore и SemaphoreSlim Классы Monitor и Mutex Сообщения ManualResetEvent, AutoResetEvent Классы SpinLock и SpinWait
  • Конкурентные коллекции. Потокобезопасные коллекции пространства имен System.Collections.Concurrent.
  • Работа с задачами. Основные возможности TPL: асинхронные задачи, императивный параллелизм, декларативный параллелизм Работа с задачами. Вложенные задачи. Задачи-продолжения. Обработка исключений в задачах. Механизм отмены задач
  • Шаблоны параллелизма Parallel Параллельные циклы Parallel.For, Parallel.ForEach Дополнительные возможности циклов: досрочный выход из цикла, пакетная обработка диапазонов, реализация агрегированных вычислений. Методы Parallel.Invoke для реализации алгоритмов Эразделяй-и-властвуй".
  • Технология PLINQ Параллелизм PLINQ-запросов. Анализ оптимальности. Вынужденный параллелизм. Упорядочивание элементов в PLINQ-запросах Разделение данных при выполнении PLINQ-запросов: разделение по диапазону, блочное разделение, хеш-секционирование. Буферизация выполнения PLINQ-запросов. Агрегированные вычисления с помощью PLINQ-запросов.
  • Планировщик задач Организация планировщика: глобальная очередь задач, локальные очереди рабочих потоков. Стратегии планировщика: WorkStealing, Inlined threading, Inject threads Опции задач: LongRunning, PreferFairness.
  • Типовые модели параллельных приложений Шаблон MapReduce. Реализация с помощью PLINQ-запросов. Шаблон Scan/Fold. Реализация с помощью Parallel.For. Распараллеливание рекурсивных алгоритмов.
Основная литература
  • Антонов А.С. Технологии параллельного программирования MPI и Open MP: Учебное пособие для вузов. – М.: Изд-во МГУ, 2012. – 344 с.
  • Старченко А.В., Данилкин Е.А., и др. Практикум по методам параллельных вычислений: Учебник. – М.: Изд-во МГУ, 2010. – 200 с.
  • Волосова А.В. Параллельные методы и алгоритмы [Электронный ресурс]: учебное пособие/ А.В. Волосова. ‒ М.: МАДИ, Электронные текстовые и графические данные (5,35 Мбайт). 2020. – 176 с.
  • Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ – Петербург, 2002. - 608 с.
Дополнительная литература
  • Якобовский М. В. Введение в параллельные методы решения задач: Учебное пособие / Предисл.: В. А. Садовничий. – М.: Издательство Московского университета, 2013. – 328 с., илл
  • Боресков А.В., Харламов А.А. Параллельные вычисления на GPU. Архитектура и программная модель CUDA: Учеб. пособие. – М.: Изд. МГУ, 2012. – 336 с.
  • Сандерс Дж., Кэндрот Э. Технология CUDA в примерах: введение в программирование графических процессоров. – М.: ДМК Пресс, 2013.– 232 с.
  • Гергель В.П. Высокопроизводительные вычисления для многопроцессорных многоядерных систем: Учебник – М.: Изд-во МГУ, 2010. – 544 с
  • Боресков А.В., Харламов А.А. Основы работы с технологией CUDA. – М.: ДМК Пресс, 2011. – 231 с.
  • Воеводин В.В. Вычислительная математика и структура алгоритмов: Учебник. – М.: Изд-во МГУ, 2010. – 168 с.