ВУЗ:
Составители:
Рубрика:
- 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. ! конец основного раздела
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »