• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Магистратура 2026/2027

Параллельное программирование

ID 1120977

Язык: русский
Кредиты: 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-кода для акселераторов.
Элементы контроля

Элементы контроля

  • неблокирующий Практические задания
  • неблокирующий Экзамен
Промежуточная аттестация

Промежуточная аттестация

  • 2026/2027 2nd module
    0.6 * Практические задания + 0.4 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • Введение в параллельное программирование на основе технологий 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

Авторы

  • Аветисян Арутюн Ишханович
  • Буцкая Евгения Александровна