Storage and Sequence Up: Extrinsic Procedures Previous: Definition and Invocation

Requirements on the Called Extrinsic Procedure

HPF requires a called extrinsic procedure to satisfy the following behavioral requirements:

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 procedure.

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 extrinsic interfaces.
Thu Jul 21 17:05:43 CDT 1994