Next:
Conventions for Local Up: High Performance Fortran Language Previous: Discussion of the

Coding Local Routines in HPF and Fortran 90

This annex defines a mechanism for coding single-processor ``node'' code in single-processor Fortran 90 or in a single-processor subset of HPF; the idea is that only data that is mapped to a given physical processor is accessible to it. This allows the programming of MIMD multiprocessor machines in a single-program multiple-data (SPMD) style. Implementation-specific libraries may be provided to facilitate communication between the physical processors that are independently executing this code, but the specification of such libraries is outside the scope of HPF and outside the scope of this annex.

The EXTRINSIC mechanism, which allows an HPF programmer to declare a calling interface to a non-HPF subprogram, is described in Section of the HPF specification.

From the caller's standpoint, an invocation of an extrinsic procedure from a ``global'' HPF program has the same semantics as an invocation of a regular procedure. The callee may see a different picture. This annex describes a particular set of conventions for coding callees in the ``local'' style in which a copy of the subprogram executes on each processor (of which there may be one or many).

An extrinsic procedure can be defined as explicit SPMD code by specifying the local procedure code that is to execute on each processor. HPF provides a mechanism for defining local procedures in a subset of HPF that excludes only data mapping directives, which are not relevant to local code. If a subprogram definition or interface uses the extrinsic-kind-keyword HPF_LOCAL, then an HPF compiler should assume that the subprogram is coded as a local procedure. Because local procedures written in HPF are thus syntactically distinguished, they may be intermixed unambiguously with global HPF code if the implementor of an HPF language processor chooses to support such intermixing.

This annex is divided into three parts:

  1. The contract between the caller and a callee that is a local procedure, that is, defined as explicit Single Program Multiple Data (SPMD) code.

  2. A specific version of this interface for the case where the callee is a local procedure coded in HPF (extrinsic-kind-keyword HPF_LOCAL). Such local procedures may be compiled separately or included as part of the text of a global HPF program.

  3. A specific version of this interface for the case where extrinsic procedures are defined as explicit SPMD code with each local procedure coded in Fortran 90 (the extrinsic-kind-keyword might be, for instance, F90_LOCAL). Ideally these local procedures may be separately compiled by a Fortran 90 compiler and then linked with HPF code, though this depends on implementation details.



Next:
Conventions for Local Up: High Performance Fortran Language Previous: Discussion of the


paula@erc.msstate.edu
Thu Dec 8 16:17:11 CST 1994