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
|
.. _mpi_psend_init:
MPI_Psend_init
==============
.. include_body
:ref:`MPI_Psend_init` |mdash| Initializes a partitioned send.
SYNTAX
------
C Syntax
^^^^^^^^
.. code-block:: c
#include <mpi.h>
int MPI_Psend_init(const void *buf, int partitions, int count, MPI_Datatype datatype, int dest,
int tag, MPI_Comm comm, MPI_Info info, MPI_Request *request)
Fortran Syntax
^^^^^^^^^^^^^^
.. code-block:: fortran
USE MPI
! or the older form: INCLUDE 'mpif.h'
MPI_PSEND_INIT(BUF, PARTITIONS, COUNT, DATATYPE, DEST, TAG, COMM, INFO, REQUEST, IERROR)
<type> BUF(*)
INTEGER PARTITIONS, COUNT, DATATYPE, DEST, TAG, COMM, INFO, REQUEST, IERROR
Fortran 2008 Syntax
^^^^^^^^^^^^^^^^^^^
.. code-block:: fortran
USE mpi_f08
MPI_Psend_init(buf, partitions, count, datatype, dest, tag, comm, info, request, ierror)
TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: buf
INTEGER, INTENT(IN) :: partitions, count, dest, tag
TYPE(MPI_Datatype), INTENT(IN) :: datatype
TYPE(MPI_Comm), INTENT(IN) :: comm
TYPE(MPI_Info), INTENT(IN) :: info
TYPE(MPI_Request), INTENT(OUT) :: request
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
INPUT PARAMETERS
----------------
* ``buf``: Initial address of send buffer (choice).
* ``partitions``: Number of partitions (integer).
* ``count``: Number of elements to be sent per partition (integer).
* ``datatype``: Datatype of each element (handle).
* ``dest``: Rank of source (integer).
* ``tag``: Message tag (integer).
* ``comm``: Communicator (handle).
* ``info``: Info argument (handle).
OUTPUT PARAMETERS
-----------------
* ``request``: Communication request (handle).
* ``ierror``: Fortran only: Error status (integer).
ERRORS
------
.. include:: ./ERRORS.rst
NOTE
----
The current implementation is an early prototype and is not fully
compliant with the MPI-4.0 specification. Specifically this function and
it's counterpart (MPI_Precv_init) will block until the partitioned
communication request is initialized on both ends. This behavior will be
corrected in future versions.
.. seealso::
* :ref:`MPI_Precv_init`
|