Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы / Алгоритм Фокса.doc
Скачиваний:
31
Добавлен:
06.07.2016
Размер:
152.58 Кб
Скачать

Пример:

Ниже приведена схема алгоритма Фокса для q = 2 (при этом количество процессов равно 4).

Таблица 2

Номер итерации m

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

Процесс

(Исходный блок Аij)

ij

(1) Пересылка одного из блоков A во все процессы строки

(Блок Вij)

ij

(2) Вычисление очередного слагаемого блока

(3) Пересылка блока B

0

1

(0,0)

00

Получен А00

00

A00*B00

B послан в (1,0)

2

(0,1)

01

Получен А00

01

A00*B01

B послан в (1,1)

3

(1,0)

10

Получен А11

10

A11*B10

B послан в (0,0)

4

(1,1)

11

Получен А11

11

A11*B11

B послан в (0,1)

1

1

(0,0)

00

Получен А01

10

+ A01*B10

2

(0,1)

01

Получен А01

11

+ A01*B11

3

(1,0)

10

Получен А10

00

+ A10*B00

4

(1,1)

11

Получен А10

01

+ A10*B01

Выполним расчёт в соответствии со схемой:

Первая итерация, результаты умножения элементов:

Первый процессор

Второй процессор

Третий процессор

Четвёртый процессор

Вторая итерация, результаты умножения элементов:

Первый процессор

Второй процессор

Третий процессор

Четвёртый процессор

После сложения результат, как и ожидалось:

84 96 55 111

114 66 134 96

100 110 66 68

61 35 67 68

Масштабирование и распределение подзадач по процессорам

В рассмотренной схеме параллельных вычислений количество блоков может варьироваться в зависимости от выбора размера блоков – эти размеры могут быть подобраны таким образом, чтобы общее количество базовых подзадач совпадало с числом процессоров p. Так, например, в наиболее простом случае, когда число процессоров представимо в виде p = b2  (т.е. является полным квадратом), можно выбрать количество блоков в матрицах по вертикали и горизонтали равным b (т.е. q = b ). Такой способ определения количества блоков приводит к тому, что объем вычислений в каждой подзадаче является одинаковым и тем самым достигается полная балансировка вычислительной нагрузки между процессорами. В более общем случае при произвольных количестве процессоров и размерах матриц балансировка вычислений может отличаться от абсолютно одинаковой, но, тем не менее, при надлежащем выборе параметров может быть распределена между процессорами равномерно в рамках требуемой точности.

Для эффективного выполнения алгоритма Фокса, в котором базовые подзадачи представлены в виде квадратной решетки и в ходе вычислений выполняются операции передачи блоков по строкам и столбцам решетки подзадач, наиболее адекватным решением является организация множества имеющихся процессоров также в виде квадратной решетки. В этом случае можно осуществить непосредственное отображение набора подзадач на множество процессоров – базовую подзадачу (i,j) следует располагать на процессоре Pi,j. Необходимая структура сети передачи данных может быть обеспечена на физическом уровне, если топология вычислительной системы имеет вид решетки или полного графа.