Skip to content

Commit 64edd0c

Browse files
committed
pr feedback for README_ABI
somehow missed this in all the other discussions. Signed-off-by: Howard Pritchard <[email protected]>
1 parent 0fcd866 commit 64edd0c

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

ompi/mpi/README_ABI.md

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ Application Binary Interface (ABI). The MPI ABI is described in
77
Chapter 20 of the MPI-5 standard. The standardized values for
88
constants, 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

1412
By 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
2321
library (libmpi_abi). It does not explicitly specify the shared library
2422
name(SONAME), but it presumably is libmpi_abi.0. Note we need for this to
2523
by 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.
2725
See the top level VERSION file for adjusting the SONAME.
2826

2927
The 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)
5048
is still supported, so in the code base Makefiles this library actually
5149
appears 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

5855
The MPI and OMPI libraries are installed in the same <install-path>/lib
5956
folder. They have different file names so this presents no problems.
6057
The OMPI ABI include files are installed in <install-path>/include as usual.
6158
The 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
6360
links the executable/shared library against libmpi_abi.
6461

6562
## Generating the ABI compliant mpi.h
6663

6764
Rather than use the mpi.h at https://github.com/mpi-forum/mpi-abi-stubs,
6865
it was decided to develop infrastructure for building it from the latex
6966
content 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
7168
mpi.h while developing this infrastructure.
7269

7370
Generation 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
103100
originally developed to support big count. The infrastructure was significantly
104101
enhanced 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
107104
variants: OMPI ABI int count, OMPI ABI big count, MPI ABI int count,
108105
MPI ABI big count. There are a small set of functions which have
109106
only 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
111108
count only).
112109

113110
Note 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
126123
in a MPI ABI source file there are two world communicator values defined:
127124
MPI_COMM_WORLD, and MPI_COMM_WORLD_ABI_INTERNAL. The former
128125
is 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

131128
The bindings framework parses the input argument types to the function
132129
and generates calls to appropriate converter methods to convert any MPI ABI
133130
constants in the arguments to OMPI ABI ones. A wrapped version
134131
of the original function code is then called. Any output arguments
135132
are converted from the OMPI ABI values back to MPI ABI ones.
136133
This 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

139136
The 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
141138
source files.
142139

143140
There are several implications of this approach.
@@ -173,7 +170,7 @@ to OMPI internal functions to support these.
173170
Operator functions are handled by extending the internal support for
174171
ops functions to allow for invocation of a translation routine to
175172
convert 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

178175
Generalized requests don't need special support as the MPI Status
179176
structure for both MPI and OMPI ABIs are similar enough as to not

0 commit comments

Comments
 (0)