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.