ВУЗ:
Составители:
Рубрика:
- 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.
Страницы
- « первая
- ‹ предыдущая
- …
- 108
- 109
- 110
- 111
- 112
- …
- следующая ›
- последняя »