Параллельное программирование в стандарте MPI. Баканов В.М - 73 стр.

UptoLike

Составители: 

- 73 -
Рисунок 6.9 Окно задания решетки процессоров для выполнения параллельной
программы
Конечный результат работы синтезатора (программа на языке НОРМA)
имеет такой вид (комментарии выполнены вручную):
MAIN PART Listing.
! Программа умножения матриц (основной раздел)
BEGIN
Oi: (i=1..500). ! определение одномерных областей
Oj: (j=1..1000).
Ok: (k=1..1000).
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.
OUTPUT c(FILE='Listing.out') ON OC. ! операция вывода результирующей матрицы [C]
FOR OA ASSUME a=(i-1)+(k-1). ! коллективная операция для задания
FOR OB ASSUME b=(k-1)
×
(j-1). ! начальных значений элементам a[i][k] и b[k][j] матриц
COMPUTE Pmatrix(a ON OA, b ON OB RESULT c ON OC). ! вызов раздела Pmatrix
END PART. ! конец основного раздела
PART Pmatrix. ! начало раздела Pmatrix
a,b RESULT c ! a,b – входные параметры, свыходной
! тело процедуры Pmatrix
BEGIN
Oi: (i=1..500).
Oj: (j=1..1000).
Ok: (k=1..1000).
OA: (Oi; Ok).
OB: (Ok; Oj).
OC: (Oi; Oj).
                                             - 73 -




   Рисунок 6.9 — Окно задания решетки процессоров для выполнения параллельной
      программы

  Конечный результат работы синтезатора (программа на языке НОРМA)
имеет такой вид (комментарии выполнены вручную):

MAIN PART Listing.
! Программа умножения матриц (основной раздел)
BEGIN
  Oi: (i=1..500). ! определение одномерных областей
  Oj: (j=1..1000).
  Ok: (k=1..1000).
  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.
  OUTPUT c(FILE='Listing.out') ON OC. ! операция вывода результирующей матрицы [C]
  FOR OA ASSUME a=(i-1)+(k-1). ! коллективная операция для задания
  FOR OB ASSUME b=(k-1) × (j-1). ! начальных значений элементам a[i][k] и b[k][j] матриц
  COMPUTE Pmatrix(a ON OA, b ON OB RESULT c ON OC). ! вызов раздела Pmatrix
END PART. ! конец основного раздела

PART Pmatrix. ! начало раздела Pmatrix
  a,b RESULT c ! a,b – входные параметры, с – выходной
! тело процедуры Pmatrix
BEGIN
  Oi: (i=1..500).
  Oj: (j=1..1000).
  Ok: (k=1..1000).
  OA: (Oi; Ok).
  OB: (Ok; Oj).
  OC: (Oi; Oj).