Высокопроизводительные вычисления на кластерах. Беликов Д.А - 34 стр.

UptoLike

34
рективой до тех пор, пока выделенный блок операторов программы
не освободится.
!$OMP BARRIER
Директива BARRIER синхронизирует работу всех нитей. Каж-
дая нить, выполнение которой достигло данной точки, ждет до тех
пор, пока все нити примут это состояние.
!$OMP FLUSH (список)
Директива FLUSH задает точку синхронизации, в которой зна-
чения переменных, указанных в списке и видимых из данной нити,
записываются в память. Тем самым обеспечивается согласование
содержимого памяти, доступного разным нитям. Неявно FLUSH
присутствует в следующих директивах: BARRIER, CRITICAL,
END CRITICAL, END DO, END PARALLEL, END SECTIONS,
END SINGLE, ORDERED, END ORDERED.
!$OMP ATOMIC
Объявляет операцию атомарной (при выполнении атомарной
операции одновременный доступ к памяти по записи разных нитей
запрещен). Применяется только к оператору, непосредственно сле-
дующему после данной директивы. Он может иметь следующий
вид:
x = x {+|−|*|/|.AND.|.OR.|.EQV.|.NEQV.} expression
x = expression {+|−|*|/|.AND.|.OR.|.EQV.|.NEQV.} x
x = {MAX|MIN|IAND|IOR|IEOR} (x, expression)
x = {MAX|MIN|IAND|IOR|IEOR} (expression, x)
Здесь expression скалярное выражение, не содержащее x.
!$OMP ORDERED
блок операторов программы
!$OMP END ORDERED
Обеспечивает сохранение того порядка выполнения итераций
цикла, который соответствует последовательному выполнению про-
граммы.
2.4.2 Runtime-процедуры и переменные окружения
В целях создания переносимой среды запуска параллельных про-
грамм в OpenMP определен ряд переменных окружения, контроли-