Local HPF procedures can use any HPF intrinsic or library procedure.
In addition, local library procedures GLOBAL_ALIGNMENT, GLOBAL_DISTRIBUTION, and GLOBAL_TEMPLATE are provided to query the global mapping of an actual argument to an extrinsic function. Other local library procedures are provided to query the size, shape, and array bounds of an actual argument. These library procedures take as input the name of a dummy argument and return information on the corresponding global HPF actual argument. They may be invoked only by a local procedure that was directly invoked by global HPF code. If module facilities are available, they reside in a module called HPF_LOCAL_LIBRARY; a local routine that calls them should include the statement
or some functionally appropriate variant thereof.
The HPF local routine library identifies each physical processor by an integer in the range to , where is the value returned by the global HPF_LIBRARY function NUMBER_OF_PROCESSORS. Processor identifiers are returned by ABSTRACT_TO_PHYSICAL, which establishes the one-to-one correspondence between the abstract processors of an HPF processors arrangement and the physical processors. Also, the local library function MY_PROCESSOR returns the identifier of the calling processor.
In all cases, when an argument of one of the procedures of the local HPF library is required to be a local dummy argument associated with a global HPF actual argument, such association is not considered to be transitive. That is, the local dummy argument must be a dummy argument of a procedure which was referenced from global HPF, not from another local subprogram.