Магистратура
2026/2027



Параллельное программирование
ID 1120977
Статус:
Курс обязательный (Системное программирование)
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
6
Контактные часы:
56
Программа дисциплины
Аннотация
Курс "Параллельное программирование" посвящен изучению теории и методов практической разработки параллельных программ для современных архитектур компьютеров. Особенностью курса является комплексное рассмотрение проблем параллелизма, как на уровне библиотек, предоставляемых прикладным программистам, так и на уровне близком к архитектуре микропроцессоров и графических ускорителей, что более важно для системных программистов.
Цель освоения дисциплины
- Целью курса является формирование у студентов теоретических знаний и навыков разработки, исследования производительности, оптимизации и отладки параллельных программ для современных архитектур процессоров и графических акселераторов.
Планируемые результаты обучения
- Знать базовые принципы CUDA
- Знать базовые принципы OpenACC и OpenMP
- Знать базовые принципы OpenMP
- Знать базовые принципы VLIW и Modulo scheduling.
- Знать базовые принципы анализа производительности CPU
- Знать базовые принципы векторного параллелизма
- Знать базовые принципы вычисления с плавающей точкой
- Знать базовые принципы межконтекстного взаимодействия
- Знать базовые принципы оптимизации доступа к памяти
- Знать базовые принципы параллелизма при использовании многоядерных CPU
- Знать базовые принципы программирования графических акселераторов
- Иметь представление о подходах к обеспечению параллелизма
Содержание учебной дисциплины
- Уровни параллелизма в современных компьютерах. Теоретические подходы: законы Амдаля, Густафсона. Оценки пиковой производительности. Memory wall. Performance/portability tradeoff.
- Параллелизм в пределах одного контекста выполнения. Параллелизм на уровне команд. VLIW. SIMD. Delayed branches. Компиляторные преобразования повышающие ILP. Modulo scheduling.
- Векторный параллелизм (SIMD). Ограничения компиляторного анализа. Возможности и ограничения явной векторизации через интринсики. Компромисс между производительностью и переносимостью. Структурирование кода для облегчения компиляторного анализа.
- Вычисления с плавающей точкой. Принципы IEEE-754. Ограничения и возможности компиляторной трансляции.
- Иерархия кешей. Оптимизация доступа к памяти. Префетчинг. Cache-aware и cache-oblivious алгоритмы. Возможные компиляторные оптимизации.
- Параллелизм на многоядерных CPU. Кеши и поддержка согласованности памяти. False sharing.
- Низкоуровневые примитивы межконтекстного взаимодействия: атомарные операции, семафоры, futex. Поддержка на уровне языка Си и особенности компиляторной поддержки.
- OpenMP. Классическая функциональность: параллелизм на уровне нитей. Анализ и трансляция OpenMP в компиляторе.
- Анализ производительности на CPU. Основные инструменты разработчика: valgrind (cachegrind), perf, ocperf. Использование компиляторных возможностей.
- Параллелизм на графических акселераторах. Явные интерфейсы программирования: CUDA, OpenCL. Инструменты разработки в CUDA.
- Оптимизация в CUDA. Оптимизация доступа к памяти. Компромисс между ILP, регистровым давлением, TLP. Warp-synchronous programming. Сравнение с подходами, применяемыми на CPU.
- OpenACC и OpenMP 4.0: параллелизм для акселераторов. Подходы к трансляции кода в различных реализациях. Специализация OpenMP-кода для акселераторов.
Список литературы
Рекомендуемая основная литература
- Введение в параллельное программирование на основе технологий MPI и OpenMP - Земляная Е. В., Башашин М. В. - Государственный университет «Дубна» - 978-5-89847-696-0 - 2023 - русский - https://e.lanbook.com/book/369416 - ЛАНЬ - 369416
- Малявко, А. А. Параллельное программирование на основе технологий openmp, cuda, opencl, mpi : учебник для вузов / А. А. Малявко. — 3-е изд., испр. и доп. — Москва : Издательство Юрайт, 2026. — 135 с. — (Высшее образование). — ISBN 978-5-534-14116-0. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/585284 (дата обращения: 02.07.2026).
- Параллельное программирование - Юрина Т. А. - Сибирский государственный автомобильно-дорожный университет - - - 2023 - русский - https://e.lanbook.com/book/407159 - ЛАНЬ - 407159
- Параллельное программирование. Практикум - Стуколов С. В. - Кемеровский государственный университет - 978-5-8353-2723-2 - 2020 - русский - https://e.lanbook.com/book/173547 - ЛАНЬ - 173547
- Федотов И.Е. - Параллельное программирование. Модели и приемы - 978-5-91359-222-4 - СОЛОН-Пресс - 2020 - https://znanium.ru/catalog/document?id=392257 - 392257 - ZNANIUM
Рекомендуемая дополнительная литература
- Многоядерные процессоры и параллельное программирование - Филиппов Ф. В., Губин А. Н. - Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича - - - 2013 - русский - https://e.lanbook.com/book/180060 - ЛАНЬ - 180060