Содержание

Назад Вперед

5.1.7. Описание индексов распределения

declaration-of-distribution-indexes :
DISTRIBUTION INDEX name-index = simple-range , name-index = simple-range
DISTRIBUTED INDEX name-index = simple-range , name-index = simple-range
simple-range :
int-constant .. int-constant

Описание индексов распределения служит для отображения двух индексных направлений индексного пространства области задачи на матрицу процессорных элементов (ПЭ) распределенной системы. Разделы или функции, в которых присутствует это описание, называются распределенными, если оно отсутствует - нераспределенными. В распределенном разделе или функции это описание должно встречаться не более одного раза.

Данное описание приводит к распределению между ПЭ системы как данных, так и управления, и автоматической генерации операторов обмена данными между ПЭ, если это необходимо. Распределению подлежат величины, участвующие в расчетах и имеющие индексы, совпадающие с указанными в описании DISTRIBUTION INDEX.

Например, если задано описание

DISTRIBUTION INDEX i=1..8, j=1..1.

то все переменные, определенные на областях с индексами i и j, будут распределены по ПЭi,j с виртуальными номерами строк i=1..8 в столбце с номером j=1 матрицы ПЭ.

Вычисления, описанные в нераспределенном разделе или нераспределенной функции, выполняются целиком в одном ПЭ (хотя таких ПЭ может быть и несколько).

Описание

DISTRIBUTION INDEX i=2...8,j=0..0.

неверно: считается, что элементы матрицы ПЭ нумеруются, начиная с 1.

В языке Норма принята модель наследуемого распределения: раздел, в котором задано описание DISTRIBUTION INDEX, является головным распределенным разделом - он может вызываться только из нераспределенных разделов.

Раздел, в котором задано описание DISTRIBUTED INDEX, является распределенным разделом-наследником - он может вызываться только из распределенных разделов (головного распределенного раздела или других распределенных разделов-наследников).

При этом во всех распределенных разделах, входящих в цепочку вызовов

головной распределенный раздел > распределенный раздел-наследник > распределенный раздел-наследник

описания DISTRIBUTION INDEX и DISTRIBUTED INDEX должны иметь одинаковые параметры name-index = simple-range , name-index = simple-range. Пример структуры вызовов:

MAIN PART ABC. ! Главный нераспределенный раздел

COMPUTE HEAD(…). ! Вызов головного распределенного раздела HEAD

END PART
PART HEAD. … ! Головной распределенный радел HEAD
DISTRIBUTION INDEX I=1..3, J=1..3.

COMPUTE NEXT(…) .! Вызов распределенного раздела-наследника NEXT

END PART
PART NEXT. … ! Распределенный раздел-наследник NEXT
DISTRIBUTED INDEX I=1..3, J=1..3.

COMPUTE NEXT1(…)..! Вызов распределенного раздела-наследника NEXT1

END PART
PART NEXT1. … ! Распределенный раздел-наследник NEXT1
DISTRIBUTED INDEX I=1..3, J=1..3.

COMPUTE NEXT2(…).

END PART

Содержание

Назад Вперед