Up: Language Binding
Next: C Binding Issues
Previous: Deprecated Names and Functions
Originally,
MPI-1.1
provided bindings for Fortran 77.
These bindings are retained,
but they are now interpreted in the
context of the Fortran 90 standard. MPI can still
be used with most Fortran 77 compilers, as noted below.
When the term Fortran is used it means Fortran 90.
All MPI names have an MPI_ prefix, and all characters are
capitals. Programs must not declare variables, parameters, or
functions with names beginning with the prefix MPI_. To avoid
conflicting with the profiling interface, programs should also avoid
functions with the prefix PMPI_.
This is mandated to avoid possible name collisions.
All MPI Fortran subroutines have a return code in the last argument. A few
MPI operations which are functions do not have the return code argument.
The return code value for successful completion is
MPI_SUCCESS. Other error codes are implementation dependent;
see the error codes in
Chapter MPI Environmental Management
and Annex Language Bindings Summary
.
Constants representing the maximum length of a string are one smaller
in Fortran than in C and C++ as discussed in Section Constants
.
Handles are represented in Fortran as INTEGERs. Binary-valued
variables are of type LOGICAL.
Array arguments are indexed from one.
The MPI Fortran binding is inconsistent with the Fortran 90
standard in several respects. These
inconsistencies, such as register optimization problems,
have
implications for user codes that are discussed in detail
in Section A Problem with Register Optimization
. They are also inconsistent with
Fortran 77.
- An MPI subroutine with a choice argument may be
called with different argument types.
- An MPI subroutine with an assumed-size dummy argument may
be passed an actual scalar argument.
- Many MPI routines assume that actual arguments are
passed by address and that arguments are not copied on
entrance to or exit from the subroutine.
- An MPI implementation may read or modify user data (e.g.,
communication buffers used by nonblocking communications) concurrently
with a user program executing outside MPI calls.
- Several named ``constants,'' such as MPI_BOTTOM,
MPI_STATUS_IGNORE, and MPI_ERRCODES_IGNORE,
are not ordinary Fortran constants and require a special
implementation. See Section Named Constants
on
page Named Constants
for more information.
Additionally, MPI is inconsistent with Fortran 77 in a number of
ways, as noted below.
- MPI identifiers exceed 6 characters.
- MPI identifiers may contain underscores after the first character.
- MPI requires an include file, mpif.h. On systems
that do not support include files, the implementation should specify
the values of named constants.
- Many routines in
MPI
have KIND-parameterized integers
(e.g., MPI_ADDRESS_KIND and MPI_OFFSET_KIND)
that hold address information.
On systems that do not support Fortran 90-style parameterized
types, INTEGER*8 or INTEGER should be used instead.
- The memory allocation routine MPI_ALLOC_MEM
cannot
be usefully used in Fortran without a language extension that allows
the allocated memory to be associated with a Fortran variable.
Up: Language Binding
Next: C Binding Issues
Previous: Deprecated Names and Functions
Return to MPI-2.1 Standard Index
Return to MPI Forum Home Page
MPI-2.0 of July 1, 2008
HTML Generated on July 6, 2008