• 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
A Survey of Software Dynamic Analysis Methods
In press

Kuliamin V.V.

Programming and Computer Software. 2024. Vol. 50. P. 90-114.

Book chapter
Graph Neural Network for Crawling Target Nodes in Social Networks

Danil Shaikhelislamov, Denis Turdakov.

In bk.: 2022 Ivannikov Ispras Open Conference (ISPRAS). IEEE, 2022. P. 31-36.

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

Compiler Technologies 1

2024/2025
Academic Year
RUS
Instruction in Russian
6
ECTS credits
Type:
Mago-Lego
When:
3, 4 module

Instructor

Мельник Дмитрий Михайлович

Мельник Дмитрий Михайлович

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

Аннотация

В курсе «Компиляторные технологии» рассматриваются основные принципы построения современных оптимизирующих компиляторов, причем основное внимание уделяется именно оптимизации кода — начиная от генерации внутреннего представления программы, анализа потока данных, различных этапов анализа и оптимизации кода, и заканчивая распределением регистров для конкретной целевой архитектуры и генерации для нее машинного кода. В ходе курса подробно рассматриваются алгоритмы компиляторных оптимизаций, а также разбираются примеры их работы. Рассматриваемые в курсе алгоритмы составляют основу оптимизаций, применяемых в современных промышленных компиляторах, таких как Clang/LLVM и GCC.
Цель освоения дисциплины

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

  • Компиляторные технологии применяются не только при разработке и модификации оптимизирующих компиляторов, но и при решении других проблем, для решения которых требуется глубокий анализ и трансформация программ: разработка наборов тестов для верификации программы, аудит программы для выявления дефектов (уязвимостей кода и «закладок», влияющих на работу программы и даже операционной системы, под управлением которой она выполняется), восстановление утраченной документации по тексту программы и др.
Планируемые результаты обучения

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

  • Освоение новых методов в области оптимизирующей компиляции и интерпретации программ; в том числе методов адаптивной оптимизации и компиляции;
  • Формирование практических навыков применения формальных методов при проектировании и разработке программного обеспечения
Содержание учебной дисциплины

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

  • Обзор системных и прикладных задач, для решения которых применяются компиляторные технологии.
  • Исключение частичной избыточности с помощью анализа потока данных
  • Граф зависимостей программы и его применения. Слайсинг
  • Оптимизация параллелизма и локальности данных. Иерархический параллелизм вычислительных систем.
  • Распараллеливание гнезд циклов. Полиэдральное представление гнезда циклов. Пространство итераций. Пространство данных. Пространство процессоров. Аффинные индексы массивов.
  • Распараллеливание гнезд циклов для многопроцессорных вычислительных систем. Использование стандартного пакета MPI.
  • Распространение условных констант с применением SSA-формы
  • Межпроцедурная и межмодульная оптимизация.
  • Адаптивная оптимизация программ. Машинное обучение оптимизатора.
  • Символьное выполнение программ. Предикаты пути и предикаты безопасности
  • Виртуальные машины и интерпретаторы. Динамическая компиляция. Многоуровневая динамическая компиляция. Эффективные техники оптимизации динамическим компилятором.
  • Динамическая компиляция. Динамический компилятор с адаптивной оптимизацией.
  • Методы профилирования выполняемого кода.
  • Статическое и динамическое инструментирование кода.
  • Обзор методов распознавания программ
Элементы контроля

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

  • неблокирующий Контрольные работы
    Направлены на закрепление лекционного и семинарского материалов.
  • неблокирующий Экзамен
    Общая проверка знаний по курсу
Промежуточная аттестация

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

  • 2024/2025 4th module
    Final = 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

Авторы

  • Буцкая Евгения Александровна
  • Мельник Дмитрий Михайлович