• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Магистратура 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