Skip to content

Commit 6c02128

Browse files
committed
SQUASH_ME: OMNIBUS COMMIT
mpi_info_toint/fromint prior to MPI_Init or MPI_Session_init first pass at errhandler support simplify python support for user-defined err handlers VERSION - add support for versioning libmpi_abi add a blurb about how current and age and revision should work for this library. add man pages for new MPI_Abi and fromint/toint functions attributes - clean up extra helper data using the bindings_extra_state arg to ompi_attr_create_keyval add a readme about the MPI ABI support fortran: add the MPI_Abi entry points python framework: improve debugging also import util module Signed-off-by: Howard Pritchard <[email protected]>
1 parent ddab181 commit 6c02128

File tree

86 files changed

+1689
-109
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+1689
-109
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,7 @@ ompi/mpi/c/standard_*.c
539539
ompi/mpi/c/abi.h
540540
ompi/mpi/c/abi_get_info.c
541541
ompi/mpi/c/abi_converters.h
542+
ompi/mpi/c/abi_converters.c
542543
ompi/mpi/c/standard_abi
543544
ompi/mpi/tool/*_generated*.c
544545

VERSION

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ minor=1
2020
release=0
2121

2222
# MPI Standard Compliance Level
23-
mpi_standard_version=3
23+
mpi_standard_version=5
2424
mpi_standard_subversion=1
2525

2626
# OMPI required dependency versions.
@@ -92,6 +92,14 @@ date="Unreleased developer copy"
9292
# but they are "public" within the OMPI code base and select 3rd party
9393
# software packages.
9494

95+
# The current and age values of the libmpi_abi shared library are
96+
# implicitly determined by the MPI ABI definition of the
97+
# version of the MPI specification supported by this Open MPI release.
98+
# The MPI ABI is intended not to break backward compatibility,
99+
# so presumably the current and age values will move in lock step.
100+
# We assume we have flexibility with the revision number as
101+
# bugs are fixed, etc.
102+
95103
# Version numbers are described in the Libtool current:revision:age
96104
# format.
97105

@@ -100,6 +108,7 @@ libmpi_mpifh_so_version=0:0:0
100108
libmpi_usempi_tkr_so_version=0:0:0
101109
libmpi_usempi_ignore_tkr_so_version=0:0:0
102110
libmpi_usempif08_so_version=0:0:0
111+
libmpi_abi_so_version=0:0:0
103112
libopen_pal_so_version=0:0:0
104113
libmpi_java_so_version=0:0:0
105114
liboshmem_so_version=0:0:0

configure.ac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ OPAL_SAVE_VERSION([OPAL], [Open Portable Access Layer], [$srcdir/VERSION],
147147

148148
m4_ifdef([project_ompi],
149149
[AC_SUBST(libmpi_so_version)
150+
AC_SUBST(libmpi_abi_so_version)
150151
AC_SUBST(libmpi_mpifh_so_version)
151152
AC_SUBST(libmpi_usempi_tkr_so_version)
152153
AC_SUBST(libmpi_usempi_ignore_tkr_so_version)

docs/Makefile.am

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@ OMPI_MAN1 = \
8787
opal_wrapper.1
8888

8989
OMPI_MAN3 = \
90+
MPI_Abi_get_fortran_booleans.3 \
91+
MPI_Abi_get_fortran_info.3 \
92+
MPI_Abi_get_info.3 \
93+
MPI_Abi_get_version.3 \
94+
MPI_Abi_set_fortran_booleans.3 \
95+
MPI_Abi_set_fortran_info.3 \
9096
MPI_Abort.3 \
9197
MPI_Accumulate.3 \
9298
MPI_Add_error_class.3 \
@@ -151,6 +157,7 @@ OMPI_MAN3 = \
151157
MPI_Comm_flush_buffer.3 \
152158
MPI_Comm_free.3 \
153159
MPI_Comm_free_keyval.3 \
160+
MPI_Comm_fromint.3 \
154161
MPI_Comm_get_attr.3 \
155162
MPI_Comm_get_errhandler.3 \
156163
MPI_Comm_get_info.3 \
@@ -174,6 +181,7 @@ OMPI_MAN3 = \
174181
MPI_Comm_split.3 \
175182
MPI_Comm_split_type.3 \
176183
MPI_Comm_test_inter.3 \
184+
MPI_Comm_toint.3 \
177185
MPI_Compare_and_swap.3 \
178186
MPI_Dims_create.3 \
179187
MPI_Dist_graph_create.3 \
@@ -182,8 +190,10 @@ OMPI_MAN3 = \
182190
MPI_Dist_graph_neighbors_count.3 \
183191
MPI_Errhandler_create.3 \
184192
MPI_Errhandler_free.3 \
193+
MPI_Errhandler_fromint.3 \
185194
MPI_Errhandler_get.3 \
186195
MPI_Errhandler_set.3 \
196+
MPI_Errhandler_toint.3 \
187197
MPI_Error_class.3 \
188198
MPI_Error_string.3 \
189199
MPI_Errors.3 \
@@ -196,6 +206,7 @@ OMPI_MAN3 = \
196206
MPI_File_create_errhandler.3 \
197207
MPI_File_delete.3 \
198208
MPI_File_f2c.3 \
209+
MPI_File_fromint.3 \
199210
MPI_File_get_amode.3 \
200211
MPI_File_get_atomicity.3 \
201212
MPI_File_get_byte_offset.3 \
@@ -239,6 +250,7 @@ OMPI_MAN3 = \
239250
MPI_File_set_size.3 \
240251
MPI_File_set_view.3 \
241252
MPI_File_sync.3 \
253+
MPI_File_toint.3 \
242254
MPI_File_write.3 \
243255
MPI_File_write_all.3 \
244256
MPI_File_write_all_begin.3 \
@@ -282,13 +294,15 @@ OMPI_MAN3 = \
282294
MPI_Group_excl.3 \
283295
MPI_Group_f2c.3 \
284296
MPI_Group_free.3 \
297+
MPI_Group_fromint.3 \
285298
MPI_Group_from_session_pset.3 \
286299
MPI_Group_incl.3 \
287300
MPI_Group_intersection.3 \
288301
MPI_Group_range_excl.3 \
289302
MPI_Group_range_incl.3 \
290303
MPI_Group_rank.3 \
291304
MPI_Group_size.3 \
305+
MPI_Group_toint.3 \
292306
MPI_Group_translate_ranks.3 \
293307
MPI_Group_union.3 \
294308
MPI_Iallgather.3 \
@@ -317,12 +331,14 @@ OMPI_MAN3 = \
317331
MPI_Info_env.3 \
318332
MPI_Info_f2c.3 \
319333
MPI_Info_free.3 \
334+
MPI_Info_fromint.3 \
320335
MPI_Info_get.3 \
321336
MPI_Info_get_nkeys.3 \
322337
MPI_Info_get_nthkey.3 \
323338
MPI_Info_get_string.3 \
324339
MPI_Info_get_valuelen.3 \
325340
MPI_Info_set.3 \
341+
MPI_Info_toint.3 \
326342
MPI_Init.3 \
327343
MPI_Initialized.3 \
328344
MPI_Init_thread.3 \
@@ -348,6 +364,8 @@ OMPI_MAN3 = \
348364
MPI_Lookup_name.3 \
349365
MPI_Message_c2f.3 \
350366
MPI_Message_f2c.3 \
367+
MPI_Message_fromint.3 \
368+
MPI_Message_toint.3 \
351369
MPI_Mprobe.3 \
352370
MPI_Mrecv.3 \
353371
MPI_Neighbor_allgather.3 \
@@ -366,6 +384,8 @@ OMPI_MAN3 = \
366384
MPI_Open_port.3 \
367385
MPI_Op_f2c.3 \
368386
MPI_Op_free.3 \
387+
MPI_Op_fromint.3 \
388+
MPI_Op_toint.3 \
369389
MPI_Pack.3 \
370390
MPI_Pack_external.3 \
371391
MPI_Pack_external_size.3 \
@@ -398,10 +418,12 @@ OMPI_MAN3 = \
398418
MPI_Request_c2f.3 \
399419
MPI_Request_f2c.3 \
400420
MPI_Request_free.3 \
421+
MPI_Request_fromint.3 \
401422
MPI_Request_get_status.3 \
402423
MPI_Request_get_status_all.3 \
403424
MPI_Request_get_status_any.3 \
404425
MPI_Request_get_status_some.3 \
426+
MPI_Request_toint.3 \
405427
MPI_Rget.3 \
406428
MPI_Rget_accumulate.3 \
407429
MPI_Rput.3 \
@@ -423,12 +445,14 @@ OMPI_MAN3 = \
423445
MPI_Session_f2c.3 \
424446
MPI_Session_finalize.3 \
425447
MPI_Session_flush_buffer.3 \
448+
MPI_Session_fromint.3 \
426449
MPI_Session_get_info.3 \
427450
MPI_Session_get_nth_pset.3 \
428451
MPI_Session_get_num_psets.3 \
429452
MPI_Session_get_pset_info.3 \
430453
MPI_Session_iflush_buffer.3 \
431454
MPI_Session_init.3 \
455+
MPI_Session_toint.3 \
432456
MPI_Sizeof.3 \
433457
MPI_Ssend.3 \
434458
MPI_Ssend_init.3 \
@@ -440,6 +464,7 @@ OMPI_MAN3 = \
440464
MPI_Status_f082f.3 \
441465
MPI_Status_f2c.3 \
442466
MPI_Status_f2f08.3 \
467+
MPI_Status_fromint.3 \
443468
MPI_Status_get_error.3 \
444469
MPI_Status_get_source.3 \
445470
MPI_Status_get_tag.3 \
@@ -449,6 +474,7 @@ OMPI_MAN3 = \
449474
MPI_Status_set_error.3 \
450475
MPI_Status_set_source.3 \
451476
MPI_Status_set_tag.3 \
477+
MPI_Status_toint.3 \
452478
MPI_T.3 \
453479
MPI_T_category_changed.3 \
454480
MPI_T_category_get_categories.3 \
@@ -525,6 +551,7 @@ OMPI_MAN3 = \
525551
MPI_Type_f2c.3 \
526552
MPI_Type_free.3 \
527553
MPI_Type_free_keyval.3 \
554+
MPI_Type_fromint.3 \
528555
MPI_Type_get_attr.3 \
529556
MPI_Type_get_contents.3 \
530557
MPI_Type_get_envelope.3 \
@@ -544,6 +571,7 @@ OMPI_MAN3 = \
544571
MPI_Type_size.3 \
545572
MPI_Type_size_x.3 \
546573
MPI_Type_struct.3 \
574+
MPI_Type_toint.3 \
547575
MPI_Type_ub.3 \
548576
MPI_Type_vector.3 \
549577
MPI_Unpack.3 \
@@ -573,6 +601,7 @@ OMPI_MAN3 = \
573601
MPI_Win_flush_local_all.3 \
574602
MPI_Win_free.3 \
575603
MPI_Win_free_keyval.3 \
604+
MPI_Win_fromint.3 \
576605
MPI_Win_get_attr.3 \
577606
MPI_Win_get_errhandler.3 \
578607
MPI_Win_get_group.3 \
@@ -589,6 +618,7 @@ OMPI_MAN3 = \
589618
MPI_Win_start.3 \
590619
MPI_Win_sync.3 \
591620
MPI_Win_test.3 \
621+
MPI_Win_toint.3 \
592622
MPI_Win_unlock.3 \
593623
MPI_Win_unlock_all.3 \
594624
MPI_Win_wait.3 \

docs/building-apps/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Open MPI "wrapper" compilers.
1414
removed-mpi-constructs
1515
deprecation-warnings
1616
building-static-apps
17+
mpi-abi
1718

1819
.. warning:: Open MPI does not attempt to interoperate with other MPI
1920
implementations, nor executables that were compiled for

docs/building-apps/mpi-abi.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
.. _label-building-with-mpi-abi:
2+
3+
Building MPI applications using the MPI ABI
4+
===========================================
5+
6+
What is the MPI ABI
7+
-------------------
8+
9+
Starting with MPI 5.0, the MPI standard specifies an ABI for the c and
10+
Fortran MPI interfaces. In this release, Open MPI supports the c
11+
part of the MPI ABI.
12+
13+
By using the MPI ABI, an MPI application can be built against one
14+
implementation of MPI that supports the MPI ABI, and later run using
15+
the MPI ABI compliant MPI library generated using a different MPI
16+
implementation. This assumes that the application is dynamically linked.
17+
18+
The MPI 5.0 standard specifies the file name of the MPI ABI compliant
19+
library - libmpi_abi. The major version of the library is 1 and minor
20+
version is 0.
21+
22+
How to build an application using the MPI ABI
23+
---------------------------------------------
24+
25+
To build an application against the MPI ABI compliant Open MPI library,
26+
the ``mpicc_abi`` compiler wrapper must be used for compiling and
27+
linking the application or shared library.
28+
29+
This release does not support the Fortran ABI so there is no ``mpifort_abi``
30+
compiler wrapper. This mixed c/Fortran MPI apps cannot make use of the
31+
MPI ABI library with this release.
32+
33+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
.. _mpi_abi_get_fortran_booleans:
2+
3+
4+
MPI_Abi_get_fortran_booleans
5+
============================
6+
7+
.. include_body
8+
9+
:ref:`MPI_Abi_get_fortran_booleans` |mdash| Retrieves Fortran ABI details for the provided Fortran logical of size *logical_size*.
10+
11+
.. The following file was automatically generated
12+
.. include:: ./bindings/mpi_abi_get_fortran_booleans.rst
13+
14+
INPUT PARAMETERS
15+
----------------
16+
* ``logical_size``: the size of Fortran logical in bytes
17+
18+
OUTPUT PARAMETERS
19+
-----------------
20+
* ``logical_true``: the Fortran literal value TRUE
21+
* ``logical_false``: the Fortran literal value FALSE
22+
* ``is_set``: flag to indicate whether the logical boolean values were set previously (logical)
23+
* ``ierror``: Fortran only: Error status (integer).
24+
25+
DESCRIPTION
26+
-----------
27+
28+
:ref:`MPI_Abi_get_fortran_booleans` returns a values of TRUE and FALSE for a given Fortran
29+
logical size. *is_set* is set to true if the these values have been previously set either
30+
by a call to :ref:`MPI_Abi_set_fortran_booleans` or internally by MPI.
31+
32+
ERRORS
33+
------
34+
35+
.. include:: ./ERRORS.rst
36+
37+
.. seealso::
38+
* :ref:`MPI_Abi_set_fortran_info`
39+
* :ref:`MPI_Abi_get_fortran_info`
40+
* :ref:`MPI_Abi_set_fortran_booleans`
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
.. _mpi_abi_get_fortran_info:
2+
3+
4+
MPI_Abi_get_fortran_info
5+
========================
6+
7+
.. include_body
8+
9+
:ref:`MPI_Abi_get_fortran_info` |mdash| Retrieves Fortran ABI details info object
10+
11+
.. The following file was automatically generated
12+
.. include:: ./bindings/mpi_abi_get_fortran_info.rst
13+
14+
OUTPUT PARAMETERS
15+
-----------------
16+
* ``info``: New info object returned with Fortran ABI details.
17+
* ``ierror``: Fortran only: Error status (integer).
18+
19+
DESCRIPTION
20+
-----------
21+
22+
:ref:`MPI_Abi_get_fortran_info` returns a new info object providing
23+
additional information related to the Fortran ABI.
24+
25+
NOTES
26+
-----
27+
28+
The user is responsible for freeing info_used via :ref:`MPI_Info_free`.
29+
30+
ERRORS
31+
------
32+
33+
.. include:: ./ERRORS.rst
34+
35+
.. seealso::
36+
* :ref:`MPI_Info_free`
37+
* :ref:`MPI_Abi_set_fortran_info`
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
.. _mpi_abi_get_info:
2+
3+
4+
MPI_Abi_get_info
5+
================
6+
7+
.. include_body
8+
9+
:ref:`MPI_Abi_get_info` |mdash| Retrieves info hints about the ABI implementation
10+
11+
.. The following file was automatically generated
12+
.. include:: ./bindings/mpi_abi_get_info.rst
13+
14+
OUTPUT PARAMETERS
15+
-----------------
16+
* ``info``: New info object returned with ABI details.
17+
* ``ierror``: Fortran only: Error status (integer).
18+
19+
DESCRIPTION
20+
-----------
21+
22+
:ref:`MPI_Abi_get_info` returns a new info object providing
23+
additional information related to the ABI.
24+
25+
NOTES
26+
-----
27+
28+
The user is responsible for freeing info_used via :ref:`MPI_Info_free`.
29+
30+
ERRORS
31+
------
32+
33+
.. include:: ./ERRORS.rst
34+
35+
.. seealso::
36+
* :ref:`MPI_Info_free`

0 commit comments

Comments
 (0)