Магистратура
2021/2022
Высокоуровневое и имитационное моделирование цифровых систем
Статус:
Курс по выбору (Программирование и анализ данных)
Направление:
01.04.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Когда читается:
2-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Тонких Андрей Александрович
Прогр. обучения:
Программирование и анализ данных
Язык:
русский
Кредиты:
4
Контактные часы:
56
Программа дисциплины
Аннотация
Количество ядер в современных процессорах уже измеряется десятками, в графических ускорителях – тысячами, а в суперкомпьютерах – миллионами. Многоядерные вычислительные системы широко применяются в машинном обучении, науках о материалах, биоинформатике, автоматизации проектирования, вычислительной химии и физике. Эффективно использовать эту значительную вычислительную мощность – непростая задача, требующая применения современных подходов, составляющих основное содержание предлагаемого спецкурса. Курс состоит из шести разделов. Первая вводная часть курса посвящена таким базовым концепциям параллельных вычислений, а также обзору современного устройства процессоров, ускорителей, способов организации оперативной памяти и высокопроизводительных сетей передачи данных. В небольшой второй части курса изучаются векторные устройства микропроцессоров и способам разработки программ для них. Основное внимание уделено архитектуре и программной поддержке технологии AVX. В третьей части рассматриваются средства разработки многопоточных программ. На примере различных алгоритмов изучаются такие инструменты, как POSIX Threads, современные расширения C++ (стандарты 11,14,17,20) для параллельных вычислений. Четвертая часть посвящена архитектуре и средствам разработки программ для графических ускорителей (GPU). Основное внимание уделяется программному стеку CUDA. Современные высокоуровневые средства разработки многопоточных программ для центральных процессоров и ускорителей рассматриваются в пятом разделе. Изучаются инструменты OpenMP, OpenACC и OpenCL. В пятой, заключительной части, рассматриваются технологии разработки программ для наиболее мощных высокопроизводительных систем – вычислительных кластеров. Основное внимание уделено самому распространенному средству разработки программ для таких систем – библиотеке MPI, интеграции MPI и CUDA. Является дисциплиной по выбору.
Цель освоения дисциплины
- Получение студентами знаний в области параллельных и распределенных вычислений, выработка у студентов навыков разработки, отладки и исследования производительности параллельных программ.
Планируемые результаты обучения
- Владеть базовыми средствами многопоточного программирования
- Владеть высокоуровневыми инструментами многопоточного программирования
- Владеть средствами разработки программ для систем с распределенной памятью
- Знать архитектуру, принципы разработки программ и инструменты для программирования графических ускорителей
- Знать определения и уметь вычислять базовые характеристики производительности параллельных алгоритмов
- Знать основные типы высокопроизводительных архитектур
Содержание учебной дисциплины
- Теоретические основы высокопроизводительных вычислений
- Введение в архитектуру микропроцессоров
- Базовые средства многопоточного программирования
- Программирование графических ускорителей
- Высокоуровневые средства многопоточного программирования
- Средства разработки программ для систем с распределенной памятью
Элементы контроля
- Лабораторная работа 1
- Лабораторная работа 2
- Лабораторная работа 3
- Лабораторная работа 4
- Экзамен
Промежуточная аттестация
- 2021/2022 учебный год 2 модуль0.125 * Лабораторная работа 2 + 0.125 * Лабораторная работа 1 + 0.125 * Лабораторная работа 4 + 0.125 * Лабораторная работа 3 + 0.5 * Экзамен
Список литературы
Рекомендуемая основная литература
- Petersen, W. P., & Arbenz, P. (2004). Introduction to Parallel Computing. Oxford: Oxford University Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=176951
- Биллиг, В. А. Параллельные вычисления и многопоточное программирование : учебное пособие / В. А. Биллиг. — 2-е изд. — Москва : ИНТУИТ, 2016. — 310 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100361 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Модели параллельного программирования: Практическое пособие / Федотов И.Е. - М.:СОЛОН-Пр., 2017. - 392 с.: 60x88 1/8. - (Библиотека профессионала) ISBN 978-5-91359-222-4
Рекомендуемая дополнительная литература
- Основы многопоточного и параллельного программирования: Учебное пособие / Карепова Е.Д. - Краснояр.:СФУ, 2016. - 356 с.: ISBN 978-5-7638-3385-0