1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
.. _mpix_comm_revoke:
MPIX_Comm_revoke
================
.. include_body
:ref:`MPIX_Comm_revoke` - Revoke a communicator, causing errors to be
raised, at all ranks, for non-local operations on the communicator.
This is part of the User Level Fault Mitigation :ref:`ULFM extension <ulfm-label>`.
SYNTAX
------
C Syntax
^^^^^^^^
.. code-block:: c
#include <mpi.h>
#include <mpi-ext.h>
int MPIX_Comm_revoke(MPI_Comm comm)
Fortran Syntax
^^^^^^^^^^^^^^
.. code-block:: fortran
USE MPI
USE MPI_EXT
! or the older form: INCLUDE 'mpif.h'
MPIX_COMM_REVOKE(COMM, IERROR)
INTEGER COMM, IERROR
Fortran 2008 Syntax
^^^^^^^^^^^^^^^^^^^
.. code-block:: fortran
USE mpi_f08
USE mpi_ext_f08
MPIX_Comm_revoke(comm, ierror)
TYPE(MPI_Comm), INTENT(IN) :: comm
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
INPUT PARAMETERS
----------------
* ``comm``: Communicator (handle).
OUTPUT PARAMETERS
-----------------
* ``ierror``: Fortran only: Error status (integer).
DESCRIPTION
-----------
This function marks the communicator *comm* as revoked at all MPI processes
in the groups (local and remote) associated with the communicator *comm*.
This function is not collective and therefore does not have a matching call
on remote MPI processes.
The documentation for :ref:`MPIX_Comm_is_revoked` details the conditions
for when a communicator becomes revoked locally, and what semantics apply
on a revoked communicator. In summary, when a communicator is revoked,
non-local operation raise an exception of class MPIX_ERR_REVOKED,
except for select fault-tolerant operations.
PROPAGATION OF THE REVOKED STATE AND ORDERING
---------------------------------------------
The implementation propagates the revoked state in a fault-tolerant manner;
thus, the communicator becomes revoked at all non-failed MPI processes
belonging to *comm* despite failed processes.
There is no particular ordering between the revocation call at another
process and the completion of operations at a local process, for example,
a receive operation can raise an error of class MPIX_ERR_REVOKED, even if
the send operation procedure is called before the revoke procedure at the
sender.
ERRORS
------
.. include:: ./ERRORS.rst
.. seealso::
* :ref:`MPIX_Comm_is_revoked`
* :ref:`MPIX_Comm_agree`
* :ref:`MPIX_Comm_shrink`
|