Limiting the scope of consistent regions
@autonomous
annotation,
you can limit the scope of a consistent region. When you add the @autonomous
annotation
to an operator that is in a consistent region, it is excluded from
the consistent region and the operator resorts back to its behavior
before it was part of a consistent region. The failure
of an operator in an autonomous region does not trigger the reset
of consistent regions, with one exception. The exception is when the
failed operator is fused in a PE with other operators that are in
a consistent region.The @autonomous
annotation specifies that an operator that starts an autonomous
region and its downstream operators do not participate in the drain and reset of a region. It is
not part of a consistent region. Regarding the downstream operators, the
@autonomous
annotation works the same way as the @consistent
annotation. The @autonomous
annotation is in effect for all the operators that
are downstream operators of the annotated operator.
The following figures show how the @autonomous
annotation
interacts with the @consistent
annotation.
One composite operator with one autonomous region
The
following figure shows an example of the @autonomous
annotation
that is applied to a composite operator. In the same way as the @consistent
annotation,
the compiler automatically identifies op11
and op12
as
the start operators of the annotated composite operator, which effectively
stops the draining and resetting that would otherwise flow through
that composite. Because the two consistent regions do not connect,
the example subgraph yields two independent consistent regions.

One primitive operator with one autonomous region
The following figure shows an example where the @autonomous
annotation is
applied to a primitive operator to end the consistent region that is defined by the upstream
composite operator. The downstream operators of the operator that starts the autonomous region
(op11
) stop when the downstream operators of the autonomous
operator reach an operator that is a downstream operator of a consistent region
(op15
).

One primitive operator with one autonomous region that precedes a consistent region
The following figure shows an example where the downstream operators of a primitive operator that
is annotated with @autonomous
stop when they reach an operator that is
annotated with @consistent
. This example yields two different consistent
regions.

One composite operator with one autonomous region and an inner consistent region
The following figure shows an example where the @autonomous
annotation is
applied to a composite operator. The downstream operators start at
op11
and stop at op13
because
op13
is annotated with @consistent
and is a
primitive operator within the composite operator.
