№ п/п | Название модулей | Разделы и темы лекционных занятий | Содержание | Аудит. работа (часы) |
---|---|---|---|---|
1 |
I Классические оптимизации и |
SSA-форма и основанные на ней анализы | SSA-форма промежуточного представления программы. Граф определений-использований. Нумерация значений и поиск общих подвыражений. PS-формы. | 2 |
2 | Нелокальные потоковые оптимизации | Упрощение арифметических выражений. Удаление мёртвого кода. Сбор общих подвыражений. Расстановка скобок и вынос инвариантных выражений. | 2 | |
3 | Современные цикловые оптимизации | Программная и аппаратная конвейеризация циклов. Раскрутка циклов. Векторные операции. Векторизация циклов. | 6 | |
4 |
II Оптимизации и анализы для VLIW |
Оптимизации для VLIW | Основные особенности VLIW-архитектур. Предикатный и спекулятивный режим исполнения программ. if-конверсия. Анализ предикатов. Упрощение предикатных выражений. Временная разметка операций, критический путь. Оптимизации критического пути. unzipping. Ресурсное планирование. | 10 |
5 |
III Разработка высоко-производительных приложений |
Распараллеливание | Архитектуры многоядерных и многопроцессорных систем. Общая и распределённая память. Технологии распараллеливания программ на потоки и задачи. OpenMP, MPI. Автоматическое распараллеливание. | 2 |
6 | Разработка высоко-производительных приложений | ASM-вставки и их поддержка в оптимизирующем компиляторе, клобберы, барьеры. GNU-расширения, прагмы, builtin-функции. Профильная информация. Коррекция профильной информации при оптимизациях. Статическое назначение вероятностей. Режим компиляции «вся программа», динамическое связывание. | 6 | |
7 |
IV Вопросы разработки оптимизирующего компилятора |
Ускорение компиляции | Подходы к увеличению скорости компиляции. Система направленной оптимизации процедур, линейки оптимизаций, решатель. | 4 |
8 | Динамическая компиляция | Динамическая и бинарная компиляция, область применения, особенности. Обеспечение бинарной совместимости между различными архитектурами микропроцессоров. Динамическое профилирование. Разбиение программы на регионы и их связывание. | 2 |