Составители:
Рубрика:
§ 3. Директивы Open MP. Описание параллельных
областей
Все директивы Open MP располагаются в комментариях и на-
чинаются с одной из следующих комбинаций !$OMP, C$OMP или
*$OMP (по правилам языка Fortran строки, начинающиеся с сим-
волов !,С или *, означают комментарии).
Все переменные окружения и функции, реализующие стандарт
Open MP, начинаются с префикса OMP_.
Описание параллельных областей: для такого описания ис-
пользуются две директивы
!$OMP PARALLEL
< параллельная область программы >
!$OMP END PARALLEL
Для выполнения фрагмента программы, расположенного меж-
ду данными директивами, основная нить порождает нити в количе-
стве OMP_NUM_THREADS-1, где OMP_NUM_THREADS — переменная окру-
жения, значение которой пользователь задаёт перед запуском про-
граммы. Все порожденные нити исполняют программу, находящу-
юся между указанными директивами.
На директиве !$OMP END PARALLEL происходит неявная
синхронизация нитей: сначала все нити достигают директиву
!$OMP END PARALLEL, и лишь после этого происходит слияние
всех нитей в основную нить, которая и продолжает процесс.
§ 4. Параллельные секции и их вложенность
В параллельной области каждой имеющейся нитью может
быть порождена параллельная секция (порождение нитью парал-
лельных нитей) и последующее их соединение (с сохранением гла-
венства порождающей нити). Число нитей в параллельной секции
можно задавать с помощью функции OMP_SET_NUM_THREADS, ко-
торая устанавливает значение переменной OMP_NUM_THREADS (при
этом значения переменной OMP_DYNAMIC должно быть установлено
в 1 с помощью функции OMP_SET_DYNAMIC).
Стратегию обработки вложенных секций можно менять с по-
мощью функции OMP_SET_NESTED.
137
Страницы
- « первая
- ‹ предыдущая
- …
- 134
- 135
- 136
- 137
- 138
- …
- следующая ›
- последняя »
