@@ -7,8 +7,6 @@ Application Binary Interface (ABI). The MPI ABI is described in
77Chapter 20 of the MPI-5 standard. The standardized values for
88constants, etc. are presented in Appendix A of that document.
99
10- Open MPI supports the 'c' ABI functionality described in that chapter.
11-
1210## What does having a defined ABI mean to applications?
1311
1412By supporting a standardized ABI, an MPI application can be built
@@ -23,7 +21,7 @@ The MPI ABI specifies the file name of the ABI MPI
2321library (libmpi_abi). It does not explicitly specify the shared library
2422name(SONAME), but it presumably is libmpi_abi.0. Note we need for this to
2523by the same name as that used by the MPICH implementation of the MPI ABI.
26- The major and minor versions of the library are specified in this chapter as well.
24+ The major and minor versions of the library are specified in this chapter as well.
2725See the top level VERSION file for adjusting the SONAME.
2826
2927The name of the compiler wrapper - mpicc_abi - is also specified.
@@ -50,24 +48,23 @@ Note the ability to change the name of the OMPI ABI library (libmpi.la)
5048is still supported, so in the code base Makefiles this library actually
5149appears as lib@
[email protected] ).
5250
53- Since the Fortran ABI is not currently supported, the Fortran libraries
54- are only linked against libmpi.so.0.
51+ The Fortran OMPI libraries are linked against libmpi.so.0.
5552
5653## Installation considerations
5754
5855The MPI and OMPI libraries are installed in the same <install-path >/lib
5956folder. They have different file names so this presents no problems.
6057The OMPI ABI include files are installed in <install-path >/include as usual.
6158The MPI ABI include file is installed in <install-path >/include/standard_abi.
62- The mpicc_abi compiler wrapper points the c compiler to the correct mpi.h and
59+ The mpicc_abi compiler wrapper points the c compiler to the MPI ABI mpi.h and
6360links the executable/shared library against libmpi_abi.
6461
6562## Generating the ABI compliant mpi.h
6663
6764Rather than use the mpi.h at https://github.com/mpi-forum/mpi-abi-stubs ,
6865it was decided to develop infrastructure for building it from the latex
6966content of the MPI standard. It turns out that this was the better route
70- as bugs were found both in the standard itself and the mpi-abi-stubs
67+ as bugs were found both in the standard itself and the mpi-abi-stubs repo
7168mpi.h while developing this infrastructure.
7269
7370Generation of the mpi.h (and a shadow abi.h) include files involves four
@@ -103,11 +100,11 @@ The ABI compliant c bindings are generated using the binding infrastructure
103100originally developed to support big count. The infrastructure was significantly
104101enhanced to support generation of the MPI ABI bindings.
105102
106- This infrastructure uses templates (* .c.in) files to generate up to four
103+ This infrastructure uses templates (\ * .c.in) files to generate up to four
107104variants: OMPI ABI int count, OMPI ABI big count, MPI ABI int count,
108105MPI ABI big count. There are a small set of functions which have
109106only int count or big count. The templates for these files have
110- suffixes of (* .c.in_obc for big count only and * .c.in_nbc for int
107+ suffixes of (\ * .c.in_obc for big count only and \ * .c.in_nbc for int
111108count only).
112109
113110Note a number of procedures (e.g. all the _ f2c/_ c2f) are not present in
@@ -126,18 +123,18 @@ have two definitions of MPI predefined constants. As an example
126123in a MPI ABI source file there are two world communicator values defined:
127124MPI_COMM_WORLD, and MPI_COMM_WORLD_ABI_INTERNAL. The former
128125is the OMPI ABI defintion of the world communicator(address of a
129- global variable) , the later being the MPI ABI value for this constant (an integer).
126+ global variable) , the later being the MPI ABI value for this constant (an integer).
130127
131128The bindings framework parses the input argument types to the function
132129and generates calls to appropriate converter methods to convert any MPI ABI
133130constants in the arguments to OMPI ABI ones. A wrapped version
134131of the original function code is then called. Any output arguments
135132are converted from the OMPI ABI values back to MPI ABI ones.
136133This includes fields in MPI_Status objects which require conversion
137- (in particular error values) and error return values from the wrapped code.
134+ and error return values from the wrapped code.
138135
139136The bindings framework also generates two helper files - abi_converter.h
140- and abi_converter.c in addition to the generatedd OMPI and MPI ABI
137+ and abi_converter.c in addition to the generated OMPI and MPI ABI
141138source files.
142139
143140There are several implications of this approach.
@@ -173,7 +170,7 @@ to OMPI internal functions to support these.
173170Operator functions are handled by extending the internal support for
174171ops functions to allow for invocation of a translation routine to
175172convert the datatype argument from the OMPI ABI to MPI ABI values
176- as appropriate. A similar approach is taken for errhandlers .
173+ as appropriate. A similar approach is taken for error handlers .
177174
178175Generalized requests don't need special support as the MPI Status
179176structure for both MPI and OMPI ABIs are similar enough as to not
0 commit comments