Skip to content

Commit adf9a96

Browse files
authored
Merge pull request #13530 from bwbarrett/dist/5.0.9amzn1-prep
Prep for 5.0.9amzn1 release
2 parents d63aa94 + 22b7e2e commit adf9a96

Some content is hidden

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

52 files changed

+804
-226
lines changed

.github/workflows/ompi_nvidia.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: ompi_NVIDIA CI
22
on: [pull_request]
33
jobs:
44

5-
deployment:
5+
nvidia_deployment:
66
if: github.repository == 'open-mpi/ompi'
77
runs-on: [self-hosted, linux, x64, nvidia]
88
steps:
@@ -17,25 +17,25 @@ jobs:
1717
path: ompi_ci
1818
- name: Deployment infrastructure
1919
run: /start deploy
20-
build:
21-
needs: [deployment]
20+
nvidia_build:
21+
needs: [nvidia_deployment]
2222
runs-on: [self-hosted, linux, x64, nvidia]
2323
steps:
2424
- name: Building OMPI,UCX and tests
2525
run: /start build
26-
test:
27-
needs: [deployment, build]
26+
nvidia_test:
27+
needs: [nvidia_deployment, nvidia_build]
2828
runs-on: [self-hosted, linux, x64, nvidia]
2929
steps:
3030
- name: Running tests
3131
run: /start test
32-
clean:
33-
# always() should be used to run "clean" even when the workflow was canceled
32+
nvidia_clean:
33+
# always() should be used to run "clean" even when the workflow was canceled
3434
# ( in case of the right repository name)
3535
# The second condition doesn't work when the workflow was canceled
3636

3737
if: always() && (github.repository == 'open-mpi/ompi')
38-
needs: [deployment, build, test]
38+
needs: [nvidia_deployment, nvidia_build, nvidia_test]
3939
runs-on: [self-hosted, linux, x64, nvidia]
4040
steps:
4141
- name: Cleaning

.mailmap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,5 @@ George Katevenis <gkatev@ics.forth.gr>
137137
Brian Barrett <brian@bbarrett.org>
138138

139139
Andrii Bilokur <abilokur@nvidia.com> B-a-S <abilokur@nvidia.com>
140+
141+
Kento Hasegawa <hasegawa.kento@fujitsu.com> hasegawa.kento <hasegawa.kento@fujitsu.com>

3rd-party/openpmix

Submodule openpmix updated 52 files

3rd-party/prrte

Submodule prrte updated 49 files

VERSION

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
major=5
1919
minor=0
20-
release=8
20+
release=9
2121

2222
# MPI Standard Compliance Level
2323
mpi_standard_version=3
@@ -62,7 +62,7 @@ tarball_version=gitclone
6262

6363
# The date when this release was created
6464

65-
date="30 May 2025"
65+
date="15 October 2025"
6666

6767
# The shared library version of each of Open MPI's public libraries.
6868
# These versions are maintained in accordance with the "Library

config/ompi_check_ucx.m4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ AC_DEFUN([OMPI_CHECK_UCX],[
9999
UCP_WORKER_FLAG_IGNORE_REQUEST_LEAK,
100100
UCP_OP_ATTR_FLAG_MULTI_SEND,
101101
UCP_MEM_MAP_SYMMETRIC_RKEY,
102-
UCS_MEMORY_TYPE_RDMA],
102+
UCS_MEMORY_TYPE_RDMA,
103+
UCP_PARAM_FIELD_NODE_LOCAL_ID],
103104
[], [],
104105
[#include <ucp/api/ucp.h>])
105106
AC_CHECK_DECLS([UCP_WORKER_ATTR_FIELD_ADDRESS_FLAGS],

config/opal_check_cuda.m4

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ AC_ARG_WITH([cuda-libdir],
6060
[Search for CUDA libraries in DIR])],
6161
[],
6262
[AS_IF([test -d "$with_cuda"],
63-
[with_cuda_libdir=$(dirname $(find -H $with_cuda -name libcuda.so 2> /dev/null) 2> /dev/null)],
64-
[with_cuda_libdir=$(dirname $(find -H /usr/local/cuda -name libcuda.so 2> /dev/null) 2> /dev/null)])
63+
[with_cuda_libdir=$(dirname $(find -H $with_cuda -name libcuda.so 2> /dev/null | head -n 1) 2> /dev/null)],
64+
[with_cuda_libdir=$(dirname $(find -H /usr/local/cuda -name libcuda.so 2> /dev/null) 2> /dev/null | head -n 1)])
6565
])
6666
6767
# Note that CUDA support is off by default. To turn it on, the user has to

docs/history.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Open MPI represents the merger of three prior MPI implementations:
77
center and later migrated to the University of Notre Dame.
88
#. LA-MPI: from the US Department of Energy Los Alamos National
99
Laboratory.
10-
#. FT-MPI: from the University of Tennassee at Knoxville. One of the
10+
#. FT-MPI: from the University of Tennessee at Knoxville. One of the
1111
UTK developers moved back to the University of Stuttgart in late
1212
2004, which effectively added their team into the project.
1313

docs/man-openmpi/man3/MPI_Finalize.3.rst

Lines changed: 70 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ MPI_Finalize
55

66
.. include_body
77
8-
:ref:`MPI_Finalize` |mdash| Terminates MPI execution environment.
8+
:ref:`MPI_Finalize` |mdash| Terminates MPI world model.
99

1010
SYNTAX
1111
------
@@ -48,56 +48,82 @@ OUTPUT PARAMETER
4848
DESCRIPTION
4949
-----------
5050

51-
This routine cleans up all MPI states. Once this routine is called, no
52-
MPI routine (not even MPI_Init) may be called, except for
53-
:ref:`MPI_Get_version`, :ref:`MPI_Initialized`, and :ref:`MPI_Finalized`. Unless there has
54-
been a call to :ref:`MPI_Abort`, you must ensure that all pending
55-
communications involving a process are complete before the process calls
56-
:ref:`MPI_Finalize`. If the call returns, each process may either continue
57-
local computations or exit without participating in further
58-
communication with other processes. At the moment when the last process
59-
calls :ref:`MPI_Finalize`, all pending sends must be matched by a receive, and
60-
all pending receives must be matched by a send.
61-
62-
:ref:`MPI_Finalize` is collective over all connected processes. If no processes
63-
were spawned, accepted, or connected, then this means it is collective
64-
over MPI_COMM_WORLD. Otherwise, it is collective over the union of all
65-
processes that have been and continue to be connected.
51+
This routine finalizes the MPI world model. If the MPI world model
52+
has been initialized in an MPI process, it *must* be finalized exactly
53+
once by invoking this routine during the lifetime of that MPI process.
54+
This is different than the MPI session model, which can be initialized
55+
and finalized multiple times in an MPI process. See
56+
:ref:`MPI_Session_init` and :ref:`MPI_Session_finalize`.
57+
58+
Unless there has been a call to :ref:`MPI_Abort`, you must
59+
ensure that all pending communications in the MPI world model
60+
involving a process are complete before the process calls
61+
:ref:`MPI_Finalize`. If the call returns, each process may either
62+
continue local computations or exit without participating in further
63+
communication with other processes in the MPI world model. At the
64+
moment when the last process calls :ref:`MPI_Finalize`, all pending
65+
sends in the MPI world model must be matched by a receive, and all
66+
pending receives in the MPI world model must be matched by a send.
67+
68+
See `MPI-5.0:11.4.1 <https://www.mpi-forum.org/>`_ for a list of MPI
69+
functionality that is available (e.g., even when the MPI
70+
world model has not yet initialized or has already been finalized).
71+
72+
:ref:`MPI_Finalize` is collective over all connected processes. If no
73+
processes were spawned, accepted, or connected, then this means it is
74+
collective over ``MPI_COMM_WORLD``. Otherwise, it is collective over
75+
the union of all processes that have been and continue to be
76+
connected.
6677

6778
NOTES
6879
-----
6980

70-
All processes must call this routine before exiting. All processes will
71-
still exist but may not make any further MPI calls. :ref:`MPI_Finalize`
72-
guarantees that all local actions required by communications the user
73-
has completed will, in fact, occur before it returns. However,
74-
:ref:`MPI_Finalize` guarantees nothing about pending communications that have
75-
not been completed; completion is ensured only by :ref:`MPI_Wait`, :ref:`MPI_Test`, or
76-
:ref:`MPI_Request_free` combined with some other verification of completion.
77-
78-
For example, a successful return from a blocking communication operation
79-
or from :ref:`MPI_Wait` or :ref:`MPI_Test` means that the communication is completed
80-
by the user and the buffer can be reused, but does not guarantee that
81-
the local process has no more work to do. Similarly, a successful return
82-
from :ref:`MPI_Request_free` with a request handle generated by an :ref:`MPI_Isend`
83-
nullifies the handle but does not guarantee that the operation has
84-
completed. The :ref:`MPI_Isend` is complete only when a matching receive has
85-
completed.
86-
87-
If you would like to cause actions to happen when a process finishes,
88-
attach an attribute to MPI_COMM_SELF with a callback function. Then,
89-
when :ref:`MPI_Finalize` is called, it will first execute the equivalent of an
90-
:ref:`MPI_Comm_free` on MPI_COMM_SELF. This will cause the delete callback
91-
function to be executed on all keys associated with MPI_COMM_SELF in an
92-
arbitrary order. If no key has been attached to MPI_COMM_SELF, then no
93-
callback is invoked. This freeing of MPI_COMM_SELF happens before any
94-
other parts of MPI are affected. Calling :ref:`MPI_Finalized` will thus return
95-
"false" in any of these callback functions. Once you have done this with
96-
MPI_COMM_SELF, the results of :ref:`MPI_Finalize` are not specified.
81+
The MPI session model is different than the MPI world model, and has
82+
different scopes of availability for MPI functionality. See
83+
:ref:`MPI_Session_init` and :ref:`MPI_Session_finalize`.
84+
85+
All processes that initialized the MPI world model must call this
86+
routine before exiting. All processes will still exist but may not
87+
make any further MPI calls in the MPI world model. :ref:`MPI_Finalize`
88+
guarantees that all local actions required by communications in the
89+
MPI world model that the user has completed will, in fact, occur
90+
before it returns. However, :ref:`MPI_Finalize` guarantees nothing
91+
about pending communications in the MPI world model that have not been
92+
completed; completion is ensured only by the :ref:`MPI_Wait` and
93+
:ref:`MPI_Test` variants, or :ref:`MPI_Request_free` combined with
94+
some other verification of completion.
95+
96+
For example, a successful return from a blocking communication
97+
operation or from one of the :ref:`MPI_Wait` or :ref:`MPI_Test`
98+
varients means that the communication is completed by the user and the
99+
buffer can be reused, but does not guarantee that the local process
100+
has no more work to do. Similarly, a successful return from
101+
:ref:`MPI_Request_free` with a request handle generated by an
102+
:ref:`MPI_Isend` nullifies the handle but does not guarantee that the
103+
operation has completed. The :ref:`MPI_Isend` is complete only when a
104+
matching receive has completed.
105+
106+
If you would like to cause actions to happen when a process finalizes the MPI
107+
world model, attach an attribute to ``MPI_COMM_SELF`` with a callback
108+
function. Then, when :ref:`MPI_Finalize` is called, it will first
109+
execute the equivalent of an :ref:`MPI_Comm_free` on
110+
``MPI_COMM_SELF``. This will cause the delete callback function to be
111+
executed on all keys associated with ``MPI_COMM_SELF`` in an arbitrary
112+
order. If no key has been attached to ``MPI_COMM_SELF``, then no
113+
callback is invoked. This freeing of ``MPI_COMM_SELF`` happens before
114+
any other parts of the MPI world model are affected. Calling
115+
:ref:`MPI_Finalized` will thus return ``false`` in any of these
116+
callback functions. Once you have done this with ``MPI_COMM_SELF``,
117+
the results of :ref:`MPI_Finalize` are not specified.
97118

98119
ERRORS
99120
------
100121

101122
.. include:: ./ERRORS.rst
102123

103-
.. seealso:: :ref:`MPI_Init`
124+
.. seealso::
125+
* :ref:`MPI_Finalized`
126+
* :ref:`MPI_Init`
127+
* :ref:`MPI_Initialized`
128+
* :ref:`MPI_Session_init`
129+
* :ref:`MPI_Session_finalize`

docs/man-openmpi/man3/MPI_Finalized.3.rst

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ MPI_Finalized
55

66
.. include_body
77
8-
:ref:`MPI_Finalized` |mdash| Checks whether MPI has been finalized
8+
:ref:`MPI_Finalized` |mdash| Checks whether the MPI world model has been finalized
99

1010
SYNTAX
1111
------
@@ -45,20 +45,31 @@ Fortran 2008 Syntax
4545
OUTPUT PARAMETER
4646
----------------
4747

48-
* ``flag`` : True if MPI was finalized, and false otherwise (logical).
48+
* ``flag`` : True if the MPI world model was finalized, and false
49+
otherwise (logical).
4950
* ``ierror`` : Fortran only: Error status (integer).
5051

5152
DESCRIPTION
5253
-----------
5354

54-
This routine may be used to determine whether MPI has been finalized. It
55-
is one of a small number of routines that may be called before MPI is
56-
initialized and after MPI has been finalized (:ref:`MPI_Initialized` is
57-
another).
55+
This routine may be used to determine whether the MPI world model has
56+
been finalized. A different routine |mdash| :ref:`MPI_Initialized`
57+
|mdash| is used to indicate whether the MPI world model has been
58+
initialized.
59+
60+
See `MPI-5.0:11.4.1 <https://www.mpi-forum.org/>`_ for a list of MPI
61+
functionality that is available (e.g., even when the MPI
62+
world model has not yet initialized or has already been finalized).
5863

5964
ERRORS
6065
------
6166

6267
.. include:: ./ERRORS.rst
6368

64-
.. seealso:: :ref:`MPI_Init`
69+
.. seealso::
70+
* :ref:`MPI_Init`
71+
* :ref:`MPI_Init_thread`
72+
* :ref:`MPI_Finalize`
73+
* :ref:`MPI_Finalized`
74+
* :ref:`MPI_Session_init`
75+
* :ref:`MPI_Session_finalize`

0 commit comments

Comments
 (0)