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

UptoLike

§ 7. Параллелизм независимых фрагментов
Параллелизм независимых фрагментов выполняется парой ди-
ректив SECTIONS, END SECTIONS и директивами SECTION, располо-
женными внутри упомянутой пары.
Структура программы такова:
!$OMP SECTIONS
!$OMP SECTION
< фрагмент 1 >
!$OMP SECTION
< фрагмент 2 >
!$OMP SECTION
< фрагмент 3 >
!$OMP END SECTIONS
Такая структура показывает, что фрагменты 1,2,3 можно вы-
полнять параллельно. Каждый из перечисленных фрагментов бу-
дет выполняться какой-либо нитью; номера нитей, которые будут
использованы, определяются авторами реализации Open MP и ге-
нерацией системы (для пользователя они представляются случай-
ными). В конце данной конструкции производится неявная син-
хронизация работы нитей; если в синхронизации нет необходимо-
сти, вместо !$OMP END SECTIONS должна использоваться директи-
ва !$OMP END SECTIONS NOWAIT.
Если в параллельной секции какой-либо участок программы
должен быть выполнен лишь одной нитью, то его следует поста-
вить между директивами !$OMP SINGLE и !$OMP END SINGLE. Ча-
ще всего необходимость в однократном выполнении возникает при
работе с общими переменными. Упомянутый участок программы в
таком случае будет выполнен одной нитью (выбор нити определя-
ется реализацией).
В конце участка производится неявная синхронизация всех
нитей (все нити проводят вычисления до директивы, определя-
ющей конец участка !$OMP END SINGLE в имеющейся последо-
вательности строк программы). Если синхронизация не требу-
ется, весто !$OMP END SINGLE следует использовать директиву
!$OMP END SINGLE NOWAIT.
141