Алгоритмы параллельных вычислений и программирование. Бурова И.Г - 164 стр.

UptoLike

Для обеспечения указанной локализации вместо директивы
CDVM$ DISTRIBUTE B(BLOCK)
необходимо применить директиву выравнивания массивов
CDVM$ ALIGN B(i) WITH A(f(i))
В результате элементы B(i) и A(f(i)) будут распределены на
один и тот же процессор.
Замечание. Есть возможность динамически изменять теку-
щее распределение данных с помощью директив REDISTRIBUTE и
REALIGN.
§ 4. Параллельное выполнение циклов
Директива паpаллельного выполнения циклов имеет вид
СDVM$ PARALLEL (i
1
, ..., i
m
) ON A (L
1
, ..., L
n
),
где
i
j
управляющие параметры циклов (тесно вложенных и сле-
дующих сразу после этой директивы),
L
k
= a
k
i
j
+ b
k
линейная функция (от управляющего пара-
метра),
A идентификатор массива данных или вектора задач (секции
процессоров).
Замечание 1. Все управляющие параметры циклов должны
перечисляться в том порядке, в каком расположены циклы в тексте
программы.
Действие директивы: итерация многомерного цикла (i
1
, ..., i
m
)
будет выполняться тем процессором, на который отображён эле-
мент массива A(L
1
, ..., L
n
).
Пример. Пусть F(A,B,i) некоторая подпрограмма, B мас-
сив, а i параметр цикла. Рассмотрим фрагмент программы
CDVM$ PARALLEL (i) ON B(i)
DO i=n1,n2
CALL F(A,B,i)
END DO
В результате i-ая итерация будет выполнена на процессоре, на
который распределён элемент B(i).
Замечание 2. В случае присваиваний вида A(i)=B(i) теоре-
тически могло бы быть два варианта действий:
165