• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Book
ECPPM 2021 – eWork and eBusiness in Architecture, Engineering and Construction

Edited by: Vitaly Semenov, R. J. Scherer.

CRC Press, 2021.

Article
Equivalence checking and intersection of deterministic timed finite state machines

Bresolin D., El-Fakih K., Villa T. et al.

Formal Methods in System Design. 2022.

Book chapter
City and building information modelling using IFC standard

Shutkin V., Morozkin N., Zolotov V. et al.

In bk.: ECPPM 2021 – eWork and eBusiness in Architecture, Engineering and Construction. CRC Press, 2021. P. 406-413.

Working paper
Preventive Model-based Verification and Repairing for SDN Requests

Burdonov I., Kossachev A., Nina Yevtushenko et al.

arxiv.org. Computer Science. Cornell University, 2020

Parallel programming

2020/2021
Academic Year
RUS
Instruction in Russian
5
ECTS credits
Type:
Compulsory course
When:
1 year, 1, 2 module

Instructors

Монаков Александр Владимирович

Монаков Александр Владимирович

Программа дисциплины

Аннотация

Курс "Параллельное программирование" посвящен изучению теории и методов практической разработки параллельных программ для современных архитектур компьютеров. Особенностью курса является комплексное рассмотрение проблем параллелизма, как на уровне библиотек, предоставляемых прикладным программистам, так и на уровне близком к архитектуре микропроцессоров и графических ускорителей, что более важно для системных программистов.
Цель освоения дисциплины

Цель освоения дисциплины

  • Целью курса является формирование у студентов теоретических знаний и навыков разработки, исследования производительности, оптимизации и отладки параллельных программ для современных архитектур процессоров и графических акселераторов.
Планируемые результаты обучения

Планируемые результаты обучения

  • Иметь представление о подходах к обеспечению параллелизма
  • Знать базовые принципы VLIW и Modulo scheduling.
  • Знать базовые принципы векторного параллелизма
  • Знать базовые принципы вычисления с плавающей точкой
  • Знать базовые принципы оптимизации доступа к памяти
  • Знать базовые принципы параллелизма при использовании многоядерных CPU
  • Знать базовые принципы межконтекстного взаимодействия
  • Знать базовые принципы OpenMP
  • Знать базовые принципы анализа производительности CPU
  • Знать базовые принципы программирования графических акселераторов
  • Знать базовые принципы CUDA
  • Знать базовые принципы OpenACC и OpenMP
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Уровни параллелизма в современных компьютерах. Теоретические подходы: законы Амдаля, Густафсона. Оценки пиковой производительности. 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-кода для акселераторов.
Элементы контроля

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

  • неблокирующий Контрольная работа (КР)
  • неблокирующий Домашнее задание (ДЗ)
  • неблокирующий Экзамен (Э)
Промежуточная аттестация

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

  • Промежуточная аттестация (2 модуль)
    0.3 * Домашнее задание (ДЗ) + 0.3 * Контрольная работа (КР) + 0.4 * Экзамен (Э)
Список литературы

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

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

  • McKenney, P. E. (2017). Is Parallel Programming Hard, And, If So, What Can You Do About It? (v2017.01.02a). Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.8A6CB160

Рекомендуемая дополнительная литература

  • Allen, R., & Kennedy, K. (2001). Optimizing Compilers for Modern Architectures : A Dependence-based Approach (Vol. 1st ed). San Francisco: Elsevier. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=83617
  • Chapman, B., Pas, R. van der, & Jost, G. (2008). Using OpenMP : Portable Shared Memory Parallel Programming. Cambridge, Mass: The MIT Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=211305
  • Gregg, B. (2014). Systems Performance : Enterprise and the Cloud. Upper Saddle River, NJ: Prentice Hall. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1599877
  • Kirk, D., & Hwu, W. (2013). Programming Massively Parallel Processors : A Hands-on Approach (Vol. 2nd ed). San Francisco, Calif: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=516192
  • W. Kahan, & Winston S. Churchill. (1981). Why Do We Need a Floating-Point Arithmetic Standard? Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.5F5D3C27