-
Notifications
You must be signed in to change notification settings - Fork 937
Updated ABI generation code and new libraries #13280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
7e425a4
eebd824
1881940
20c973b
772b08c
50e1f7d
5a652c6
3257cb5
a449c28
2b9eaa8
2302419
d40150d
3a65c12
44b620e
a6da325
5fac420
39491dd
fbd0788
03250b6
fca68c3
360a2d7
9bd8e9f
143e5b3
3ba5c08
fa5de6a
e0c4614
76265a4
b99a3af
479147b
5981a87
e0af62a
2231aab
5d15192
d9c25b7
2df3922
a584be1
fcd00af
126c14a
acebae0
5a3d235
79385ef
73ba61b
d7d0d9b
e525beb
908d1b8
c837bbb
c3c500b
1ac6657
12c623f
6650e86
a444b9b
026df5f
ae72028
9eba648
47a6e9e
931430f
528e5e9
47f9c3b
8385db5
c3a4451
b8f8e4c
667db71
97c71d2
1f0254a
d86c6e4
949868f
b86d21e
d0b9d14
b18a8a5
117356e
fd1a0a8
57094ab
311eadd
e8ea562
5df6bae
8f7628b
6009f50
4f2aecf
869c1a2
e08a17a
12e750a
4fcf510
f707467
220739a
7d6fa88
e39a31b
db8111c
e342404
353ad35
43624b7
b691dac
1a962e6
f3bfbf3
dc5e23d
a3c7260
3375287
0a36325
0c3cbde
f9f6acd
ddb6d74
27c2e6a
15092ef
d165aed
3126f86
d56b5e6
4694f63
ce93d8c
5f27c44
f738ba1
0704146
d6baa28
0b710d6
34df931
9e79d60
1688d76
06cc3ea
edbe8e5
bc73bac
9153ff7
60275b5
eeca33f
a33ccb8
7b7f032
b8535be
53dc796
4a10921
7fced6c
2ab7ec9
7d9a631
742d99c
0307fe0
d581080
eb15f01
c766023
1e9f54f
590e08e
979e947
c10ad8f
6f61c18
43a3314
3f18ae2
ffa676e
1d1cf81
a566ddf
c3d6e57
874bbd1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| .. _label-building-with-mpi-abi: | ||
|
|
||
| Building MPI applications using the MPI ABI | ||
| =========================================== | ||
|
|
||
| What is the MPI ABI | ||
| ------------------- | ||
|
|
||
| Starting with MPI 5.0, the MPI standard specifies an ABI for the c and | ||
| Fortran MPI interfaces. In this release, Open MPI supports the c | ||
| part of the MPI ABI. | ||
|
|
||
| By using the MPI ABI, an MPI application can be built against one | ||
| implementation of MPI that supports the MPI ABI, and later run using | ||
| the MPI ABI compliant MPI library generated using a different MPI | ||
| implementation. This assumes that the application is dynamically linked. | ||
|
|
||
| The MPI 5.0 standard specifies the file name of the MPI ABI compliant | ||
| library - libmpi_abi. The major version of the library is 1 and minor | ||
| version is 0. | ||
|
Comment on lines
+18
to
+20
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is confusing. How is Open MPI going to define the SONAME? I'm assume that is going to be
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the soname used by mpich? If they use a different soname that defeats the whole point of having a consistent ABI
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right now it is Again, by the Linux/libtool conventions, the SONAME should be I elaborated in the matter long ago, but I'm not sure people really understood my point.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes I was going to check that (the MPICH libmpich_abi soname) as I had the same concern. Right now we are using a c/r/a that ends up generating a libmpi_abi with an soname of libmpi_abi.so.0. I wrote a blurb in the VERSION file (where we set these c,r,a for each of our Open MPI so's): I guess it should say I was thinking that if we (MPI Forum) add interfaces to the ABI we (Open MPI project) would crank up the current and age such that the C-A remains 0. And as @dalcinl notes we (MPI forum) would hopefully not do something that would case us to have to increment C and reset A to zero! I'll check out mpi-forum/mpi-abi-stubs#28 - it looks relevant. In any case I'll tweak the comment in the VERSION file.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Sounds good.
My initial proposal there is outdated, I originally proposed to start with |
||
|
|
||
| How to build an application using the MPI ABI | ||
| --------------------------------------------- | ||
|
|
||
| To build an application against the MPI ABI compliant Open MPI library, | ||
| the ``mpicc_abi`` compiler wrapper must be used for compiling and | ||
| linking the application or shared library. | ||
|
|
||
| This release does not support the Fortran ABI so there is no ``mpifort_abi`` | ||
| compiler wrapper. This mixed c/Fortran MPI apps cannot make use of the | ||
| MPI ABI library with this release. | ||
|
Comment on lines
+29
to
+31
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe rephrase this part as per my previous comment about no Fortran ABI? |
||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not accurate. The Fortran interfaces are not part of the ABI.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mean the MPI_Abi_fortran* are not part of the ABI or that MPI fortran entry points in general are not part of the ABI? Section 20.4.2
The MPI ABI Fortran Modules and Shared Librarystates that there is a Fortran ABI.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This one.
Maybe a leftover from @jeffhammond ?
@hppritcha What I'm trying to point out is that currently (and probably forever) it is not possible to define an interoperable ABI for Fortran. User cannot expect to compiler their Fortran code with MPICH's Fortran modules and libraries, and at runtime switch and run against Open MPI's implementation of Fortran stuff.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
somehow i figured the fortran in the mpi_f08 module would be generic enough that it would be interoperable. I guess i need to tweak my slides for the OMPI BOF.
Okay in this light I'll scrub the fortran wording in the README.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm really worried that the lack of a Fortran ABI will defeat the core interoperability purpose of the ABI to the point that we the new great stuff will not adopted widely.
There is only one possible solution for Fortran: Someone (Jeff) or the community (MPICH+OpenMPI) develop Fortran bindings that use the MPI C API exclusively, and then MPI implementaitons can vendor in their releases mostly unmodified. However, such Fortran bindings would be much easier to implement if MPI fixed a few shortcomings here and there to better support callbacks/trampolines. Such enhancements would benefit other language bindings, not only Fortran.