Бакалавриат
2019/2020
Параллельное программирование
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс обязательный (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Когда читается:
3-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Преподаватели:
Калишенко Евгений Леонидович
Язык:
русский
Кредиты:
4
Контактные часы:
76
Программа дисциплины
Аннотация
Является дисциплиной базовой профильной части профессионального цикла. Данная дисциплина направлена на овладение навыками программирования параллельных и распределенных систем. Существенное внимание уделяется вопросам, связанным с освоением базовых знаний в области архитектуры современных многопроцессорных вычислительных систем, параллельной обработки информации, технологий организации параллельных вычислений на многопроцессорных вычислительных комплексах с распределенной или общей оперативной памятью В результате освоения дисциплины студент должен знать: - основные подходы к разработке параллельных программ - основные технологии и модели параллельного программирования. - методы создания параллельных программ для типичных задач многопоточного программирования уметь: создавать параллельные программы для вычислительных систем с распределенной, общей оперативной памятью; - проводить распараллеливание вычислительных алгоритмов; - строить модель выполнения параллельных программ; - оценивать эффективности параллельных вычислений;
Цель освоения дисциплины
- Целью освоения дисциплины «Параллельное программирование» является формирование у студентов теоретических знаний и практических навыков программирования параллельных и распределенных систем. Существенное внимание уделяется вопросам, связанным с освоением базовых знаний в области архитектуры современных многопроцессорных вычислительных систем, параллельной обработки информации, технологий организации параллельных вычислений на многопроцессорных вычислительных комплексах с распределенной или общей оперативной памятью.
Планируемые результаты обучения
- Знает принципы построения и исполнения параллельных приложений. Проектирует высокопроизводительн ые приложения с применением шаблонов параллельного программирования. Создаёт параллельные программы для вычислительных систем с распределенной, общей оперативной памятью.
- Знает основные ошибки многопоточного программирования. Знает профилирование многопоточных приложений. Знает различные библиотеки для разработки многопоточных приложений на различных языках программирования. Правильно выбирает фреймворк и архитектуру для разработки таких приложений. Проводит статический анализ параллельного кода.
- Знает алгоритмические подходы к уменьшению задержек при синхронизации на различных структурах данных. Использует средства асинхронной коммуникации приложений. Строит параллельные аналоги вычислительных алгоритмов.
- Знает основные lock- free алгоритмы и структуры данных для различных задач параллельного программирования. Реализует алгоритмы. Разрабатывает собственные lock-free алгоритмы на основе имеющихся аналогов.
Содержание учебной дисциплины
- Введение. Создание потоков. Синхронизация. Атомарные снимки регистров
- Характерные ошибки, профилирование, пулы потоков и шаблоны
- Кластеры, сети Петри. Модели памяти, асинхронный ввод/вывод
- Линеаризуемость, lock-free структуры данных
Элементы контроля
- Домашнее задание 1
- Домашнее задание 2
- Домашнее задание 3
- Домашнее задание 4
- Устный экзаменЭкзамен проводится в письменной форме с использованием синхронного прокторинга и состоит из ответов на два теоретических вопроса. Экзамен проводится на платформе Moodle (https://et.hse.ru), прокторинг на платформе Экзамус (hse.student.examus.net). К экзамену необходимо подключиться за 15 минут. На платформе Экзамус доступно тестирование системы. Компьютер студента должен удовлетворять следующим требованиям: https://elearning.hse.ru/data/2020/05/07/1544135594/Технические%20требования%20к%20ПК%20студента.pdf) Для участия в экзамене студент обязан: заранее зайти на платформу прокторинга, провести тест системы, включить камеру и микрофон, подтвердить личность. Время выполнения задания два часа. Время начала экзамена 11:00, завершение в 13:00. Во время выполнения студент записывает свой ответ на чистом листе бумаги, после фотографирует и высылает решение фотографию на электронную почту преподавателя. На отсылку решения дается 5 минут по завершении экзамена. Во время экзамена студентам запрещено: общаться (в социальных сетях, с людьми в комнате), списывать, использовать любые материалы. Во время экзамена студентам разрешено иметь при себе ручку и чистые листы бумаги, во время отправки решений разрешается использовать мобильный телефон или сканер. Кратковременным нарушением связи во время экзамена считается прерывание связи до 5 минут, если после этого студенту удается вернуться в ту же сессию работы с Экзамус. Долговременным нарушением связи во время экзамена считается прерывание связи 5 минут и более. При долговременном нарушении связи студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
Промежуточная аттестация
- Промежуточная аттестация (4 модуль)0.1 * Домашнее задание 1 + 0.1 * Домашнее задание 2 + 0.1 * Домашнее задание 3 + 0.1 * Домашнее задание 4 + 0.6 * Устный экзамен
Список литературы
Рекомендуемая основная литература
- Herlihy, M., & Shavit, N. (2012). The Art of Multiprocessor Programming, Revised Reprint. Burlington: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=460894
Рекомендуемая дополнительная литература
- Deng, Y. (2012). Applied Parallel Computing. Singapore: World Scientific. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=545490