Конструирование оптимизирующих компиляторов (9 сем ВМК) только СП (1157501)
Текст из файла
Программа по дисциплине:
«Конструирование оптимизирующих компиляторов
(дополнительные главы)»
Преподается на осеннем семестре 5 курса (магистратура)
для студентов кафедры системного программирования.
32 часа лекций + 16 часов семинарских (практических) занятий + 16 часов лабораторных занятий (2 задания).
Лекции
№ п/п | Название модулей | Разделы и темы лекционных занятий | Содержание |
1 | Цели и задачи курса | Лекция 1. | Структура современного оптимизирующего компилятора. Компиляторная среда LLVM и ее промежуточное представление (биткод). Ограничения современных компиляторов. Какая подготовка предполагается у слушателей курса (список вопросов). |
2 | Методы и алгоритмы машинно-независимой оптимизации. | Лекция 2. | Выявление индуктивных переменных и минимизация их количества в гнезде циклов. Выбор оптимального порядка циклов в гнезде. Раскрутка циклов. |
Лекция 3. | Построение дерева доминаторов. Выявление естественных (натуральных) циклов. Построение границ областей доминирования. | ||
Лекция 4. | Полурешетки и их свойства. Функции на полу-решетках (передаточные или потоковые функции) и их свойства. Итерационные алгоритмы нисходя-щего и восходящего анализа свойств потока данных, выражаемых функциями потока. | ||
Лекция 5. | Отсутствие свойства дистрибутивности у пере-даточной функции алгоритма и вытекающие из этого следствия. | ||
Лекция 6. | Понятие ожидаемого выражения. Четырехфазный алгоритм выявления частичных избыточностей. | ||
Лекция 7. | Выделение областей в графе потока управления. Сводимые и несводимые графы протока управления. Построение передаточных функций областей по передаточным функциям входящих в них базовых блоков. Алгоритм анализа на областях. | ||
Лекция 8. | Понятие алиаса. Итерационный алгоритм. Ограниченность итерационного алгоритма. | ||
3 | Межпроцедур-ная оптимиза-ция | Лекция 9. | Граф вызовов и его построение. Виды меж-процедурной оптимизации: учет зависимостей от потока, от пути (трассы), от контекста вызова. Основные подходы к межпроцедурной оптимизации. |
Лекция 10. | Сравнительный анализ основных алгоритмов межпроцедурного анализа указателей. Способы усиления быстрых алгоритмов (учет контекстной зависимости с помощью классификации и клонирования и т.п.) | ||
4 | Методы и алгоритмы машинно-ори-ентированной оптимизации. | Лекция 11. | Локальное планирование кода списком. Обобщения алгоритма. Выявление «гамаков» в графе потока управления для глобального планирования. |
Лекция 12. | Алгоритм распределения регистров с использованием раскраски узлов графа конфликтов. Быстрые алгоритмы распределения регистров с использованием различных эвристик. | ||
Лекция 13 | Покадровая оптимизация и др. | ||
5 | Динамическая и адаптивная оптимизация. | Лекция 14 | Типы профилирования. Различные алгоритмы инструментирования для сбора профилей. |
Лекция 15. | Сравнительный анализ динамических оптимизаторов в среде Java и динамического оптимизатора среды LLVM. | ||
6 | Выбор последо-вательности оптимизаций в компиляторе (обзор) | Лекция 16 | Постановка проблемы. Обзор различных подходов к решению проблемы, включая машинное обучение (Machine Learning) и генетические алгоритмы. |
Семинары (решение задач и сдача лабораторных работ)
№ п/п | Название модулей | Семинарские (практические) занятия | Содержание |
2 | Методы и алгоритмы машинно-независимой оптимизации. | Занятие 1. | Решение задач по теме «Оптимизация циклов». |
Занятие 2. | Решение задач по теме «Анализ графа потока управления» | ||
Занятие 3. | Решение задач по теме «Структура потока данных» | ||
Занятие 4. | Решение задач по теме «Анализ потока данных на областях.» | ||
Занятие 5. | Сдача лабораторной работы № 1 | ||
Занятие 6. | Сдача лабораторной работы № 1 | ||
4 | Методы и алгоритмы машинно-ори-ентированной оптимизации. | Занятие 7. | Решение задач по теме «Планирование кода» |
Занятие 8. | Решение задач по теме «Планирование кода» | ||
Занятие 9. | Решение задач по теме «Распределение регистров» | ||
Занятие 10. | Решение задач по теме «Распределение регистров» | ||
Занятие 11. | Сдача лабораторной работы № 2 | ||
Занятие 12. | Сдача лабораторной работы № 2 | ||
3 | Межпроцедур-ная оптимиза-ция | Занятие 13. | Решение задач по теме «Организация межпроцедурной оптимизации» |
Занятие 14. | Решение задач по теме «Межпроцедурный анализ указателей.» | ||
Занятие 15. | Заключительная контрольная работа | ||
Занятие 16. | Обсуждение результатов контрольной работы и выставление оценок. |
Лабораторные работы
№ п/п | Название модулей | Лабораторные работы | Содержание |
2 | Методы и алгоритмы машинно-независимой оптимизации. | Работа 1. | Разработка и отладка (в среде LLVM) программы глобальной машинно-независимой оптимизации. |
4 | Методы и алгоритмы машинно-ори-ентированной оптимизации. | Работа 2. | Разработка и отладка (в среде LLVM) программы планирования кода или распределения регистров. |
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.