Поиск максимальной длины рекуррентности в графе зависимостей Научный руководитель: Гимпельсон В.Д. Работу выполнила Филиппова В.Н. Московский физико-технический.

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



Advertisements
Похожие презентации
Теория графов Основные определения. Задание графов Графический способ – Привести пример графического задания графа, состоящего из вершин А, В и С, связанных.
Advertisements

Теория графов Основные определения. Дуга Пусть имеется множество вершин V={V 1,V 2,…,V n } и пусть на нем задано бинарное отношение Г V×V, – V i Г V j.
МЕТОДЫ ОПТИМИЗАЦИИ § 1. Основные понятия. Под оптимизацией понимают процесс выбора наилучшего варианта из всех возможных В процессе решения задачи оптимизации.
АЛГОРИТМЫ НАХОЖДЕНИЯ КРАТЧАЙШИХ ПУТЕЙ НА ГРАФАХ..
Задача о максимальном потоке в сети Алгоритм Фалкерсона-Форда.
Сложение и вычитание дробей. Дроби это обычные числа, их тоже можно складывать и вычитать. Но из-за того, что в них присутствует знаменатель, здесь требуются.
МЕТОДЫ ЭКСПЕРИМЕНТАЛЬНОЙ ОПТИМИЗАЦИИ. Метод деления отрезка пополам Метод позволяет исключать на каждой итерации в точности половину интервала. Иногда.
1 Исследование алгоритмов решения задачи k коммивояжеров Научный руководитель, проф., д.т.н. Исполнитель, аспирант Ю.Л. Костюк М.С. Пожидаев Томский государственный.
Введение в теорию сетевого планированияВведение в теорию сетевого планирования.
Графы Волновой метод. Задание графов Пусть граф задан графически. Составить матрицу смежности и матрицу инцидентности для этого графа
Определение 1. Выражение называется числовым рядом. Числа называются первым, вторым,...,... членами ряда. называется общим членом ряда. Определение 2.
Теория графов Алгоритмы на графах. Медиана графа Медиана вершина графа, у которой сумма кратчайших расстояний от неё до вершин графа минимальная возможная.
Теория графов Основные определения. Дуга Пусть имеется множество вершин V={V 1,V 2,…,V n } и пусть на нем задано бинарное отношение Г V×V, – V i Г V j.
Оптимизация управляющего графа программ, имеющих избыточные условные вычисления Выполнил: Степнов Денис, 816 гр. Научный руководитель: Бучнев А.Ю. Выпускная.
ТЕОРИЯ ГРАФОВ ЗАДАЧА КОММИВОЯЖЕРА Гамильтоновы графы применяются для моделирования многих практических задач. Основой всех таких задач служит классиче.
Потоки в сетях Теорема о максимальном потоке и минимальном разрезе Лекция 6.
Тема: Вычисление значений функций 1.Вычисление значения алгебраического полинома. Схема Горнера. Рассмотрим полином Наша задача – найти значение этого.
1 Массивы 2 Опр. Массивом называется совокупность однотипных данных, связанных общим именем. Основные характеристики массива: 1. Имя массива 2. Тип компонентов.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Метод Гаусса Выполнил Межов В.С. Группа СБ
Транксрипт:

Поиск максимальной длины рекуррентности в графе зависимостей Научный руководитель: Гимпельсон В.Д. Работу выполнила Филиппова В.Н. Московский физико-технический институт

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

Формализация проблемы На рисунке показан граф, в котором выделенный цикл имеет длину рекуррентности, равную ( )/( )=3,5. Следовательно данный цикл не может быть выполнен быстрее 4 тактов. Для цикла C длина рекуррентности определяется по формуле:, где – длина задержки между операциями - количество итераций, через которое реализуется зависимость

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

Пример неправильной работы старого алгоритма На самом деле есть более длинный цикл, его длина рекуррентности равна 11. Длина рекуррентности, найденная этим алгоритмом в данном случае будет равна 4.

Постановка задачи Реализовать корректный алгоритмподсчета длины рекуррентности. Исследовать его эффективность по качеству результирущего кода и скорости работы. Был выбран алгоритм из книги Combinatorial Optimization: Network and Matroids. Eugene L.Lawler. Сложность алгоритма

Выберем некоторое λ', и сделаем замену для всех весов графа: Математическое обоснование нового алгоритма Пусть Таким образом для любого цикла выполняется неравентство: Теперь если в графе с модифицированными весами есть отрицательный цикл, то λ' < λ, а если нет, то λ' λ. По этому критерию мы можем последовательно приближать λ к точному значению максимальной длины рекуррентности.

Описание нового алгоритма Максимальная длина рекуррентности заключена на отрезке от 1 такта (быстрее одну итерацию цикла выполнить невозможно) до времени раннего последней операции в «линейке» плюс максимальная задержка. Зная критерий, по которому можно определить больше или меньше максимальная длина рекуррентности заданного значения, методом деления пополам приближаем её к точному значению.

Реализация нового алгоритма Маркировка операций и зависимостей, чтобы в дальнейшем рассматривать только те операции из «линейки» операций, из которых достижима последняя операция. Маркировка операций и зависимостей, чтобы в дальнейшем рассматривать только те операции из «линейки» операций, из которых достижима последняя операция. Нумерация операций. Нумерация операций. Занесение в матрицу смежностей операций и зависимостей между ними. Если между операциями несколько дуг и нельзя определенно сказать, какая из них даст большую длину рекуррентности, то одну из них заносим в список, чтобы потом продублировать операцию-последователя. Занесение в матрицу смежностей операций и зависимостей между ними. Если между операциями несколько дуг и нельзя определенно сказать, какая из них даст большую длину рекуррентности, то одну из них заносим в список, чтобы потом продублировать операцию-последователя. Дублирование операций-последователей обратных дуг, инцидентных одним и тем же вершинам. Дублирование операций-последователей обратных дуг, инцидентных одним и тем же вершинам. Вычисление, и нахождение максимальной длины рекуррентности методом деления отрезка пополам. Вычисление, и нахождение максимальной длины рекуррентности методом деления отрезка пополам.

Дублирование операций Для построения матрицы смежности необходимо, чтобы между вершинами была только одна дуга, но в графе зависимостей встречаются кратные дуги. Иногда от некоторых дуг можно избавиться, просто выбрав дугу, дающую большую рекуррентность для всего цикла. Если задержка одной дуги больше, а количество итераций, через которое реализуется зависимость меньше, чем у второй, то первая дуга однозначно даст большую длину рекуррентности. В противном случае надо продублировать вершины, чтобы в результирующем графе были реализованы обе зависимости. На рисунке изображены две дуги, идущие от source к node и граф, который получается после дублирования вершин.

Точность вычислений В описанном алгоритме было предложено продолжать вычисления до тех пор, пока Эта точность следовала из такой оценки минимальной разности длин рекуррентности: Но нам интересно только целое значение максимальной длины рекуррентности, поэтому эту оценку можно улучшить: Это следует из того, что точное значение максимальной длины рекуррентности отличается от ближайшего целого числа, больше, чем на,где - сумма итераций, через которое реализуются зависимости, по всему графу

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

Реализванные оптимизации После преобразования графа элементарный цикл в нем может иметь не больше Ω дуг, Ω = max (L(С)) = 2*min{ Nbeg, Nend } L(C) – количество дуг в цикле С, Nbeg - количество операций, являющихся началом обратных дуг, Nend - количество операций, являющихся концом обратных дуг). При поиске отрицательного цикла первоначально искался путь длиной n, теперь можно искать путь длиной Ω. Так как часто встречаются ситуации, когда от одной операции идет вверх большое количество обратных дуг, такая оптимизация дает возможность уменьшить количество итераций при поиске отрицательного цикла. На горячих регионах пакета тестов spec95 в среднем количество итераций уменьшилось на 24%

Результаты Максимальная длина рекуррентности может оказаться меньше ресурсной оценки цикла, тогда именно ей будет определяться минимальное время выполнения цикла.

Результаты Изменение скорости работы: В среднем новый алгоритм работает в 100 раз медленнее старого, неоптимизированный алгоритм работает в 600 раз медленнее.

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