Составители:
Рубрика:
Необходимость порождения нитей и параллельного исполнения
может определяться динамически в ходе исполнения программы с
помощью условия IF:
!$OMP PARALLEL IF (< условие >).
Если < условие > не выполнено, то директива не выполняется и
программа обрабатывается в прежнем режиме.
§ 5. Распределение работы.
Программирование на низком уровне
Распределение работы в Open MP можно проводить следую-
щими способами:
1) программировать на низком уровне;
2) использовать директиву !$OMP DO для параллельного вы-
полнения циклов;
3) использовать директиву !$OMP SECTIONS для параллельно-
го выполнения независимых фрагментов программы;
4) применить директиву !$OMP SINGLE для однократного вы-
полнения участка программы.
Программирование на низком уровне предусматривает распре-
деление работы с использованием функций
!$OMP MP_GET_THREAD_NUM,
!$OMP OMP_GET_NUM_THREADS, которые позволяют определять
номер данной нити и общее число нитей.
Программа может составляться по схеме
!$OMP IF(OMP_GET_THREAD_NUM ().EQ.3) THEN
<индивидуальный фрагмент программы для нити с номером 3 >
!$OMP ELSE
<фрагмент программы для всех остальных нитей >
!$OMP ENDIF
Часть программы между зарезервированными словами THEN и ELSE
будет выполняться только нитью с номером 3, а все остальные нити
будут выполнять программу между и ELSE и ENDIF.
138
Страницы
- « первая
- ‹ предыдущая
- …
- 135
- 136
- 137
- 138
- 139
- …
- следующая ›
- последняя »
