ВУЗ:
Составители:
Рубрика:
- 67 -
Описанные в основном разделе операции не распараллеливаются и обычно
являются подготовительными для последующих вычислений. Описание кол-
лективной операции может выглядеть так (раздел
PART
содержит процедуру
Pmatrix
):
PART Pmatrix. ! начало раздела Pmatrix
a,b RESULT c ! a,b – входные параметры, с – выходной
! тело процедуры Pmatrix
BEGIN
Oi: (i=1..iMAX).
Oj: (j=1..jMAX).
Ok: (k=1..kMAX).
OA: (Oi; Ok).
OB: (Ok; Oj).
OC: (Oi; Oj).
VARIABLE a DEFINED ON OA DOUBLE.
VARIABLE b DEFINED ON OB DOUBLE.
VARIABLE c DEFINED ON OC DOUBLE.
DOMAIN PARAMETERS iMAX=500.
DOMAIN PARAMETERS jMAX=1000.
DOMAIN PARAMETERS kMAX=1000.
DISTRIBUTION INDEX i=1..12, j=1. ! описание топологии многопроцессорной системы
FOR OC ASSUME c=SUM((Ok)a[i,k]
×
b[k,j]). ! коллективная операция вычисления c[i][j]
END PART. ! конец раздела Pmatpix
В начале раздела
Pmatrix
описаны переменные
a,b
как входные параметры
и переменная
c
как выходной (ключевое слово
RESULT
) параметр. Умножае-
мые матрицы имеют размеры
a[i=1..iMAX][k=1..kMAX]
и
b[k=1..kMAX][j=1..jMAX]
,
результирующая матрица –
c[i=1..iMAX][j=1..jMAX]
.
Конструкция
FOR OC ASSUME c=SUM((Ok)a[i,k]
×
b[k,j]).
Описывает
коллективную операцию вычисления произведения матриц по формуле
b
kj
kMAXk
1k
a
ik
с
ij
×
∑
=
=
=
для каждого элемента матрицы
c.
Распределение данных и
вычислений на двумерную сетку процессоров в данном случае описано по-
средством
DISTRIBUTION INDEX i=1..12, j=1.
(инструкция
DISTRIBUTION INDEX
бессмысленна в основном разделе); при этом исходные матрицы
распределеляются по процессорам путем разбиения их на горизонтальные
ленты (в соответствие с индексом
i
). Критерий выбора индексных
направлений (в текущей версии НОРМА их допускается два) и их сочетаний
(если имеется возможность выбора из нескольких вариантов) в конструкции
DISTRIBUTION INDEX
с целью синтеза наиболее производительных программ
описан, напр., в
http://pilger.mgapi.edu/metods/1441/norma.zip.
С целью
обеспечения итераций в НОРМА имеется специальная инструкция,
позволяющая организовать итерационный цикл с проверкой выхода на
заданную точность.
Однако для создания текста НОРМА-программы все же требуется про-
граммист, знакомый с правилами языка и формально ‘набивающий’ исход-
- 67 -
Описанные в основном разделе операции не распараллеливаются и обычно
являются подготовительными для последующих вычислений. Описание кол-
лективной операции может выглядеть так (раздел PART содержит процедуру
Pmatrix):
PART Pmatrix. ! начало раздела Pmatrix
a,b RESULT c ! a,b – входные параметры, с – выходной
! тело процедуры Pmatrix
BEGIN
Oi: (i=1..iMAX).
Oj: (j=1..jMAX).
Ok: (k=1..kMAX).
OA: (Oi; Ok).
OB: (Ok; Oj).
OC: (Oi; Oj).
VARIABLE a DEFINED ON OA DOUBLE.
VARIABLE b DEFINED ON OB DOUBLE.
VARIABLE c DEFINED ON OC DOUBLE.
DOMAIN PARAMETERS iMAX=500.
DOMAIN PARAMETERS jMAX=1000.
DOMAIN PARAMETERS kMAX=1000.
DISTRIBUTION INDEX i=1..12, j=1. ! описание топологии многопроцессорной системы
FOR OC ASSUME c=SUM((Ok)a[i,k] × b[k,j]). ! коллективная операция вычисления c[i][j]
END PART. ! конец раздела Pmatpix
В начале раздела Pmatrix описаны переменные a,b как входные параметры
и переменная c как выходной (ключевое слово RESULT) параметр. Умножае-
мые матрицы имеют размеры a[i=1..iMAX][k=1..kMAX] и b[k=1..kMAX][j=1..jMAX],
результирующая матрица – c[i=1..iMAX][j=1..jMAX].
Конструкция FOR OC ASSUME c=SUM((Ok)a[i,k] × b[k,j]). Описывает
коллективную операцию вычисления произведения матриц по формуле
k =kMAX
с ij = ∑ a ik × b kj для каждого элемента матрицы c. Распределение данных и
k =1
вычислений на двумерную сетку процессоров в данном случае описано по-
средством DISTRIBUTION INDEX i=1..12, j=1. (инструкция DISTRIBUTION INDEX
бессмысленна в основном разделе); при этом исходные матрицы
распределеляются по процессорам путем разбиения их на горизонтальные
ленты (в соответствие с индексом i). Критерий выбора индексных
направлений (в текущей версии НОРМА их допускается два) и их сочетаний
(если имеется возможность выбора из нескольких вариантов) в конструкции
DISTRIBUTION INDEX с целью синтеза наиболее производительных программ
описан, напр., в http://pilger.mgapi.edu/metods/1441/norma.zip. С целью
обеспечения итераций в НОРМА имеется специальная инструкция,
позволяющая организовать итерационный цикл с проверкой выхода на
заданную точность.
Однако для создания текста НОРМА-программы все же требуется про-
граммист, знакомый с правилами языка и формально ‘набивающий’ исход-
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »
