Магистратура
2024/2025![Цель освоения дисциплины](/f/src/global/i/edu/objectives.svg)
![Планируемые результаты обучения](/f/src/global/i/edu/results.svg)
![Содержание учебной дисциплины](/f/src/global/i/edu/sections.svg)
![Элементы контроля](/f/src/global/i/edu/controls.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Компиляторные технологии 1
Статус:
Курс обязательный (Системное программирование)
Направление:
09.04.04. Программная инженерия
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Мельник Дмитрий Михайлович
Прогр. обучения:
Системное программирование
Язык:
русский
Кредиты:
6
Программа дисциплины
Аннотация
В курсе «Компиляторные технологии» рассматриваются основные принципы построения современных оптимизирующих компиляторов, причем основное внимание уделяется именно оптимизации кода — начиная от генерации внутреннего представления программы, анализа потока данных, различных этапов анализа и оптимизации кода, и заканчивая распределением регистров для конкретной целевой архитектуры и генерации для нее машинного кода. В ходе курса подробно рассматриваются алгоритмы компиляторных оптимизаций, а также разбираются примеры их работы. Рассматриваемые в курсе алгоритмы составляют основу оптимизаций, применяемых в современных промышленных компиляторах, таких как Clang/LLVM и GCC.
Цель освоения дисциплины
- Компиляторные технологии применяются не только при разработке и модификации оптимизирующих компиляторов, но и при решении других проблем, для решения которых требуется глубокий анализ и трансформация программ: разработка наборов тестов для верификации программы, аудит программы для выявления дефектов (уязвимостей кода и «закладок», влияющих на работу программы и даже операционной системы, под управлением которой она выполняется), восстановление утраченной документации по тексту программы и др.
Планируемые результаты обучения
- Освоение новых методов в области оптимизирующей компиляции и интерпретации программ; в том числе методов адаптивной оптимизации и компиляции;
- Формирование практических навыков применения формальных методов при проектировании и разработке программного обеспечения
Содержание учебной дисциплины
- Обзор системных и прикладных задач, для решения которых применяются компиляторные технологии.
- Исключение частичной избыточности с помощью анализа потока данных
- Граф зависимостей программы и его применения. Слайсинг
- Оптимизация параллелизма и локальности данных. Иерархический параллелизм вычислительных систем.
- Распараллеливание гнезд циклов. Полиэдральное представление гнезда циклов. Пространство итераций. Пространство данных. Пространство процессоров. Аффинные индексы массивов.
- Распараллеливание гнезд циклов для многопроцессорных вычислительных систем. Использование стандартного пакета MPI.
- Распространение условных констант с применением SSA-формы
- Межпроцедурная и межмодульная оптимизация.
- Адаптивная оптимизация программ. Машинное обучение оптимизатора.
- Символьное выполнение программ. Предикаты пути и предикаты безопасности
- Виртуальные машины и интерпретаторы. Динамическая компиляция. Многоуровневая динамическая компиляция. Эффективные техники оптимизации динамическим компилятором.
- Динамическая компиляция. Динамический компилятор с адаптивной оптимизацией.
- Методы профилирования выполняемого кода.
- Статическое и динамическое инструментирование кода.
- Обзор методов распознавания программ
Элементы контроля
- Контрольные работыНаправлены на закрепление лекционного и семинарского материалов.
- ЭкзаменОбщая проверка знаний по курсу
Промежуточная аттестация
- 2024/2025 4th moduleFinal = 0.8*Экзамен + 0.2*5*Max(2, КР_1 + КР_2) * каждая из оценок за КР_1 и КР_2 – числа в интервале [0; 2]
Список литературы
Рекомендуемая основная литература
- Keith Cooper, & Linda Torczon. (2004). Engineering a Compiler. Morgan Kaufmann.
Рекомендуемая дополнительная литература
- Richard R. Brooks. (2013). Introduction to Computer and Network Security : Navigating Shades of Gray. Chapman and Hall/CRC.
- Shankar, P., & Srikant, Y. N. (2008). The Compiler Design Handbook : Optimizations and Machine Code Generation, Second Edition (Vol. 2nd ed). Boca Raton: CRC Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=209423