Содержание Назад

1 MAIN PART Summa.
2 BEGIN
3         Oij:(Oi:(i=1..v);Oj:(j=1..w)).
4         VARIABLE V DEFINED ON Oij DOUBLE.
5         VARIABLE Vsum,Contr DEFINED ON Oi DOUBLE.
6         DOMAIN PARAMETERS v=30,w=40.
7         FOR Oij ASSUME V=j+(i-1)*w.
8         COMPUTE SumV(V ON Oij RESULT Vsum ON Oi).
9         FOR Oi ASSUME Contr=SUM((Oj)V).
10         OUTPUT Vsum(FILE='summa.out',D20.10) ON Oi.
11         OUTPUT Contr(FILE='summa.out',D20.10) ON Oi.
12 END PART.
   
13 PART SumV.
14         V RESULT Vsum
15 BEGIN
16         Oij:(Oi:(i=1..v);Oj:(j=1..w)).
17         VARIABLE V DEFINED ON Oij DOUBLE.
18         VARIABLE Vsum DEFINED ON Oi DOUBLE.
19         DOMAIN PARAMETERS v=30,w=40.
20         DISTRIBUTION INDEX i=1..2,j=1.
21         FOR Oi ASSUME Vsum=SUM((Oj)V).
22 END PART.  

 

Рассмотрим эту программу более подробно (используемые ниже номера совпадают с нумерацией строк программы).

(1) Заголовок главного раздела программы Summa.

(2) Начало главного раздела.

(3) Определяется многомерная область Oij.

(4-5) Описание переменных V - матрица элементов, Vsum - величина для хранения суммы строк матрицы V, посчитанных распределено, Contr - величина для хранения суммы строк матрицы V, посчитанных последовательно (эта величина вводится чтобы показать, что результат не зависит от метода вычислений).

(6) Задание параметра областей (размерности матрицы и векторов сумм).

(7) Задание значений элементам матрицы V.

(8) Вызов раздела SumV, осуществляющего расчет.

(9) Вычисление сумм строк матрицы V, вычисления ведутся последовательно. Результатом является вектор Contr.

(10-11) Вывод результатов в файл summa.out.

(12) Конец главного раздела.

(13) Заголовок распределенного раздела SumV.

(14) Обозначение входного (V) и выходного (Vsum) параметров раздела.

(15) Начало раздела.

(16) Определяется многомерная область Oij.

(17-18) Описание переменных, являющихся параметрами раздела.

(19) Задание размерности областей.

(20) Задание индексов распределения.

(21) Вычисление сумм строк матрицы V, вычисления распределены на процессорных элементах (1,1)(1,2). Результатом является вектор Vsum.

(22) Конец распределенного раздела SumV.

Здесь приведены программы на языках Фортран-Convex, Фортран-GNS и Фортран-PVM, полученные из программы Summa в результате работы Норма транслятора, а также результат работы этих программ.

 


Содержание Назад