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

Презентация:



Advertisements
Похожие презентации
Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
Advertisements

Распределение регистров при планировании инструкций для архитектуры Эльбрус Дипломная работа Иванова Д. С. Научный руководитель Шлыков С. Л. Москва 2008.
Новиков Сергей Анализ потока управления и потока данных в программе.
Поиск максимальной длины рекуррентности в графе зависимостей Научный руководитель: Гимпельсон В.Д. Работу выполнила Филиппова В.Н. Московский физико-технический.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Анализ тестового покрытия компиляторов Выполнила: Байцерова Ю.С., 545 Гр. Научный руководитель: ст. преп. Вояковская Н. Н. Рецензент: ст. преп. Луцив Д.В.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Оптимизация алгоритмов сигнальной обработки для процессоров с архитектуройЭльбрус Московский Физико-Технический Институт Автор : Павлов Антон Научный руководитель.
Восстановление текстов программ по преобразованному синтаксическому дереву Выполнил: Юрий Литвинов, 545гр. Научный руководитель: Дмитрий Копаев.
Unit-тестирование и метрики покрытия кода тестами Сергей Андреев, JetBrains 29 февраля 2012.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
МГУ имени Ломоносова, механико-математический факультет, кафедра вычислительной математики Исследование проблемы переполнения буферов в программах Пучков.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ФИЗИКО - ТЕХНИЧЕСКИЙ ИНСТИТУТ (государственный университет) Решение задачи восстановления профильной.
П РОИСХОЖДЕНИЕ ПОНЯТИЯ « АЛГОРИТМ » В IX веке математик Мухаммед аль- Хорезми описал правила выполнения четырех арифметических действий в десятичной системе.
МЕТОДЫ ОПТИМИЗАЦИИ § 1. Основные понятия. Под оптимизацией понимают процесс выбора наилучшего варианта из всех возможных В процессе решения задачи оптимизации.
ДРУГИЕ ФОРМЫ РЕКУРСИИ I Функциональноепрограммирование Григорьева И.В.
Система автоматизации распараллеливания: DVM-эксперт Блюменберг Э.П. 528 Научный руководитель: профессор В.А. Крюков.
Поддержка избыточного кодирования. Оптимизация, настройка и аппробация выбранного алгоритма под поставленную задачу. Оценка полученных результатов Мальчевский.
Поиск путей в сложных полигонах для динамических систем реального времени. Работа Порошина И.А., 544 гр. Научный руководитель Уфнаровский В.В. Рецензент,
Транксрипт:

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

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

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

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

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

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

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

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

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

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

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

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

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

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