Developer Guide and Reference

ID 767251
Date 10/31/2024
Public
Document Table of Contents

DEPOBJ

OpenMP* Fortran Compiler Directive: Initializes, updates, or uninitializes an OpenMP depend object.

Syntax

!$OMP DEPOBJ(depend-object) clause

depend-object

Is a scalar integer variable with kind type OMP_DEPEND_KIND, a named integer kind type constant defined in module omp_lib.

clause

Is one of the following:

  • DEPEND (dependence-type : locator)

    Sets the state of depend-object to initialized with a value that represents the dependence specified. depend-object must be in an uninitialized state.

    dependence-type and locator are as described in the DEPEND clause with the following exceptions:

    • dependence-type must not specify the SOURCE or SINK dependence type.

    • The DEPEND clause of a DEPOBJ construct can contain only one locator.

  • DESTROY - this form, which shows no argument, is deprecated.

    DESTROY (destroy-var)

    Sets the state of destroy-var to be uninitialized.

    The destroy-var must be a scalar integer variable with kind type OMP_DEPEND_KIND and be in an initialized state or the behavior of the program is unspecified. destroy-var must be the same variable as depend-object.

    When DESTROY is specified, the interop-type is the interop-type used to initialize destroy-var. Argument interop-type is defined in the description of directive INTEROP.

    After execution of a DEPOBJ directive with a DESTROY clause, the object specified by destroy-var is unusable until it has been initialized by execution of an INTEROP construct.

    If destroy-var does not appear, it is as if destroy-var appeared and is the same variable as specified for depend-object. Note that the form DESTROY with no argument has been deprecated in OpenMP* specification 5.2.

  • UPDATE (dependence-type)

    Changes the dependence-type of an initialized depend-object to the dependence-type specified. depend-object must be in an initialized state. dependence-type cannot specify SOURCE, SINK, or DEPOBJ dependence types.

Description

A depend object allows dynamic user-computed dependencies to be used in DEPEND clauses.

Depend objects must only be modified in a DEPOBJ construct, and referenced in a DEPEND clause. Any other use of a variable that is a depend object makes the program a non-conforming OpenMP program. Depend objects have two states, uninitialized and initialized. Depend objects have an initial state of uninitialized.

The DEPOBJ directive is a standalone construct; it does not affect any loop-nest or structured-block following it. The binding thread set for a DEPOBJ regions is the thread that encounters it.