One of the principal roles played by C++ in programming massively parallel computers is in the design of distributed data structures that are either too complex or simply inconvenient to program in Fortran. However, the mainstay of scientific and engineering programming is Fortran. The reasons for this are more than cultural. The restrictions in the Fortran type-system prohibit the use of pointers beyond the simple alias mechanisms allowed by Fortran90. Consequently, Fortran compilers can perform aggressive data-dependence-based optimizations which are not possible in C++. In addition, code generation technology and optimized intrinsic library functions present in Fortran are much better than their C++ counterparts. With the present generation of Fortran90 compilers, vector and array operations will be easy to compile into efficient code. We believe that it is essential to support a portable programming environment that mixes Fortran with C++ across the entire range of supercomputing platforms.
There is no fundamental problem in linking Fortran to C++ programs. C++ has a standard facility for representing interfaces to other languages. However, with the founding of the High Performance Fortran Forum and the publication of the High Performance Fortran (HPF) extensions to Fortran90, we have a new problem. In the following sections, we explore and propose a mechanism for linking HPF programs to parallel C++ programs.