Научная статья на тему 'Блочно-рекуррентные размещения матрицы для алгоритма Флойда'

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

CC BY
150
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
параллельный алгоритм / гиперкуб / размещение данных / Parallel algorithm / Hypercube / Data placement

Аннотация научной статьи по математике, автор научной работы — Штейнберг Борис Яковлевич

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

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

The parallel Floyd algorithm for computation the matrix of graph shortest distance is presented in this paper. Quolity of data transforms of this algorithm less then in another known algorithms. It needs a hypercube communication network. This algoritm base on the special block-recurence data placement.

Текст научной работы на тему «Блочно-рекуррентные размещения матрицы для алгоритма Флойда»

УДК 681.3

БЛОЧНО-РЕКУРРЕНТНЫЕ РАЗМЕЩЕНИЯ МАТРИЦЫ ДЛЯ АЛГОРИТМА ФЛОЙДА

© 2010 г. Б.Я. Штейнберг

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

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

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

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

The parallel Floyd algorithm for computation the matrix of graph shortest distance is presented in this paper. Quolity of data transforms of this algorithm less then in another known algorithms. It needs a hypercube communication network. This algoritm base on the special block-recurence data placement.

Keywords: parallel algorithm, hypercube, data placement.

Предлагается новый метод распараллеливания алгоритма Флойда вычисления матрицы кратчайших расстояний графа, основанный на специальном блоч-но-рекурсивном размещении данных. Этот алгоритм отличается меньшим, чем у других известных алгоритмов, количеством пересылок данных.

Для его реализации предполагается многопроцессорная вычислительная система, у которой количество узлов равно степени числа 4. В качестве коммуникационной сети многопроцессорной вычислительной системы предполагается гиперкуб. Если количество вершин графа равно количеству узлов вычислительной системы, то число пересылок алгоритма равно n3/2 •log2(n) (известный ранее алгоритм [1] требует n2-log2(n) пересылок).

Оценка числа межпроцессорных пересылок для задачи перемножения матриц рассматривалась в [2], общие алгоритмы минимизации пересылок данных для гнезд программных циклов - в [3, 4].

Анализ информационных зависимостей алгоритма Флойда

Алгоритм Флойда [5] имеет на входе матрицу весов дуг графа, на выходе - матрицу кратчайших расстояний. Напомним, что матрица весов графа (кратчайших расстояний) - это такая матрица A = ={ар}у=1,.,„, у которой элемент aij означает вес дуги от /-й вершины к _/-й. Если непосредственной дуги между вершинами нет, то вес дуги считается равным Этот алгоритм имеет вид do k = 1, П do i = 1, п do ) = 1, п

if Л(ц) > Л(1,к)+Л(к,.0 Шеп Л(ц) = Ла,к)+Л(к,.0.

Теорема 1. При фиксированном к все итерации (/, /) внутреннего двойного цикла со счетчиками / и ] могут быть выполнены независимо.

Доказательство. Формально говоря, существует информационная зависимость между генератором «A(i,j) = » (вхождением переменной, записывающим в память) и использованиями «A(i,k), A(k,j)» (вхождениями переменных, читающими из памяти). Генератор «A(ij) = » может записать в ячейку памяти, из которой читает, вхождение «A(i,k)», если j=k . Этот же генератор пишет в ячейку памяти «A(kj)» , если i=k. Если j=k или i=k, выражение условного оператора A(i,j) > A(i,k)+A(k,j) ложно, поскольку все элементы матрицы A неотрицательны. Но если это выражение ложно, то и оператор присваивания, стоящий под условным оператором, не выполняется. Итак, при фиксированном k нет ячеек памяти, к которым происходит обращение и по чтению, и по записи. Следовательно, все итерации внутреннего двойного цикла могут выполняться одновременно.

Таким образом, при фиксированном k в двойном гнезде циклов со счетчиками i и j алгоритма Флойда нет истинных и антизависимостей. Очевидно, что при фиксированном k в этом двойном цикле отсутствуют выходные зависимости. Входные зависимости в этом гнезде циклов есть между вхождениямиA(i,k) и A(k,j). Эти зависимости осуществляются при j=k или при i=k и приводят к необходимости перед параллельным выполнением итераций выполнять пересылки так, чтобы оба элемента матрицы A(i,k) и A(k,j) оказались в одном процессоре. Такие пересылки зависят от размещения элементов матрицы в процессорах. Размещения матрицы по строкам описаны в [1].

На основе алгоритма Флойда может быть получен алгоритм построения матрицы достижимости графа. Он имеет на входе матрицу смежностей графа, на выходе - матрицу достижимостей. Напомним, что матрица смежностей (достижимостей) графа - это такая матрица A = {aij}lj=1,.,n , у которой элемент aij = 1, если существует дуга (путь) от i-й вершины к j-й, и aj=0 в противоположном случае. Обе матрицы (смежностей и достижимостей) булевы. Данный алгоритм имеет вид do k = 1, n do i = 1, n do j = 1, n

if (A(i,j)=0) AND (A(i,k)=1) AND (A(k,j)=1) then A(i,j) = 1.

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

Блочно-рекурсивное размещение матрицы для алгоритма Флойда

Определение блочно-рекурсивного размещения матрицы опишем в алгоритмах Флойда и перемножения матриц. Блочно-рекурсивное размещение матриц не совпадает с блочно-аффинным, и при коммуникационной сети «гиперкуб» имеет преимущество.

Будем считать, что количество процессорных элементов (ПЭ) p вычислительной системы является степенью числа 4: p = 4s .

Матрицу А размерности п рассмотрим, как блочную 2-2 с квадратными блоками размера (п/2)-(п/2). Всего в ней 4 блока, А,у, /, ] = 1, 2, - блоки матрицы А (рис. 1).

0 1

2 3

Рис. 1. Соответствие 4 групп ПЭ блокам матрицы

Множество всех ПЭ разобьем на 4 равные группы. Разместим элементы матрицы поблочно - в каждой группе модулей памяти по одному: блокАу, /,] = 1, 2, - в группе модулей памяти с номером (/-1)-2 + у-1 (рис. 2).

Параллельный алгоритм Флойда

do 77 к = 1, п/2

% Пересылки 220 и 330 одновременно: do 220 I = 1, п/2

220 Л(/,к) пересылаем из группы ПЭ с номером

0 в группу ПЭ с номером 2

do 330 I = п/2+1, п

330 Л(/,к) пересылаем из группы ПЭ с номером

1 в группу ПЭ с номером 3

% Конец пересылок % Пересылки 440 и 550 одновременно: do 440у = 1, п/2

440 Л(ку') пересылаем из группы ПЭ с номером

0 в группу ПЭ с номером 1

do 550у = п/2+1, п

550 Л(к,у) пересылаем из группы ПЭ с номером

2 в группу ПЭ с номером 3

% Конец пересылок do 77 / = 1, п do 77 у = 1, п

if Л0У) > Л(/',к)+Л(к,у) Шеп 77 Л(у) = Л(/,к)+Л(к,у) do 88 к = п/2, п+1

% Пересылки 221 и 331 одновременно: do 221 I = 1, п/2

221 Л(/,к) пересылаем из группы ПЭ с номером

2 в группу ПЭ с номером 0

do 331 I = п/2+1, п

331 Л(/,к) пересылаем из группы ПЭ с номером

3 в группу ПЭ с номером 1

% Конец пересылок % Пересылки 441 и 551 одновременно: do 441 у = 1, п/2

441 Л(к,у) пересылаем из группы ПЭ с номером

1 в группу ПЭ с номером 0

do 551 у = п/2+1, п

551 Л(к,/) пересылаем из группы ПЭ с номером 3 в группу ПЭ с номером 2 % Конец пересылок do 88 / = 1, п

do 88 j = 1, n

if A(i,j) > A(i,k)+A(k,j) then 88 A(i,j) = A(i,k)+A(kj)

0 1

2 3

2 3

0 1

2 3

+

t

Рис. 2. Схема четырех пересылочных тактов

Каждая из 4 групп ПЭ в свою очередь может быть опять разбита на 4 группы и т.д. На рис. 3 приведена двойная нумерация такого разбиения на группы: число перед точкой означает номер группы в первом разбиении, а число после точки - номер внутри меньшей группы.

0,0 0,1 1,0 1,1

0,2 0,3 1,2 1,3

2,0 2,1 3,0 3,1

2,2 2,3 3,2 3,3

0000 0001 0100 0101

0010 0011 0110 0111

1000 1001 1100 1101

1010 1011 1110 1111

Рис. 3. Соответствие 16 групп ПЭ блокам матрицы

При использовании полнодоступного коммутатора или коммуникационной сети ^СиЬе данное разбиение позволяет за один шаг выполнять пересылки из группы 0 в 1 и из 2 в 3, а также и другие необходимые комбинации пересылок. Переход к двоичной кодировке ПЭ, как указано на рис. 4, позволяет установить соответствие ПЭ узлам коммуникационной сети ^СиЪе.

Рис. 4. Разбиение множества ПЭ на группы в двоичной кодировке. Нумерация соответствует нумерации узлов 4-мерного куба

При разбиении групп ПЭ на подгруппы в предложенном выше алгоритме рекурсивно изменяются (детализируются) только пересылки. Можно выделить n пересылочных шагов (количество итераций внешнего цикла). Каждый k-й пересылочный шаг состоит из 2-s = =2-log4(p) пересылок элементов k-й строки и k-го столбца.

Пусть в вычислительной системе используется полнодоступный коммутатор или log2(p)-мерный куб.

Если p = n2 , то пересылки всех элементов k-й строки можно выполнить одновременно. Всего в данном случае n-log2(n) пересылок и столько же исполнений тела исходного гнезда циклов.

Если n = p, то в каждом процессорном элементе разместится блок матрицы A d-d, где d = n12 . Теперь алгоритм сводится к предыдущему случаю с поправкой на то, что пересылка одной строки или столбца -это d одновременных пересылок чисел. Всего в данном случае n -d--log2(n) = n3/2-log2(n) пересылок. Это существенно меньше, чем при размещении матрицы по строкам или столбцам, как, например, в [1, лабораторная работа 5], где пересылок требуется n2-log2(n).

Литература

1. Gergel V.P. Teaching Course: CS338. Introduction to Parallel Programming. URL: http: // www.software.unn.ru/ccam/ mskurs/ENG/HTML/cs338_pp_labs.htm (дата обращения: 24.01.2010).

2. Gupta H., Sadayappan P. Communication Efficient Matrix-Multiplication on Hypercubes // Sixth Annual ACM Symposium on Parallel Algorithms and Architectures, 1994 (SPAA 1994). URL: http: //ilpubs.stanford.edu:8090/59/ (дата обращения: 24.01.2010).

3. Штейнберг Б.Я. Оптимальные параллельные переразмещения двумерных массивов // Программирование. 1993. № 6. С. 81-88.

4. Штейнберг Б.Я. Оптимальные параллельные переразмещения многомерных массивов при параллельных вычислениях // Интеллектуальные многопроцессорные системы: сб. тр. Междунар. науч-техн. конф. Таганрог, 1999. С. 151-155.

5. Кристофидес Н. Теория графов. Алгоритмический подход. М., 1974. 429 с.

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

16 марта 2010 г.

0

1

3

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