Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / Parallelnye_vychislenia.doc
Скачиваний:
282
Добавлен:
15.02.2016
Размер:
410.62 Кб
Скачать

10. Двоичный код Грея и его использование на примере отображения некоторых топологий коммуникационной среды.

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

Топология сети передачи данных – это структура линий связи между процессорами вычислительной системы. Топология определяется с учетом эффективности технической реализации на основе анализа интенсивности передачи информационных потоков. К числу типовых топологий обычно относят следующие схемы коммуникации процессоров (см. рисунок).

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

Линейка (linear array or farm) – система, в которой каждый процессор, кроме первого и последнего, имеет линии связи только с двумя соседними. Такая схема просто реализуема, соответствует структуре передачи данных при организации конвейерных вычислений, но крайне не надежна.

Примеры элементарных топологий многопроцессорных вычислительных систем

Кольцо (ring) – получается из линейки процессоров соединением первого и последнего процессоров.

Звезда (star) – все процессоры имеют линии связи с некоторым управляющим процессором; данная топология является эффективной, например, при организации централизованных схем параллельных вычислений.

Решетка (mesh) – система, в которой граф линий связи образует прямоугольную сетку (двух или трехмерную); подобная топология достаточно проста в реализации и эффективно используется при распараллеливании численных алгоритмов (например, дифференциальных уравнений в частных производных в математическом моделировании).

Гиперкуб (hypercube) – данный вариант широко распространен в практике построения вычислительных систем и характеризуется рядом признаков:

а) два процессора имеют соединение, если двоичные представления их номеров имеют

только одну различающуюся позицию;

б) N-мерный гиперкуб может быть разделен на два (N-1)-мерных гиперкуба (всего возможно N различных разбиений);

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

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

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

Двоичный код Грея G(i,N) (binary reflected Gray code) определяется следующими выражениями:

(1)

где i задает номер значения в коде Грея, а N есть длина этого кода. Для иллюстрации подхода показывается отображение кольцевой топологии на гиперкуб для сети из p=8 процессоров.

i 0, 1, 2, 3, 4, 5, 6, 7 - номера вершин кольца

s 1, 2, 3 - т.к. N=3, то i принимает перечисленные значения

G(0,1)=0 G(0,2)=G(0,1)=0 G(0,3)= G(0,2)=G(0,1)=0

G(1,1)=1 G(1,2)=G(1,1)=1 G(1,3)= G(1,2)=G(1,1)=1

Рассмотрим G(2,1). По формуле (1) 2>=21 , тогда G(2,1)= 21 +G(22-1-2,1)=3

G(2,2)=G(2,1)=3 G(2,3)= G(2,2)=G(2,1)=3

Рассмотрим G(3,1). По формуле (1) 3>=21 , тогда G(3,1)= 21 +G(22-1-3,1)=2

G(3,2)=G(3,1)=2 G(3,3)= G(3,2)=G(3,1)=2

Рассмотрим G(4,3). По формуле (1) 4<23 , тогда G(4,3)=G(4,2)

Рассмотрим G(4,2). По формуле (1) 4>=22 , тогда G(4,2)= 22 +G(23-1-4,2)=4+G(3,2)=6

Рассмотрим G(5,3). По формуле (1) 5<23 , тогда G(5,3)=G(5,2)

Рассмотрим G(5,2). По формуле (1) 5>=22 , тогда G(5,2)= 22 +G(23-1-5,2)=4+G(2,2)=7

Рассмотрим G(6,3). По формуле (1) 6<23 , тогда G(6,3)=G(6,2)

Рассмотрим G(6,2). По формуле (1) 6>=22 , тогда G(6,2)= 22 +G(23-1-6,2)=4+G(1,2)=5

Рассмотрим G(7,3). По формуле (1) 7<23 , тогда G(7,3)=G(7,2)

Рассмотрим G(7,2). По формуле (1) 7>=22 , тогда G(7,2)= 22 +G(23-1-7,2)=4+G(0,2)=4

Результат представлен в таблице.

Код Грея для N=1

Код Грея для N=2

Код Грея для N=3

Номера процессоров

гиперкуба

кольца

0

0 0

0 0 0

0

0

1

0 1

0 0 1

1

1

1 1

0 1 1

3

2

1 0

0 1 0

2

3

1 1 0

6

4

1 1 1

7

5

1 0 1

5

6

1 0 0

4

7

Важным свойством кода Грея является тот факт, что соседние значения G(i,N) и G(i+1,N) имеют только одну различающуюся битовую позицию, поэтому соседние вершины в кольцевой топологии отображаются на соседние процессоры в гиперкубе.

Отображение топологии решетки на гиперкуб

Отображение топологии решетки на гиперкуб может быть выполняется аналогично кольцевой топологии. Тогда при отображении решетки на гиперкуб размерности 2r x 2s на гиперкуб размерности N=r+s элементу решетки с координатами (i,j), будет соответствовать процессор гиперкуба с номером G(i,j)||G(j,s), где операция || означает конкатенацию кодов Грея.

23

Соседние файлы в папке ГОСЫ