Составители:
Рубрика:
§ 7. Удаленные данные
Иногда доступ к удаленным данным требует заведения специ-
ального буфера.
Пример.
DIMENTION A(100,100),B(100,100)
CDVM$ DISTRIBUTE (*,BLOCK)::A
CDVM$ ALIGN B(I,J) WITH A(I,J)
............................................
CDVM$ REMOTE_ACCESS (A(50,50))
C замена A(50,50) ссылкой на буфер на всех
C процессорах OWN(X) и рассылка значения A(50,50) по
C всем процессорам с последующим присваиванием
X=A(50,50)
............................................
CDVM$ REMOTE_ACCESS (B(100,100))
C пересылка значения B(100,100) в буфер
C процессора OWN(A(1,1)) с последующим присваиванием
A(1,1)=B(100,100)
............................................
CDVM$ PARALLEL (I,J) ON (A(I,J)) REMOTE_ACCESS (B(I,n))
C рассылка значений B(I,n) по процессорам OWN(A(i,j))
DO I=1,100
DO J=1,100
A(I,j)=B(I,J)+B(I,n)
END DO
END DO
Первые две директивы REMOTE_ACCESS описывают удаленные ссыл-
ки для отдельных операторов. Директива REMOTE_ACCESS в парал-
лельном цикле специфицирует удаленные данные (элементы n-го
столбца матрицы B) для всех процессоров, на которых выполняет-
ся цикл. При этом на каждый процессор будет переслана только
необходимая ему часть столбца матрицы B.
169
Страницы
- « первая
- ‹ предыдущая
- …
- 166
- 167
- 168
- 169
- 170
- …
- следующая ›
- последняя »