Научная статья на тему 'Разбиение программы на кадры для конвейерных вычислительных систем с динамической перестраиваемой архитектурой'

Разбиение программы на кадры для конвейерных вычислительных систем с динамической перестраиваемой архитектурой Текст научной статьи по специальности «Математика»

CC BY
113
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
параллельные вычисления / перестраиваемые архитектуры / распараллеливание / преобразования программ / разбиение на кадры / Parallel computations / Reconfigurable architectures / Parallelization / program transformatins / partitioning to cadres

Аннотация научной статьи по математике, автор научной работы — Адигеев Михаил Георгиевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The paper considers a problem of partitioning the set of operations of a program to minimal number of parts (cadres) so that each part could be executed on available resources without pipeline reconfiguration. The proof of NP-hardness has been presented. Effectively computable scopes branch-and-bound algorithm has been suggested and proved.

Текст научной работы на тему «Разбиение программы на кадры для конвейерных вычислительных систем с динамической перестраиваемой архитектурой»

МАТЕМАТИКА

УДК 519.681.5

РАЗБИЕНИЕ ПРОГРАММЫ НА КАДРЫ ДЛЯ КОНВЕЙЕРНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ С ДИНАМИЧЕСКИ ПЕРЕСТРАИВАЕМОЙ АРХИТЕКТУРОЙ

© 2009 г. М.Г. Адигеев

Южный федеральный университет, Southern Federal University,

ул. Мильчакова, 8а, Ростов н/Д, 344090, Milchakov St., 8a, Rostov-on-Don, 344090,

dnjme@math.stedu.ru dnjme@math.stedu.ru

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

Ключевые слова: параллельные вычисления, перестраиваемые архитектуры, распараллеливание, преобразования программ, разбиение на кадры.

The paper considers a problem ofpartitioning the set of operations of a program to minimal number ofparts (cadres) so that each part could be executed on available resources without pipeline reconfiguration. The proof of NP-hardness has been presented. Effectively computable scopes branch-and-bound algorithm has been suggested and proved.

Keywords: parallel computations, reconfigurable architectures, parallelization, program transformatins, partitioning to cadres.

Постановка задачи

Рассматривается задача, возникающая при компиляции программы для исполнения на конвейерной вычислительной системе (ВС). На входе компилятора имеется текст программы на одном из языков высокого уровня. Не нарушая общности, будем считать, что в исходной программе не применяются операторы безусловного перехода (вОТО) назад по тексту программы (известно, что любую программу можно написать без использования таких конструкций). Для программы можно построить граф (ГЦ), вершинами которого являются операции программы, дуги описывают зависимости между операциями, влияющие на порядок их выполнения [1]. Поскольку рассматриваются программы, не содержащие безусловных переходов назад, ГП является бесконтурным графом.

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

Примем следующие упрощающие предположения: коммутатор ВС является полнодоступным; количество обращений к основной памяти в пределах кадра не ограничено; не рассматривается возможность преобразо-

вания программы (например, развертка цикла) с целью более рационального использования ресурсов.

Через r обозначим количество различных типов ресурсов (сумматоры, умножители и т.п.). Их общее количество в системе задается вектором с* е N г. Пусть G(V,E) - граф программы. Для каждой вершины графа G известна стоимость выполнения соответствующей операции - вектор c(v) длины r с компонентами из Z+. Компоненты вектора c(v) задают количество ресурсов каждого типа, необходимых для выполнения данной операции.

Разбиением на кадры для данной программы будем называть отображение f. V —> N, удовлетворяющее следующим ограничениям:

а) условие монотонности: для любой дуги (m,v) е Е выполняется j(u) < /(г):.

б) для любого к выполняется ограничение на ресурсы: X c(v) < с*, где суммирование проводится по всем v, таким что fty)=k.

Здесь fly) - номер кадра, к которому отнесена вершина - операция v. Условие монотонности гарантирует, что к моменту выполнения операции v все входные данные для нее уже вычислены. Ограничение на ресурсы гарантирует, что для любого k все операции кадра с номером k могут быть выполнены параллельно. Не нарушая общности, будем считать, что для любой вершины v выполнено ограничение c(v) < с*, так как иначе такую программу вообще нельзя разбить на кадры без дополнительных преобразований.

С использованием введенных обозначений задача разбиения на кадры (ЗРК) формулируется следующим образом.

ДАНО: граф программы G{V,E), стоимости операций с: V —> Z+, общее количество ресурсов каждого типа, задаваемое в виде вектора с* е Z+.

ЗАДАЧА: построить разбиение графа G на кадры, т.е. отображение f: V —> N, удовлетворяющее описанным выше условиям а) и б), минимизирующее общее количество кадров, т.е. величину ср = тах{Ду): v е V}.

Анализ сложности

Покажем, что ЗРК является NP-трудной задачей. В [2] со ссылкой на [3] указывается, что следующая задача ТР10 (т.е. 10-я задача из раздела «Теория расписаний») является NP-полной.

ДАНО: множество заданий Т, каждое из которых имеет длительность 1(1) = 1, число процессоров т е Z+, число видов ресурсов г е Z+, границы ресурсов !'>,. 1 < < /' < г, потребности в ресурсах R,(0- 1 < R,{f) < Bt (для всех заданий t и ресурсов /) и общий директивный срок!) е Z+.

ЗАДАЧА: выяснить, существует ли т-процессор-ное расписание а для заданий из Т. которое удовлетворяет общему директивному сроку D и ограничениям на ресурсы.

Теорема 1. Задача ТР10 полиномиально сводится к ЗРК, поэтому ЗРК является NP-трудной задачей.

Доказательство. Пусть дан экземпляр задачи ТР10, т.е. набор {T, m, r, Bi, Ri(t), D}. Построим граф G(V,E) следующим образом: в качестве вершин возьмем задания (I -7). множество дуг пусто (Е=0). Количество ресурсов для ЗРК равно r+1, поскольку по условию ЗРК процессоры - тоже один из ресурсов. Стоимость каждой вершины - задания teV(=T) - (г+1)-мерный вектор c(t) = (R1, R2, ..., R„ 1), поскольку по условию задачи ТР10 для выполнения каждого задания достаточно одного процессора (ресурс с номером r+1). Общее количество ресурсов: c* = (B1, B2, ..., B„ m), так как по условию имеется m процессоров. Все указанные преобразования выполняются за полиномиальное (по количеству операций в программе) время. Решим задачу ЗРК с полученными входными данными. Результат решения - разбиение на кадры / общее количество кадров равно ср = maxJ/Ay.' v е V}. Тогда, имея ф, можно за время 0(1) получить решение исходной задачи ТР10: если ф < D (директивный срок выполнения заданий из задачи ТР10), то ответ «да», в противном случае -«нет». Действительно, поскольку в ТР10 не рассматриваются ограничения на порядок выполнения заданий (граф G - пустой, не содержит дуг) и время выполнения каждого задания равно 1, каждый кадр также выполняется за время 1. Поэтому разбиение программы на кадры/(в терминологии ЗРК) является расписанием выполнения заданий ст (в терминологии задачи TP 10). Отсюда следует, что количество кадров ф равно общему времени выполнения всех заданий. Если ф < D, то существует расписание со сроком завершения, не превышающим D, - это расписание cr(t) =f(t) со сроком ф. Иначе в силу оптимальности разбиения f такого расписания не существует.

Доказанная теорема показывает, что для задачи ЗРК маловероятно обнаружение полиномиального алгоритма (это означало бы решение известного во-

проса о равенстве классов P и NP). Поэтому для решения ЗРК следует искать либо точные переборные алгоритмы с экспоненциальной сложностью, либо быстрые приближенные алгоритмы. В данной работе предложен точный переборный алгоритм для ЗРК.

Переборный алгоритм разбиения на кадры

Предлагаемый алгоритм решения ЗРК основан на методе ветвей и границ [4]. Отображение f строится последовательно для всех вершин графа, для каждой из них перебираются возможные номера кадров f(v). Рассмотрим ключевые шаги алгоритма.

Перед началом перебора вершин построим топологическую нумерацию вершин ГП [4]. Это возможно, поскольку граф является бесконтурным.

Будем просматривать вершины ГП в порядке топологической нумерации. В тот момент, когда рассматривается вершина v, номера кадров для вершин с меньшими номерами уже назначены. Для очередной вершины v необходимо перебрать все возможные варианты значений f(v) в интервале от fmin(v) до fmjv). Здесь fmin(v) - нижняя граница для f(v) при условии, что f является оптимальной функцией разбиения на кадры. Аналогично fmax(v) ~ верхняя граница. В простейшем случае можно взять fmin(v) = 1 (номер кадра по определению не может быть меньше 1) и fmax(v') = \V\ (в самом худшем случае разобьем на | V кадров, каждый из которых будет содержать по одной вершине). Более точные оценки приведены ниже.

Выбрав возможное значение k, положим f(v) := k. Для полученного частичного отображения необходимо проверить его допустимость, т.е. выполнение условия монотонности и ограничения по ресурсам. Затем, если отображение является допустимым, необходимо оценить его перспективность с использованием оценки снизу для целевой функции ф = тах{/Лу: v е V}. Некоторые возможные оценки приведены ниже. Далее процесс продолжается в соответствии с классической схемой метода ветвей и границ [4].

Границы и оценки, используемые в алгоритме

Границы перебора: fmin и fmx Теорема 2. Для любой функции разбиения на кадры выполняется оценка f(v) > max ff(u): (u,v) e E}, где максимум берется по всем вершинам, из которых ведет дуга в вершину v.

Доказательство. Это прямое следствие из условия монотонности а).

Перейдём к построению верхней границы. Для каждого /=1,...,г положим Cimax =max{c/v): v e V } и cmax = (сГах,...,сГах). Оценим количество кадров в разбиении, которое можно построить, расширив текущее разбиение f наилучшим образом.

Теорема 3. Для любого ГП существует оптимальное разбиение на кадры f, при котором для каждого кадра, кроме, может быть, последнего, выполняется условие Z c(v) > с* - стах (сумма и сравнение выполняются над векторами из N r), где суммирование ведется по всем вершинам кадра.

Доказательство. Рассмотрим ГП и некоторое оптимальное разбиение f для этого графа. Предположим, что неравенство из теоремы не выполняется для кадра

с номером к, причем к - не максимальный номер кадра. Выберем произвольную вершину w, такую, что f(w)=k+l и для всех v, таких что (v,w) еЕ, выполняется fiv)<k (т.е. в w входят дуги только из вершин предыдущих кадров). Переместим вершину w из кадра с номером (к+1) в кадр с номером к, т.е. построим новое разбиение /', положив / (w)=к и / '(v) = f(v) для всех остальных вершин v. Очевидно, что / ' является корректным разбиением на кадры и даёт столько же кадров, сколько и f После серии таких преобразований получится отображение, для которого утверждение теоремы выполняется.

Теорема 4. Если V/e{l,..., п} выполняется, а, > h и

п

Ysai = с, топ <с/Ь. 2 =1

Доказательство. От противного: если n > c/b, то

п

2 а, >Ьп> с, что противоречит условию.

2=1

Теорема 5. Для любого графа и функции стоимости, такой, что cmax < c*, существует разбиение на кадры f при котором для всех вершин v и для всех

I Ct(v)

veV

i=1,.. .,r выполняетсяf(v) <

С * -С,

Доказательство. Это следует из двух предыдущих теорем, примененных отдельно к каждому виду ресурса /=1,...,г.

Если какая-то из компонент вектора стах достаточно близка по величине к соответствующей компоненте вектора ограничений с*, то полученная граница для /Лу окажется сильно завышенной. В этом случае более эффективна тривиальная оценка /Лу < I ]. Таким

для всех /=!,..,,r.

(

< min vEV Ivl

max 51 1 5

c * —c

V )

Доказанные теоремы (2 и 5) позволяют при переборе вариантов для номера кадра текущей вершины начинать с/тт = тах{/(и): (и,у) е Е} и заканчивать

fmax = min

f Tct(v) " Л

min - veV : i = 1,...,r , VI

c^-cmax

V - /

Обе

границы вычисляются за полиномиальное время, причём /тах можно для каждой вершины вычислить один раз перед выполнением перебора.

Оценки целевой функции (р. Существует тривиальная оценка для ср (т.е. для количества кадров в раз-

биении):

<р > max

1 <2<Г

ЕС (V)

veV

Она непосредственно

следует из ограничений на ресурсы. Её можно обобщить следующим образом. Пусть Л(у) - множество вершин, достижимых из вершины V, включая саму эту вершину. Тогда справедливо следующее утверждение.

Теорема 6. Для любого отображения / и любой вершины V

Цс^ (и)

eA(v)

(р = тах/(и) > f(y) - 1 + max

mgF 1 <i<r

Доказательство. Рассмотрим подграф исходного графа, порожденный множеством вершин Л (V). Из ограничения на ресурсы следует, что количество кадров, на которые можно разбить вершины этого подграфа,

Есг (и)

ограничено снизу величинои

max

1< i<r

u^A(V)

Так

как все эти вершины на ГП достижимы из V, то в силу условия монотонности номер кадра, назначенный любой из этих вершин, не может быть меньше /(V). Отсюда следует искомое утверждение.

Оценка из теоремы 6 может быть посчитана эффективно, без существенных (по сравнению с временем перебора) дополнительных затрат времени. Для этого перед началом перебора следует: построить для графа вычислений матрицу достижимости А. Это можно сделать с помощью алгоритма Уоршалла за время 0(|VI3) [4]; с помощью матрицы достижимости

вычислить для каждой уеУ величину а(\>) = (и)

max

1< i<r

ueA(v)

. Это потребует еще O(|V|) операции.

При выполнении метода ветвей и границ в качестве оценки снизу для значения /(у) следует использовать /(у)+а(у)~ 1.

Литература

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1.

Штейнберг Б.Я. Математические методы распараллеливания рекуррентных циклов для суперкомпьютеров с параллельной памятью. Ростов н/Д, 2004. 191 с.

2. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М., 1982. 416 с.

3. Garey M.R., Johnson D.S. Complexity results for multiprocessor scheduling under resource constraints // SIAM J. Comput. 1975. Vol. 4. Р. 397-411.

4. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. М., 2000. 384 с.

Поступила в редакцию

25 марта 2008 г.

и

i Надоели баннеры? Вы всегда можете отключить рекламу.