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

UptoLike

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

- 66 -
Язык НОРМА называют декларативным вследствие упора именно на опи-
сание правил вычисления значений, а не на исчерпывающе подробную кон-
кретизацию алгоритма. Разработчик прикладных программ абстрагируется
от особенностей конкретных ЭВМ и мыслит в привычных терминах своей
предметной области (сеточные методы математической физики, в основном
метод конечных разностейМКР). Система НОРМА включает
синтезатор,
назначением которого является преобразование НОРМА-текста в (один из
привычных) языковых стандартов параллельного или последовательного
программирования (в настоящее время существует возможность получения
Fortran’MPI, Fortran’DVM, Fortran’77 или соответствующих C-текстов). Эф-
фективный автоматический синтез параллельного кода на основе НОРМА-
программы достигается определенными ограничениями языка, важное из ко-
торыхотсутствие многократного присваивания (при этом
несущественна
последовательность операторов, отсутствуют глобальные переменные, за-
прещена рекурсия, нет побочных эффектов при вычислениях и др., [8]). Ис-
ходный текст на НОРМА в высшей степени близок к записи численного ме-
тода решения конкретной задачи. В записи на языке НОРМА отсутствуют
избыточные информационные связи (полный анализ которых как раз и явля-
етсяахиллесовой пятой систем выявления скрытого параллелизма), что и
позволяет реализовать эффективное автоматическое распараллеливание. Бо-
лее подробно описание языка см. на
http://pilger.mgapi.edu/metods/
1441/norma.zip
,
http://www.keldysh.ru/norma
и в [8].
Важными конструкциями НОРМА являются описание разделов програм-
мы, областей и коллективных (в дальнейшем распараллеливаемых) опера-
ций. Ниже приведен текст программы, содержащий основной раздел (
MAIN
PART
), двух одномерных областей
Oi
и
Oj
, двумерной области
OA
(являющей-
ся объединением областей
Oi
и
Oj
), определения отображаемой на область
OA
переменной
a
, двух констант
iMAX
и
jMAX
и коллективной (выполняющей-
ся над всеми значениями
a[][]
) операции присвоения
a[i][j]
значения
i
×
j
(индек-
сы нумеруются начиная с 1):
MAIN PART Mmmatrix. ! Основной раздел)
BEGIN
Oi: (i=1..iMAX. ! определение одномерных областей
Oj: (j=1..jMAX).
OA: (Oi; Oj). ! определение двумерной области
VARIABLE a DEFINED ON OA DOUBLE. ! определение переменной на области OA
! здесь может находиться описание вывода распределенных на областях
! переменных, например, OUTPUT a(FILE=’Mmmatrix.out’) ON OC.
DOMAIN PARAMETERS iMAX=500. ! определение констант
DOMAIN PARAMETERS jMAX=1000.
FOR OA ASSUME a=i
×
j. ! коллективная операция для задания значений a[i][j]
! здесь может находиться заголовок (прототип) процедуры, совершающей
! некоторые действия над переменными, описанными на областях, например
! COMPUTE Pmatrix(a ON OA, b ON OB RESULT c ON OC).
END PART. ! конец основного раздела
                                         - 66 -

  Язык НОРМА называют декларативным вследствие упора именно на опи-
сание правил вычисления значений, а не на исчерпывающе подробную кон-
кретизацию алгоритма. Разработчик прикладных программ абстрагируется
от особенностей конкретных ЭВМ и мыслит в привычных терминах своей
предметной области (сеточные методы математической физики, в основном
метод конечных разностей – МКР). Система НОРМА включает синтезатор,
назначением которого является преобразование НОРМА-текста в (один из
привычных) языковых стандартов параллельного или последовательного
программирования (в настоящее время существует возможность получения
Fortran’MPI, Fortran’DVM, Fortran’77 или соответствующих C-текстов). Эф-
фективный автоматический синтез параллельного кода на основе НОРМА-
программы достигается определенными ограничениями языка, важное из ко-
торых – отсутствие многократного присваивания (при этом несущественна
последовательность операторов, отсутствуют глобальные переменные, за-
прещена рекурсия, нет побочных эффектов при вычислениях и др., [8]). Ис-
ходный текст на НОРМА в высшей степени близок к записи численного ме-
тода решения конкретной задачи. В записи на языке НОРМА отсутствуют
избыточные информационные связи (полный анализ которых как раз и явля-
ется ‘ахиллесовой пятой’ систем выявления скрытого параллелизма), что и
позволяет реализовать эффективное автоматическое распараллеливание. Бо-
лее подробно описание языка см. на http://pilger.mgapi.edu/metods/
1441/norma.zip, http://www.keldysh.ru/norma и в [8].
  Важными конструкциями НОРМА являются описание разделов програм-
мы, областей и коллективных (в дальнейшем распараллеливаемых) опера-
ций. Ниже приведен текст программы, содержащий основной раздел (MAIN
PART), двух одномерных областей Oi и Oj, двумерной области OA (являющей-
ся объединением областей Oi и Oj), определения отображаемой на область
OA переменной a, двух констант iMAX и jMAX и коллективной (выполняющей-
ся над всеми значениями a[][]) операции присвоения a[i][j] значения i × j (индек-
сы нумеруются начиная с 1):

MAIN PART Mmmatrix. ! Основной раздел)
BEGIN
  Oi: (i=1..iMAX. ! определение одномерных областей
  Oj: (j=1..jMAX).
  OA: (Oi; Oj). ! определение двумерной области
  VARIABLE a DEFINED ON OA DOUBLE. ! определение переменной на области OA
! здесь может находиться описание вывода распределенных на областях
! переменных, например, OUTPUT a(FILE=’Mmmatrix.out’) ON OC.
  DOMAIN PARAMETERS iMAX=500. ! определение констант
  DOMAIN PARAMETERS jMAX=1000.
  FOR OA ASSUME a=i × j. ! коллективная операция для задания значений a[i][j]
! здесь может находиться заголовок (прототип) процедуры, совершающей
! некоторые действия над переменными, описанными на областях, например
! COMPUTE Pmatrix(a ON OA, b ON OB RESULT c ON OC).
END PART. ! конец основного раздела