Параллельные вычисления. Баканов В.М. - 110 стр.

UptoLike

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

- 110 -
последовательность операторов, отсутствуют глобальные переменные, за-
прещена рекурсия, нет побочных эффектов при вычислениях и др., [9]). Ис-
ходный текст на НОРМА в высшей степени близок к записи численного ме-
тода решения конкретной задачи. В записи на языке НОРМА отсутствуют
избыточные информационные связи (полный анализ которых как раз и явля-
етсяахиллесовой
пятой систем выявления скрытого параллелизма), что и
позволяет реализовать эффективное автоматическое распараллеливание. За-
метим явное сходство парадигмы системы НОРМА с (использованной при
разработке Т-системы) идеей функционального программирования.
Программа на НОРМА содержит не менее одного раздела. Возможны раз-
делы трех видов: главный (ключевые слова MAIN PART), простой (PART) и
раздел-функция (FUNCTION), разделы могут
вызывать друг друга по имени
(рекурсия запрещена) и обмениваться данными с помощью механизма фор-
мальных и фактических параметров или путем использования внешних фай-
лов (описания INPUT и OUTPUT). Все описанные в списке формальных па-
раметров до слова RESULT являются входными данными, далеевыходные
(для раздела FUNCTION слово RESULT не используется, т.к. результат вы-
числения
функции связывается с именем и типом последней). Описанные в
разделе переменные являются локальными, глобальных переменных не су-
ществует.
В теле раздела могут быть заданы (в произвольном порядке) описания,
операторы и итерации. Важным понятием НОРМА является одномерная об-
ласть, путем операции произведения областей строится многомерная область
(с каждой размерностью связывается имя
индекса). Возможна операция мо-
дификации областей (добавление/удаление точек, изменение диапазона). Ус-
ловная область представляет собой подобласть, определяемую выполнением
некоторого условия над значениями точек области. Мощность языка НОРМА
выражена коллективными операциями над узлами областей (поддерживается
линейная топология и двумерная решетка).
В НОРМА определены имеющие привычные типы REAL, INTEGER,
DOUBLE и идентифицируемые именами
скалярные величины и величины на
области (последние связаны с конкретной областью и индексированы).
Скалярные операторы вычисляют арифметические значения скаляров,
оператор ASSUME вычисляет арифметические значения величин на областях
(вычисляются все значения по индексам области). Для выполнения итераций
имеется специальная конструкция ITERATION. В НОРМА определены стан-
дартные арифметические функции, функции редукции и внешние
функции
пользователя (могут быть вызовами функций на Fortran'е). Заключенные в
ограничители # ... # операторы выполняются строго в порядке их следования
в программе. Более подробно описание языка см. в [9] и на сайте
http://www.keldysh.ru/norma
.
                                   - 110 -


последовательность операторов, отсутствуют глобальные переменные, за-
прещена рекурсия, нет побочных эффектов при вычислениях и др., [9]). Ис-
ходный текст на НОРМА в высшей степени близок к записи численного ме-
тода решения конкретной задачи. В записи на языке НОРМА отсутствуют
избыточные информационные связи (полный анализ которых как раз и явля-
ется ‘ахиллесовой пятой’ систем выявления скрытого параллелизма), что и
позволяет реализовать эффективное автоматическое распараллеливание. За-
метим явное сходство парадигмы системы НОРМА с (использованной при
разработке Т-системы) идеей функционального программирования.
   Программа на НОРМА содержит не менее одного раздела. Возможны раз-
делы трех видов: главный (ключевые слова MAIN PART), простой (PART) и
раздел-функция (FUNCTION), разделы могут вызывать друг друга по имени
(рекурсия запрещена) и обмениваться данными с помощью механизма фор-
мальных и фактических параметров или путем использования внешних фай-
лов (описания INPUT и OUTPUT). Все описанные в списке формальных па-
раметров до слова RESULT являются входными данными, далее – выходные
(для раздела FUNCTION слово RESULT не используется, т.к. результат вы-
числения функции связывается с именем и типом последней). Описанные в
разделе переменные являются локальными, глобальных переменных не су-
ществует.
   В теле раздела могут быть заданы (в произвольном порядке) описания,
операторы и итерации. Важным понятием НОРМА является одномерная об-
ласть, путем операции произведения областей строится многомерная область
(с каждой размерностью связывается имя индекса). Возможна операция мо-
дификации областей (добавление/удаление точек, изменение диапазона). Ус-
ловная область представляет собой подобласть, определяемую выполнением
некоторого условия над значениями точек области. Мощность языка НОРМА
выражена коллективными операциями над узлами областей (поддерживается
линейная топология и двумерная решетка).
   В НОРМА определены имеющие привычные типы REAL, INTEGER,
DOUBLE и идентифицируемые именами скалярные величины и величины на
области (последние связаны с конкретной областью и индексированы).
   Скалярные операторы вычисляют арифметические значения скаляров,
оператор ASSUME вычисляет арифметические значения величин на областях
(вычисляются все значения по индексам области). Для выполнения итераций
имеется специальная конструкция ITERATION. В НОРМА определены стан-
дартные арифметические функции, функции редукции и внешние функции
пользователя (могут быть вызовами функций на Fortran'е). Заключенные в
ограничители # ... # операторы выполняются строго в порядке их следования
в программе. Более подробно описание языка см. в [9] и на сайте
http://www.keldysh.ru/norma.