Магистратура
2020/2021
Программирование распределенных систем
Статус:
Курс по выбору (Программирование и анализ данных)
Направление:
01.04.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Когда читается:
1-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Преподаватели:
Кузнецов Антон Михайлович
Прогр. обучения:
Программирование и анализ данных
Язык:
русский
Кредиты:
4
Контактные часы:
28
Программа дисциплины
Аннотация
Целью освоения дисциплины является формирование у студентов теоретических знаний и практических навыков программирования параллельных и распределенных систем. Существенное внимание уделяется вопросам, связанным с освоением базовых знаний в области архитектуры современных многопроцессорных вычислительных систем, параллельной обработки информации, технологий организации параллельных вычислений на многопроцессорных вычислительных комплексах с распределенной или общей оперативной памятью. В результате освоения дисциплины студент должен: − Знать основные подходы к разработке параллельных программ; основные технологии и модели параллельного программирования; методы создания параллельных программ для типичных задач многопоточного программирования. − Уметь создавать параллельные программы для вычислительных систем с распределенной, общей оперативной памятью; проводить распараллеливание вычислительных алгоритмов; строить модель выполнения параллельных программ; оценивать эффективности параллельных вычислений; анализировать сложность вычислений и возможность распараллеливания разрабатываемых алгоритмов; применять общие схемы разработки параллельных программ для реализаций собственных алгоритмов; оценивать основные параметры получаемых параллельных программ, таких как ускорение, эффективность и масштабируемость. − Иметь навыки (приобрести опыт) создания параллельные программы для вычислительных систем с распределенной, общей оперативной памятью; построения параллельных аналогов вычислительных алгоритмов.
Цель освоения дисциплины
- формирование у студентов теоретических знаний и практических навыков программирования параллельных и распределенных систем
Планируемые результаты обучения
- Знает основные характеристики, оцениваемые при разработки многопоточных и распределенных приложений. Оценивает технические требования к вычислительному узлу для распределенного приложения. Оптимизирует производительность распределенных приложений.
- Знает различные библиотеки для разработки многопоточных приложений на различных языках программирования. Правильно выбирает фреймворк и архитектуру для разработки таких приложений. Проводит статический анализ параллельного кода.
- Знает алгоритмические подходы к уменьшению задержек при синхронизации на различных структурах данных. Использует средства асинхронной коммуникации приложений. Строит параллельные аналоги вычислительных алгоритмов.
- Знает основные lock-free алгоритмы и структуры данных для различных задач параллельного программирования. Реализует алгоритмы. Разрабатывает собственные lock-free алгоритмы на основе имеющихся аналогов
Содержание учебной дисциплины
- Введение. Создание потоков. Синхронизация. Атомарные снимки регистров
- Характерные ошибки, профилирование, пулы потоков и шаблоны
- Кластеры, сети Петри. Модели памяти, асинхронный ввод/вывод
- Линеаризуемость, lock-free структуры данных
Элементы контроля
- Домашнее задание 1
- Домашнее задание 2
- Домашнее задание 3
- Домашнее задание 4
- Устный экзаменЭкзамен проводится на платформе Zoom. Экзамен проводится в устной форме (опрос по материалам курса). По просьбе преподавателя студент должен быть готов выполнить некоторые задания в письменном виде, после чего сфотографировать и выслать на почту преподавателю. К экзамену необходимо подключиться согласно расписанию, высланному преподавателем на корпоративные почты студентов накануне экзамена. Компьютер студента должен удовлетворять требованиям: наличие рабочей камеры и микрофона, поддержка платформы Zoom. Для участия в экзамене студент обязан: выбрать себе имя в Zoom совпадающее с его именем и фамилией, явиться на экзамен согласно точному расписанию, при ответе включить камеру и микрофон. Во время экзамена студентам запрещается выключать камеру. Ипользование конспектов или других справочных материалов допускается только с разрешения преподавателя. Кратковременным нарушением связи во время экзамена считается нарушение связи менее 5 минут. Долговременным нарушением связи во время экзамена считается нарушение 5 минут и более. При долговременном нарушении связи возможность продолжения студентом участие в экзамене определяется преподавателем. Процедура пересдачи подразумевает использование усложненных заданий.
Промежуточная аттестация
- Промежуточная аттестация (4 модуль)0.125 * Домашнее задание 1 + 0.125 * Домашнее задание 2 + 0.125 * Домашнее задание 3 + 0.125 * Домашнее задание 4 + 0.5 * Устный экзамен
Список литературы
Рекомендуемая основная литература
- Friesen, J. (2015). Java Threads and the Concurrency Utilities. [Berkeley, CA]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1118905
Рекомендуемая дополнительная литература
- Малявко А. А. - ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ОСНОВЕ ТЕХНОЛОГИЙ OPENMP, MPI, CUDA 2-е изд., испр. и доп. Учебное пособие для академического бакалавриата - М.:Издательство Юрайт - 2019 - 129с. - ISBN: 978-5-534-11827-8 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/parallelnoe-programmirovanie-na-osnove-tehnologiy-openmp-mpi-cuda-446247