This section builds on Section 6 by defining specific interfaces for HPF with different models of parallelism, LOCAL and SERIAL (Section 11.1), and different languages, HPF (Section 11.3), C (Section ), Fortran (Section ), and Fortran 77 (Section ). Library routines useful in the extrinsic models are defined in Section 11.7. These are defined with Fortran bindings. An implementation may chose to define similar routines for use with C. The intent of the HPF extrinsic mechanism is to generalize. These definitions may serve as a model for other interfaces. Some additional extrinsic interfaces are given after Annex E.
In HPF 1.1, specific extrinsic types HPF, HPF_LOCAL, and HPF_SERIAL were defined. There was also a short discussion of F90_LOCAL. In this more general setting, the HPF keywords are retained for compatibility. As defined in Section 6, a model of HPF refers to the global language, HPF_LOCAL is the same as LANGUAGE="0DHPF"0D,MODEL="0DLOCAL"0D, and HPF_SERIAL is the same as LANGUAGE="0DHPF"0D,MODEL="0DSERIAL"0D. The F90_LOCAL extrinsic is now addressed by the LANGUAGE="0DFORTRAN"0D,MODEL="0DSERIAL"0D extrinsic kind.
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. The following sections describe sets of conventions for coding callees in the various extrinsic options. The set of extrinsic options supported by a particular HPF compiler is implementation dependent. They are not limited to those described in this chapter. Furthermore, the language processor used to compile the actual extrinsic subprogram need not be an HPF compiler. More specifically, it need not actually be a compiler for the language noted in the LANGUAGE specification, as long as the executing extrinsic code conforms to the conventions defined for the language. We define these interfaces to promote portability and interoperability, but a given implementation and the programmer are free to create other combinations of models and languages.