Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие - MPI.docx
Скачиваний:
22
Добавлен:
04.09.2019
Размер:
2.42 Mб
Скачать

Пример работы Fox's алгоритма

Рассмотрим работу Fox's алгоритма на примере умножения матриц 6-го порядка на 9-ти процессорах, то есть n=6, а р=9. В этом случае каждому процессору назначается подматрица порядка n/(р1/2) = 2 от каждой из матриц А, В и С и Fox's алгоритм выполняет умножение матриц за р1/2 = 3 этапа:

Этап 0 (шаг 1 ( слева ), шаг 2 ( по центру ), шаг 3 ( справа ) ):

Н а начальном этапе происходит рассылка подматриц , стоящих на главной диагонали, процессорам, работающим с подматрицами в той же строке. Далее на каждом процессоре происходит умножение полученной диагональной подматрицы на подматрицу , хранящуюся на данном процессоре. Результат умножения помещается в подматрицу процессора (i, j). Здесь i, j изменяются от 0 до 2. Перед переходом к следующему этапу происходит перемещение подматрицы от процессора (i, j) к процессору (i-1 j), то есть к непосредственно "верхнему" процессору. Процессоры нулевой строки посылают подматрицы процессорам последней (в данном случае второй) строки.

Этап 1 ( слева ) и этап 2 (справа ):

На первом этапе также происходит рассылка, но только уже подматриц , где q = р1/2 = 3, а i изменяется от 0 до 2. То есть процессоры нулевой, первой и второй строк получат подматрицы , и А2,0 соответственно. Далее на каждом процессоре происходит умножение полученной подматрицы на подматрицу полученную на предыдущем этапе от процессора непосредственно нижней строки. Результат умножения складывается с подматрицей и снова в нее записывается. Перед переходом к следующему этапу снова происходит восходящее перемещение подматриц , аналогичное их перемещению на этапе 0.

Второй(ив данном случае последний ) этап работы Fox's алгоритма полностью аналогичен предыдущим этапам и может быть описан следующей последовательностью шагов:

  • рассылка подматрицы процессорам i-той строки (на рисунке эти подматрицы выделены)

  • умножение на процессоре (i, j) подматриц и (Понятно, что в общем случае, подматрицы на данном этапе и предыдущем не совпадают)

  • = +*

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

Варианты заданий

№ Варианта

Алгоритм умножения

Размер матрицы

Число процессоров

1

Ленточный

10х10

10

2

Фокс

16х16

4

3

Ленточный

20х20

5

4

Фокс

16х16

4

5

Ленточный

10х10

5

6

Фокс

16х16

8

7

Ленточный

20х20

5

8

Фокс

16х16

8

9

Ленточный

10х10

10

10

Фокс

16х16

4

11

Ленточный

20х20

10

12

Фокс

10х10

5

13

Ленточный

16х16

16

14

Фокс

20х20

4