Инновационное развитие российских компаний.Источники привлечение инвестиций.Выступление управляющего
Оптимизация управляющего графа программ, имеющих...
description
Transcript of Оптимизация управляющего графа программ, имеющих...
![Page 1: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/1.jpg)
Оптимизация управляющего графа программ, имеющих избыточные
условные вычисления
Выполнил: Степнов Денис, 816 гр.Научный руководитель: Бучнев А.Ю.
Выпускная квалификационная работа
![Page 2: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/2.jpg)
Общие понятия
• Нумерация значений – разбиение множества операций промежуточного представления на классы конгруэнтности (эквивалентности);
• Класс конгруэнтности – подмножество операций, безусловно имеющих одинаковый результат;
• Гиперблок – непрерывная последовательность инструкций, имеющая одну точку входа;
• CTP – операция подготовки передачи управления;
• Станок – регистр, необходимый для выполнения операции CTP.
![Page 3: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/3.jpg)
Проблематика
• Наличие в программах избыточных условных вычислений, вырабатывающих предикат, который используется для постановки операций под условие;
• Наличие безусловно исполняемых и ненужных операций передачи управления;
• Потери в производительности, которые могут быть вызваны ограниченным числом станков для подготовок и давлением на кэш инструкций.
![Page 4: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/4.jpg)
Постановка задачи
• Реализовать отдельную оптимизацию, устраняющую избыточные вычисления предикатов
• Внедрить оптимизацию в оптимизирующий компилятор «Эльбрус»
• Определить место в линейке оптимизаций
• Провести верификацию на стандартных пакетах тестов
• Поддержка оптимизации
• Провести оценку эффективности на пакете SPEC
![Page 5: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/5.jpg)
Подход к решению задачи
1. Поиск избыточных условных вычислений
• Используя результаты анализа «Нумерация значений», выявить избыточные условные вычисления;
2. Применение оптимизации
• Дублировать If-узел с избыточным условием по всем входящим в него дугам, по которым оно однозначно определяется, и перенаправить на копии исходящие дуги;
• Удалить невыполнимые исходящие дуги из полученных копий If-узла и быть может оригинала (если у него осталась одна входящая дуга по которой условие однозначно определяется), преобразовать If-узлы в Simple-узлы.
![Page 6: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/6.jpg)
Простейший пример
Если в узлах 2, 3, 4 нет операций, изменяющих переменные a или b,то вычисление предиката в узле 4 является избыточным нужносоздать копию узла 4 (узел 7) и упростить узлы 4 и 7
![Page 7: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/7.jpg)
Нет Да
Нет Да
1. Поиск избыточных условных вычислений
Осуществить обход по всем возможным парам
If-узлов рассматриваемой процедуры
Осуществить обход по всем исходящим дугам доминатора и входящим дугам доминируемого
узла
Один из узлов доминирует над другим
Преемник исходящей дуги доминирует над предшественником
входящей дуги & класс конгруэнтности операций,
вырабатывающих предикат, совпадает
Занести доминируемый узел, входящую дугу, значение предиката в
специальный список
• Алгоритм
![Page 8: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/8.jpg)
В данном примере существует единственная подходящая для рассмотрения пара If-узлов:If-узел 1 доминирует If-узел 4.
Осуществив обход по дугам, можно выявить две входящие в узел 4 дуги, в предшественниках которых значение предиката точно известно.
Однако оптимизацию возможно применить только по одной из входящих в узел 4 дуг, так как переменная «a» переопределяется в узле 2.
1. Поиск избыточных условных вычислений
• Пример
![Page 9: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/9.jpg)
Осуществить обход списка, полученного
анализирующим алгоритмом
Нет ДаВ узел входит более одной дуги
Удалить лишнюю исходящую дугу и
вычисление предиката
Дублировать узел со всеми исходящими дугами
Удалить у копии лишнюю исходящую дугу и
вычисление предиката
Перенаправить на копию дугу, содержащуюся в
списке
2. Применение оптимизации• Алгоритм
![Page 10: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/10.jpg)
Создаём узел 7 — копию
узла 4. При копировании
узла CFG-графа средствами
компилятора «Эльбрус»
(функция
graph_GetNodeCopy),
автоматически копируются
исходящие из него дуги.
Входящие дуги не
копируются.
2. Применение оптимизации• Пример
![Page 11: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/11.jpg)
Перенаправляем
входящую дугу, по
которой значение
предиката точно известно,
на скопированный узел.
2. Применение оптимизации• Пример
![Page 12: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/12.jpg)
Удаляем дугу, исходящую
из узла 7,
соответствующую
отрицательному значению
предиката. Удаляем
вычисление предиката и
преобразовываем узел 7
из If-узла в Simple-узел.
2. Применение оптимизации• Пример
![Page 13: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/13.jpg)
Оценка эффективности
Ускорение, полученное на пакете тестов spec2000, в среднем составило 0,5%
![Page 14: Оптимизация управляющего графа программ, имеющих избыточные условные вычисления](https://reader036.fdocuments.net/reader036/viewer/2022062309/56813de3550346895da7b657/html5/thumbnails/14.jpg)
Результаты исследования
• Оптимизация реализована и внедрена в линейку оптимизирующего компилятора «Эльбрус»:
• Применение на 3-м уровне оптимизации
• Применение перед объединением базовых блоков
в гипер-узлы (оптимизация if_conversion)
• Проведена верификация на пакетах дневного
тестирования при вливе в основную ветку
компилятора, а так же на генераторе тестов
• Проведена оценка эффективности на пакете тестов spec2000