Составители:
Рубрика:
C Получение и распечатка своего номера
TID=OMP_GET_THREAD_NUM()
PRINT*, ’Hello World from thread=’, TID
C Участок кода для нити-мастера
IF (TID.EQ 0) THEN
NTHREADS= OMP_GET_NUM_THREADS()
PRINT*, ’NUMBER of threads=’,NTHREADS
C Завершение параллельной секции
!$OMP END PARALLEL
END
Каждая нить здесь выполняет фрагмент программы, печатая при-
ветствие и номер нити; кроме этого, основная нить печатает общее
число порожденных нитей.
Переменные NTHREADS и TID объявлены локальными; однако,
первая переменная (NTHREADS) могла бы быть объявлена общей без
нарушения работы программы, ибо она используется лишь в одной
нити (в нити-мастере); при этом захватываемая память сократи-
лась бы (не было бы ненужных копий).
Рассмотрим теперь программу сложения векторов.
PROGRAM VEC_ADD_DO
INTEGER N, CHUNK ,I
PARAMETER (N=100)
PARAMETER (CHUNK=100)
REAL A(N),B(N),C(N)
! Инициализация массивов
DO I=1,N
A(I)=I* 1.0
B(I)=A(I)
END DO
!$OMP PARALLEL SHARED(A,B,C,N) PRIVATE(I)
!$OMP DO SCHEDULE (DYNAMIC,CHUNK)
DO I=1,N
C(I)=A(I)+B(I)
END DO
!$OMP END DO NOWAIT
!$OMP END PARALLEL
END
143
Страницы
- « первая
- ‹ предыдущая
- …
- 140
- 141
- 142
- 143
- 144
- …
- следующая ›
- последняя »
