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 93 94 95 96 97 98 99 100 101 102
|
.. _mpi_win_shared_query:
MPI_Win_shared_query
====================
.. include_body
:ref:`MPI_Win_shared_query` |mdash| Query a shared memory window
SYNTAX
------
C Syntax
^^^^^^^^
.. code-block:: c
#include <mpi.h>
int MPI_Win_shared_query (MPI_Win win, int rank, MPI_Aint *size,
int *disp_unit, void *baseptr)
Fortran Syntax
^^^^^^^^^^^^^^
.. code-block:: fortran
USE MPI
! or the older form: INCLUDE 'mpif.h'
MPI_WIN_SHARED_QUERY(WIN, RANK, SIZE, DISP_UNIT, BASEPTR, IERROR)
INTEGER WIN, RANK, DISP_UNIT, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) SIZE, BASEPTR
Fortran 2008 Syntax
^^^^^^^^^^^^^^^^^^^
.. code-block:: fortran
USE mpi_f08
MPI_Win_shared_query(win, rank, size, disp_unit, baseptr, ierror)
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
TYPE(MPI_Win), INTENT(IN) :: win
INTEGER, INTENT(IN) :: rank
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size
INTEGER, INTENT(OUT) :: disp_unit
TYPE(C_PTR), INTENT(OUT) :: baseptr
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
INPUT PARAMETERS
----------------
* ``win``: Shared memory window object (handle).
* ``rank``: Rank in the group of window *win* (non-negative integer) or ``MPI_PROC_NULL``.
OUTPUT PARAMETERS
-----------------
* ``size``: Size of the window segment (non-negative integer).
* ``disp_unit``: Local unit size for displacements, in bytes (positive integer).
* ``baseptr``: Address for load/store access to window segment (choice).
* ``ierror``: Fortran only: Error status (integer).
DESCRIPTION
-----------
:ref:`MPI_Win_shared_query` queries the process-local address for
remote memory segments created with
:ref:`MPI_Win_allocate_shared`. This function can return different
process-local addresses for the same physical memory on different
processes. The returned memory can be used for load/store accesses
subject to the constraints defined in MPI-3.1 section 11.7. This
function can only be called with windows of flavor
MPI_WIN_FLAVOR_SHARED. If the passed window is not of flavor
MPI_WIN_FLAVOR_SHARED, the error MPI_ERR_RMA_FLAVOR is raised. When
rank is ``MPI_PROC_NULL``, the *pointer*, *disp_unit*, and *size* returned
are the pointer, disp_unit, and size of the memory segment belonging
the lowest rank that specified *size* > 0. If all processes in the
group attached to the window specified *size* = 0, then the call
returns *size* = 0 and a *baseptr* as if :ref:`MPI_Alloc_mem` was
called with *size* = 0.
C NOTES
-------
The parameter *baseptr* is of type ``void *`` to allow passing any
pointer object for this parameter. The provided argument should be a
pointer to a pointer of arbitrary type (e.g. ``void **``).
ERRORS
------
.. include:: ./ERRORS.rst
.. seealso::
* :ref:`MPI_Alloc_mem`
* :ref:`MPI_Win_allocate_shared`
|