Next: Storage and Sequence
Up: Extrinsic Procedures
Previous: Definition and Invocation
HPF requires a called extrinsic procedure to satisfy the following behavioral
- The overall implementation must behave as if all actions of the
caller preceding the subprogram invocation are completed before any
action of the subprogram is executed; and as if all actions of the
subprogram are completed before any action of the caller following the
subprogram invocation is executed.
- IN/OUT intent restrictions declared in the interface
for the extrinsic subroutine must be obeyed.
- Replicated variables, if updated, must be updated consistently.
More precisely, if a variable accessible to a local subprogram has a
replicated representation and is updated by (one or more copies of) the
local subroutine, then all copies of the replicated data must have
identical values when the last processor returns from the local
- No HPF variable is modified unless it could be modified by an
HPF procedure with the same explicit interface.
- When a subprogram returns and the caller resumes execution, all
objects accessible to the caller after the call are mapped exactly as
they were before the call.
- Exactly the same set of processors are visible to the HPF
environment before and after the subprogram call.
The call to an extrinsic procedure that fulfills these rules is
semantically equivalent to the execution of an ordinary HPF procedure.
Annex has examples of the use of local subprograms through