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

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

CC BY
129
29
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОСЛЕДОВАТЕЛЬНЫЕ ПРОГРАММЫ / ОПЕРАТОРЫ / НЕЗАВИСИМЫЕ ПОДМНОЖЕСТВА / АППАРАТНАЯ МОДЕЛЬ УСТРОЙСТВА

Аннотация научной статьи по математике, автор научной работы — Борзов Д.Б., Дюбрюкс С.А., Титов В.С.

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

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

Похожие темы научных работ по математике , автор научной работы — Борзов Д.Б., Дюбрюкс С.А., Титов В.С.

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

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

УДК 681.3

Д. Б. Борзов, С. А. Дюбрюкс, В. С. Титов

Курский государственный технический университет

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

И ЕГО АППАРАТНАЯ РЕАЛИЗАЦИЯ

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

В настоящее время в целях повышения производительности ЭВМ применяется параллельная обработка большого количества задач на множестве процессоров [1,2]. Ярким примером являются системы типа Origin, Cray, МВС и т.д. [3]. В них необходимо использование параллельных программ и алгоритмов, на составление которых затрачивается значительное время [4]. В то же время разработка эффективных параллельных алгоритмов, ориентированных на многопроцессорную реализацию, является сложной научно-технической задачей, требующей привлечения высококвалифицированных специалистов.

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

Основной задачей при выявлении возможности одновременного выполнения операторов (параллелизма между операторами) является выявление информационной зависимости между ними. В [4] предложено подразделять операторы, обрабатываемые на i-м линейном участке, на четыре категории: 1) только считываемые (W); 2) только записываемые (Х,); 3) сначала считываемые, потом записываемые (Y,); 4) сначала записываемые, потом считываемые (Z,).

Ячейки памяти (идентификаторы) переменных, которые считываются оператором р^, не должны портиться записью в них данных операторар2. Таким образом, (Wl uYi uZj)n (Х2 и

Y2 uZ2) = 0

Если через Ii обозначить входные данные (т.е. переменные правой части оператора присваивания), а через Oj — выходные (т.е. переменные, стоящие в левых частях оператора присваивания), то рассмотренные выше требования информационной независимости оператора pi иpj могут быть записаны в следующем виде:

Ij n O, = 0, I, n Oj = 0, O, n Oj = 0. (1)

Предварительно введем ряд обозначений:

1. Исходная программа представляется графом взаимодействия задач: G = <X,E>, где X — множество вершин графа G, вершины x, Е X которого соответствуют операторам программы, а дуги eiJ е E представляют информационные связи.

2. Число операторов последовательной программы обозначим N.

3. Матрица достижимости Md =

Md,, и

, где / = 1, N, ' = 1, N, ^ — число операторов

пхп

программы) характеризует последовательность выполнения операторов. Она формируется на основе анализа графа G следующим образом: на пересечении /-го и у'-го столбцов ставится единица, если из /-го оператора можно попасть в у'-й. При формировании матрицы достижи-

мости в случае появления условия оно воспринимается как оператор. В этом случае имеет место «агрессивное» исполнение алгоритма (одновременно будут вычисляться обе ветви условия). При этом в процессе выполнения алгоритма, когда переменные условия будут вычислены, заведомо ложная ветвь будет отсечена.

4. Матрица входных переменных Min = Minи , где i = 1, N, j = 1, N, характери-

nxm

зующая присутствие j-й переменной во входном наборе /-го оператора.

5. Матрица выходных переменных Mout = Mout - , где i = 1, N , J = 1, m , характе-

У nxm

ризующая присутствие j-й переменной в выходном наборе i-го оператора.

Тогда на основе вышесказанного и с учетом соотношения (1) можно сформировать условие проверки информационной независимости операторов pi и p- программы, которое записывается в следующем виде:

F = (Minij л Mout ji) v (Min-i л Mout- ) v (Mout- л Mout-i) . (2)

Если полученный кортеж F нулевой, то операторы могут выполняться параллельно, так как обрабатываются разные переменные.

Выявляя информационные зависимости между операторами pi и p- программы, при

MdiJ- = 1 получаем матрицу неполного параллелизма MNP = MNPiJ , где i = 1, N, j = T^N,

Г J nxn

отражающую полный набор информационных зависимостей между всеми операторами программы. С учетом сказанного выше алгоритм процедуры выявления параллелизма внутри линейных участков последовательных программ со связями по управлению может выглядеть следующим образом:

1. i=1; 2. k=1;

3. Если Mdik = 1, то п.4, иначе п. 10;

4. p=1;

5. MNPik=0;

6. Fp = (Minpi л Moutpk) v (Minpk л Moutpi) v (Moutpi л Moutpk);

7. Если Fp=0, то p=p+1; п.9, иначе п.8;

8. MNPik = 1; p = m +1;

9. Если p < m, то п.6, иначе п. 10

10. k=k+1и если k < m , то п. 3, иначе п.11;

11. i=i+1 и если i < n, то п.12

12. 7=1;

13. 17 = true;

14. i=i+1 и если i < n, то п. 13, иначе п. 15;

15. yarus = 1, branch = 0;

16. i=1;

17. Если 17 = true, то z = 0 и k=1

18. Если MNPi,k=1, то z=z+1

19. k=k+1 и если k < m , то п. 18, иначе п.20;

20. Если z=0, то branch = branch + 1 и Packi i, yarus, branch);

21. li = false;

22. m=1;

23. MNPm,i=0;

24. m=m+1 и если m < n , то п. 23, иначе п. 25;

25. i=i+1 и если i < n, то п.17, иначе п. 26;

26. i=1;

27. Если li = true, то yarus = yarus +1 и п.16, иначе п. 28;

28. j=i+1 и если i < n, то п.27, иначе конец.

В приведенном алгоритме пункты с первого по одиннадцатый отражают процесс нахождения матрицы неполного параллелизма MNP с использованием формулы (2). Последующие пункты направлены на формирование массива тегов Pack, каждый элемент которого содержит номер оператора исходной программы, а также номер яруса yarus и номер ветви branch. Предложенный метод позволяет поставить в соответствие операторам очередности их параллельного выполнения (yarus) и номера независимых параллельных ветвей, в которые они входят.

На основе предложенного метода была разработана функциональная схема устройства распараллеливания линейных участков последовательных программ (далее — акселератор), представленная на рис. 1.

Рис. 1

На рис. 1 приняты следующие обозначения: АП-ассоциативная память, ВУ — внешнее устройство, У1 — блок вычисления матрицы неполного параллелизма, У2 — блок формирования тэгов, FIFO2 — буфер для хранения тэгов. Предлагаемое устройство обрабатывает поступающие в него матрицы достижимости Md, входных переменных Min и выходных переменных Mout. Помимо этих матриц входными данными являются стробы построчной записи матриц Md, Min, Mout в ячейки соответствующих ОЗУ: STROB1, STROB2, STROB3. Выходными данными является массив тегов Pack, определяющих возможность параллельного выполнения операторов, а также признак готовности этих данных READY. После выдачи устройством сигнала READY этот тег считывается в ассоциативную память внешним устройством. Структурная схема устройства У1 представлена на рис. 2.

В двухпортовые ОЗУ Memory1 и Memory2 и однопортовое ОЗУ Memory3 по соответствующим стробам STROB1, STROB2, STROB3 записываются построчно матрицы Md, Min, Mout. Затем начинается перебор ячеек Memory3 по переполнениям счетчика Counter2. Содержимое ячейки заносится в сдвиговый регистр SR. При нахождении внутри него единичного бита из Memory1 и Memory2 по адресам из Counter1 и Counter2 считываются ячейки, происходит вычисление, соответствующее формуле (1). Его результат компаратором comp

сравнивается с нулем. В регистре SR происходит сдвиг вправо. На место старшего бита мультиплексор mux записывает 1, если активируется признак a = b компаратора, или 0 в ином случае. После окончания перебора содержимого ячейки Memory3 вырабатывается сигнал START и содержимое (строки получаемой матрицы MNP) сдвигового регистра SR начинает записываться в память Memory1 устройства У2 (рис. 3). После окончания записи матрицы начинается ее построчное считывание.

Рис. 2

Рис. 3

Демультиплексор dmux пропускает строку на компаратор comp, сравнивающий строку с нулевой. Если на выходе a = b компаратора активный уровень, то комбинационная схема Ксх инициирует запись номера данной строки в буфер FIFO1. После того как номера всех нулевых строк будут сохранены в FIFO1, начинается их считывание. При этом снова извлекается содержимое Memoryl, демультиплексор начинает пропускать информацию на второй выход, шифратор CD формирует соответствующее номеру строки из FIFO1 значение. Результат конъюнкции выхода шифратора со считанным из Memoryl значением записывается в память Memory2. Таким образом? происходит обнуление столбцов матрицы Md, соответствующих нулевой строке, считанной из FIFO1. После каждого обнуления информация из Memory2 записывается в Memory1, счетчик Counter3 инкрементируется, информация в виде тега (см. рис. 1) записывается в FIFO2. Так продолжается до опустошения буфера FIFO1, после чего счетчик Counter2 инкрементируется, счетчик Counter3 сбрасывается и начинается новая процедура поиска нулевых строк в ячейках Memory1. Поиск происходит до тех пор, пока все содержимое Memory1 не станет нулевым. Сигнал готовности данных выдается на внешнее устройство (ВУ) при переполнениях FIFO1 или FIFO2.

Была проведена аналитическая оценка быстродействия разработанного акселератора, не учитывающая естественные задержки элементов. При компиляции последовательной программы со связями по управлению, состоящей из 100 операторов, данный акселератор при работе на частоте 100 МГц формирует выходные данные за промежуток времени от 1,13 до 226 мкс. При числе операторов, равном 1000, устройство выдаст сигнал готовности данных за промежуток времени от 535 мкс до 10,7 мс. Широта диапазона промежутков обусловлена особенностями компилируемой программы.

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

СПИСОК ЛИТЕРАТУРЫ

1. Воеводин В.В. Математические модели и методы в параллельных системах. М.: Наука, 1986.

2. Головкин Б.А. Параллельные вычислительные системы. М.: Наука, 1980. 520 с.

3. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.: БХВ— Петербург, 2002. 608 с.

4. Трахтенгерц Э.А. Введение в теорию анализа и распараллеливания программ ЭВМ в процессе трансляции.

М.: Наука, 1981. C. 184—187.

Рекомендована кафедрой Поступила в редакцию

вычислительной техники 20.09.07

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