1 / 14

Оптимизация управляющего графа программ, имеющих избыточные условные вычисления

Выпускная квалификационная работа. Оптимизация управляющего графа программ, имеющих избыточные условные вычисления. Выполнил : Степнов Денис, 816 гр. Научный руководитель : Бучнев А.Ю. Общие понятия.

eshe
Download Presentation

Оптимизация управляющего графа программ, имеющих избыточные условные вычисления

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Выпускная квалификационная работа Оптимизация управляющего графа программ, имеющих избыточные условные вычисления Выполнил: Степнов Денис, 816 гр. Научный руководитель: Бучнев А.Ю.

  2. Общие понятия • Нумерация значений – разбиение множества операций промежуточного представления на классы конгруэнтности (эквивалентности); • Класс конгруэнтности – подмножество операций, безусловно имеющих одинаковый результат; • Гиперблок – непрерывная последовательность инструкций, имеющая одну точку входа; • CTP – операция подготовки передачи управления; • Станок – регистр, необходимый для выполнения операции CTP.

  3. Проблематика • Наличие в программах избыточных условных вычислений, вырабатывающихпредикат, который используется для постановки операций под условие; • Наличие безусловно исполняемых и ненужных операций передачи управления; • Потери в производительности, которые могут быть вызваны ограниченным числом станков для подготовок и давлением на кэш инструкций.

  4. Постановка задачи • Реализовать отдельную оптимизацию, устраняющую избыточные вычисления предикатов • Внедрить оптимизацию в оптимизирующий компилятор «Эльбрус» • Определить место в линейке оптимизаций • Провести верификацию на стандартных пакетах тестов • Поддержка оптимизации • Провести оценку эффективности на пакете SPEC

  5. Подход к решению задачи • Поиск избыточных условных вычислений • Используя результаты анализа «Нумерация значений», выявить избыточные условные вычисления; • Применение оптимизации • Дублировать If-узел с избыточным условием по всем входящим в него дугам,по которым оно однозначно определяется, иперенаправить на копииисходящие дуги; • Удалить невыполнимые исходящие дуги из полученных копий If-узла и бытьможет оригинала (если у него осталась одна входящая дуга по которойусловие однозначно определяется), преобразовать If-узлы в Simple-узлы.

  6. Простейший пример Если в узлах 2, 3, 4 нет операций, изменяющих переменные a или b, то вычисление предиката в узле 4 является избыточным  нужно создать копию узла 4 (узел 7) и упростить узлы 4 и 7

  7. 1. Поиск избыточных условных вычислений Осуществить обход по всем возможным парам If-узлов рассматриваемой процедуры • Алгоритм Нет Один из узлов доминирует над другим Да Осуществить обход по всем исходящим дугам доминатора и входящим дугам доминируемого узла Преемник исходящей дуги доминирует над предшественником входящей дуги & класс конгруэнтности операций, вырабатывающих предикат, совпадает Нет Да Занести доминируемый узел, входящую дугу, значение предиката в специальный список

  8. 1. Поиск избыточных условных вычислений В данном примере существует единственная подходящая для рассмотрения пара If-узлов: If-узел 1 доминирует If-узел 4. Осуществив обход по дугам, можно выявить две входящие в узел 4 дуги, в предшественниках которых значение предиката точно известно. Однако оптимизацию возможно применить только по одной из входящих в узел 4 дуг, так как переменная «a» переопределяется в узле 2. • Пример

  9. 2. Применение оптимизации Осуществить обход списка, полученного анализирующим алгоритмом • Алгоритм Нет В узел входит более одной дуги Да Удалить лишнюю исходящую дугу и вычисление предиката Дублировать узелсо всеми исходящими дугами Перенаправить на копию дугу, содержащуюся в списке Удалить у копии лишнюю исходящую дугу и вычисление предиката

  10. 2. Применение оптимизации Создаём узел 7 — копию узла 4. При копировании узла CFG-графа средствами компилятора «Эльбрус» (функция graph_GetNodeCopy), автоматически копируются исходящие из него дуги. Входящие дуги не копируются. • Пример

  11. 2. Применение оптимизации Перенаправляем входящую дугу, по которой значение предиката точно известно, на скопированный узел. • Пример

  12. 2. Применение оптимизации Удаляем дугу, исходящую из узла 7, соответствующую отрицательному значению предиката. Удаляем вычисление предиката и преобразовываем узел 7 из If-узла в Simple-узел. • Пример

  13. Оценка эффективности Ускорение, полученное на пакете тестов spec2000, в среднем составило 0,5%

  14. Результаты исследования • Оптимизация реализована и внедрена в линейку оптимизирующего компилятора «Эльбрус»: • Применение на 3-м уровне оптимизации • Применение перед объединением базовых блоков в гипер-узлы (оптимизация if_conversion) • Проведена верификация на пакетах дневного тестирования при вливе в основную ветку компилятора, а так же на генераторе тестов • Проведена оценка эффективности на пакете тестов spec2000

More Related