ВУЗ:
Составители:
Рубрика:
- 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
- …
- следующая ›
- последняя »