From 092cf1937d979ee2e3075d2960bcc00a6cdad50e Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Thu, 4 Oct 2018 21:02:35 +0900 Subject: [PATCH 1/2] man: Correct markup of `MPI_Neighbor_allgather` Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit 994b34525399e2524adeef6933e0bc3f673caf5f) --- ompi/mpi/man/man3/MPI_Neighbor_allgather.3in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ompi/mpi/man/man3/MPI_Neighbor_allgather.3in b/ompi/mpi/man/man3/MPI_Neighbor_allgather.3in index 74aee8799e..e152d747ce 100644 --- a/ompi/mpi/man/man3/MPI_Neighbor_allgather.3in +++ b/ompi/mpi/man/man3/MPI_Neighbor_allgather.3in @@ -33,13 +33,14 @@ MPI_NEIGHBOR_ALLGATHER(\fISENDBUF\fP,\fI SENDCOUNT\fP,\fI SENDTYPE\fP,\fI RECVBU INTEGER \fIIERROR\fP MPI_INEIGHBOR_ALLGATHER(\fISENDBUF\fP,\fI SENDCOUNT\fP,\fI SENDTYPE\fP,\fI RECVBUF\fP,\fI RECVCOUNT\fP,\fI - RECVTYPE\fP,\fI COMM\fP, \fPREQUEST\fI,\fI IERROR\fP) + RECVTYPE\fP,\fI COMM\fP, \fIREQUEST\fP,\fI IERROR\fP) \fISENDBUF\fP (*), \fIRECVBUF\fP (*) INTEGER \fISENDCOUNT\fP,\fI SENDTYPE\fP,\fI RECVCOUNT\fP,\fI RECVTYPE\fP,\fI COMM\fP, INTEGER \fIREQUEST, IERROR\fP .fi .SH Fortran 2008 Syntax +.nf USE mpi_f08 MPI_Neighbor_allgather(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, \fIrecvcount\fP, \fIrecvtype\fP, \fIcomm\fP, \fIierror\fP) From 4dd21111f09ebcfa588408f401f821d974ce6edf Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Thu, 4 Oct 2018 21:04:27 +0900 Subject: [PATCH 2/2] mpiext/pcollreq: Add Fortran bindings in man Fortran bindings were added to persistent collectives in 9e0115c980 but man was not updated. Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit 43d85dbc815bc5fd02c12810fb7c9f2ddd294f12) --- ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in | 414 ++++++++++++++++++- 1 file changed, 411 insertions(+), 3 deletions(-) diff --git a/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in index 5977e6e004..d63d0ca253 100644 --- a/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in +++ b/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in @@ -115,13 +115,421 @@ int MPIX_Neighbor_alltoallw_init(const void *\fIsendbuf\fP, const MPI_Datatype \fIrecvtypes\fP[], MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) +.fi +.SH Fortran Syntax +.nf +USE MPI +USE MPI_EXT +! or the older form: INCLUDE 'mpif.h'; INCLUDE 'mpif-ext.h' +MPIX_ALLGATHER_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, + RECVTYPE, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF\fP(*)\fI, RECVBUF\fP(*) + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, INFO\fP + INTEGER \fIREQUEST, IERROR\fP + +MPIX_ALLGATHERV_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, + RECVCOUNT, DISPLS, RECVTYPE, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF\fP(*)\fI, RECVBUF\fP(*) + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNT\fP(*) + INTEGER \fIDISPLS\fP(*)\fI, RECVTYPE, COMM, INFO, REQUEST, IERROR\fP + +MPIX_ALLREDUCE_INIT(\fISENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, INFO, + REQUEST, IERROR\fP) + \fISENDBUF\fP(*)\fI, RECVBUF\fP(*) + INTEGER \fICOUNT, DATATYPE, OP, COMM, INFO, REQUEST, IERROR\fP + +MPIX_ALLTOALL_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, + RECVTYPE, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_ALLTOALLV_INIT(\fISENDBUF, SENDCOUNTS, SDISPLS, SENDTYPE, + RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPE, COMM, INFO, REQUEST, + IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNTS(*), SDISPLS(*), SENDTYPE\fP + INTEGER \fIRECVCOUNTS(*), RDISPLS(*), RECVTYPE\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_ALLTOALLW_INIT(\fISENDBUF, SENDCOUNTS, SDISPLS, SENDTYPES, + RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPES, COMM, INFO, REQUEST, + IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNTS(*), SDISPLS(*), SENDTYPES(*)\fP + INTEGER \fIRECVCOUNTS(*), RDISPLS(*), RECVTYPES(*)\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_BARRIER_INIT(\fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, \fIIERROR\fP) + INTEGER \fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, \fIIERROR\fP + +MPIX_BCAST_INIT(\fIBUFFER\fP, \fICOUNT\fP, \fIDATATYPE\fP, \fIROOT\fP, \fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, + \fIIERROR\fP) + \fIBUFFER\fP(*) + INTEGER \fICOUNT\fP, \fIDATATYPE\fP, \fIROOT\fP, \fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, \fIIERROR\fP + +MPIX_EXSCAN_INIT(\fISENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, INFO, + REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fICOUNT, DATATYPE, OP, COMM, INFO, REQUEST, IERROR\fP + +MPIX_GATHER_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, + RECVTYPE, ROOT, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_GATHERV_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, + DISPLS, RECVTYPE, ROOT, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*)\fP + INTEGER \fIRECVTYPE, ROOT, COMM, INFO, REQUEST, IERROR\fP + +MPIX_REDUCE_INIT(\fISENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, + INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fICOUNT, DATATYPE, OP, ROOT, COMM, INFO, REQUEST, IERROR\fP + +MPIX_REDUCE_SCATTER_INIT(\fISENDBUF, RECVBUF, RECVCOUNTS, DATATYPE, OP, + COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fIRECVCOUNTS(*), DATATYPE, OP, COMM, INFO, REQUEST, IERROR \fP + +MPIX_REDUCE_SCATTER_BLOCK_INIT(\fISENDBUF, RECVBUF, RECVCOUNT, DATATYPE, + OP, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fIRECVCOUNT, DATATYPE, OP, COMM, INFO, REQUEST, IERROR \fP + +MPIX_SCAN_INIT(\fISENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, INFO, + REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fICOUNT, DATATYPE, OP, COMM, INFO, REQUEST, IERROR\fP + +MPIX_SCATTER_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, + RECVTYPE, ROOT, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_SCATTERV_INIT(\fISENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, + RECVCOUNT, RECVTYPE, ROOT, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNTS(*), DISPLS(*), SENDTYPE\fP + INTEGER \fIRECVCOUNT, RECVTYPE, ROOT, COMM, INFO, REQUEST, IERROR\fP + +MPIX_NEIGHBOR_ALLGATHER_INIT(\fISENDBUF\fP, \fISENDCOUNT\fP, \fISENDTYPE\fP, \fIRECVBUF\fP, + \fIRECVCOUNT\fP, \fIRECVTYPE\fP, \fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, \fIIERROR\fP) + \fISENDBUF\fP(*), \fIRECVBUF\fP(*) + INTEGER \fISENDCOUNT\fP, \fISENDTYPE\fP, \fIRECVCOUNT\fP, \fIRECVTYPE\fP, \fICOMM\fP, + INTEGER \fIINFO, REQUEST, IERROR\fP + +MPIX_NEIGHBOR_ALLGATHERV_INIT(\fISENDBUF\fP, \fISENDCOUNT\fP, \fISENDTYPE\fP, \fIRECVBUF\fP, + \fIRECVCOUNT\fP, \fIDISPLS\fP, \fIRECVTYPE\fP, \fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, \fIIERROR\fP) + \fISENDBUF\fP(*), \fIRECVBUF\fP(*) + INTEGER \fISENDCOUNT\fP, \fISENDTYPE\fP, \fIRECVCOUNT\fP(*), + INTEGER \fIDISPLS\fP(*), \fIRECVTYPE\fP, \fICOMM\fP, \fIINFO\fP, \fIREQUEST\fP, \fIIERROR\fP + +MPIX_NEIGHBOR_ALLTOALL_INIT(\fISENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, + RECVCOUNT, RECVTYPE, COMM, INFO, REQUEST, IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_NEIGHBOR_ALLTOALLV_INIT(\fISENDBUF, SENDCOUNTS, SDISPLS, SENDTYPE, + RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPE, COMM, INFO, REQUEST, + IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNTS(*), SDISPLS(*), SENDTYPE\fP + INTEGER \fIRECVCOUNTS(*), RDISPLS(*), RECVTYPE\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +MPIX_NEIGHBOR_ALLTOALLW_INIT(\fISENDBUF, SENDCOUNTS, SDISPLS, SENDTYPES, + RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPES, COMM, INFO, REQUEST, + IERROR\fP) + \fISENDBUF(*), RECVBUF(*)\fP + INTEGER \fISENDCOUNTS(*), SENDTYPES(*)\fP + INTEGER \fIRECVCOUNTS(*), RECVTYPES(*)\fP + INTEGER(KIND=MPI_ADDRESS_KIND) \fISDISPLS(*), RDISPLS(*)\fP + INTEGER \fICOMM, INFO, REQUEST, IERROR\fP + +.fi +.SH Fortran 2008 Syntax +.nf +USE mpi_f08 +USE mpi_f08_ext +MPIX_Allgather_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, \fIrecvcount\fP, + \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIrecvcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Allgatherv_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, \fIrecvcounts\fP, + \fIdispls\fP, \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIrecvcounts(*)\fP, \fIdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Allreduce_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIcount\fP, \fIdatatype\fP, \fIop\fP, \fIcomm\fP, \fIinfo\fP, + \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Alltoall_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, \fIrecvcount\fP, + \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIrecvcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Alltoallv_init(\fIsendbuf\fP, \fIsendcounts\fP, \fIsdispls\fP, \fIsendtype\fP, \fIrecvbuf\fP, + \fIrecvcounts\fP, \fIrdispls\fP, \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIsendcounts(*)\fP, \fIsdispls(*)\fP, + \fIrecvcounts(*)\fP, \fIrdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Alltoallw_init(\fIsendbuf\fP, \fIsendcounts\fP, \fIsdispls\fP, \fIsendtypes\fP, \fIrecvbuf\fP, + \fIrecvcounts\fP, \fIrdispls\fP, \fIrecvtypes\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIsendcounts(*)\fP, \fIsdispls(*)\fP, + \fIrecvcounts(*)\fP, \fIrdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN), ASYNCHRONOUS :: \fIsendtypes(*)\fP, + \fIrecvtypes(*)\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Barrier_init(\fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Bcast_init(\fIbuffer\fP, \fIcount\fP, \fIdatatype\fP, \fIroot\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, + \fIierror\fP) + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIbuffer\fP + INTEGER, INTENT(IN) :: \fIcount\fP, \fIroot\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Exscan_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIcount\fP, \fIdatatype\fP, \fIop\fP, \fIcomm\fP, \fIinfo\fP, + \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Gather_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, + \fIrecvcount\fP, \fIrecvtype\fP, \fIroot\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIrecvcount\fP, \fIroot\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Gatherv_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, \fIrecvcounts\fP, + \fIdispls\fP, \fIrecvtype\fP, \fIroot\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIroot\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIrecvcounts(*)\fP, \fIdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Reduce_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIcount\fP, \fIdatatype\fP, \fIop\fP, \fIroot\fP, \fIcomm\fP, + \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIcount\fP, \fIroot\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Reduce_scatter_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIrecvcounts\fP, \fIdatatype\fP, \fIop\fP, + \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIrecvcounts(*)\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Reduce_scatter_block_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIrecvcount\fP, \fIdatatype\fP, + \fIop\fP, \fIcomm\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIrecvcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Reduce_scatter_block_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIrecvcount\fP, \fIdatatype\fP, \fIop\fP, + \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIrecvcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Scan_init(\fIsendbuf\fP, \fIrecvbuf\fP, \fIcount\fP, \fIdatatype\fP, \fIop\fP, \fIcomm\fP, \fIinfo\fP, + \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIdatatype\fP + TYPE(MPI_Op), INTENT(IN) :: \fIop\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Scatter_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, \fIrecvcount\fP, + \fIrecvtype\fP, \fIroot\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIrecvcount\fP, \fIroot\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Scatterv_init(\fIsendbuf\fP, \fIsendcounts\fP, \fIdispls\fP, \fIsendtype\fP, \fIrecvbuf\fP, + \fIrecvcount\fP, \fIrecvtype\fP, \fIroot\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIsendcounts(*)\fP, \fIdispls(*)\fP + INTEGER, INTENT(IN) :: \fIrecvcount\fP, \fIroot\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Neighbor_allgather_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, + \fIrecvcount\fP, \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIrecvcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Neighbor_allgatherv_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, + \fIrecvcounts\fP, \fIdispls\fP, \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIrecvcounts(*)\fP, \fIdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Neighbor_alltoall_init(\fIsendbuf\fP, \fIsendcount\fP, \fIsendtype\fP, \fIrecvbuf\fP, + \fIrecvcount\fP, \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN) :: \fIsendcount\fP, \fIrecvcount\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Neighbor_alltoallv_init(\fIsendbuf\fP, \fIsendcounts\fP, \fIsdispls\fP, \fIsendtype\fP, + \fIrecvbuf\fP, \fIrecvcounts\fP, \fIrdispls\fP, \fIrecvtype\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, + \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIsendcounts(*)\fP, \fIsdispls(*)\fP, + \fIrecvcounts(*)\fP, \fIrdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN) :: \fIsendtype\fP, \fIrecvtype\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + +MPIX_Neighbor_alltoallw_init(\fIsendbuf\fP, \fIsendcounts\fP, \fIsdispls\fP, \fIsendtypes\fP, + \fIrecvbuf\fP, \fIrecvcounts\fP, \fIrdispls\fP, \fIrecvtypes\fP, \fIcomm\fP, \fIinfo\fP, \fIrequest\fP, + \fIierror\fP) + TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: \fIsendbuf\fP + TYPE(*), DIMENSION(..), ASYNCHRONOUS :: \fIrecvbuf\fP + INTEGER, INTENT(IN), ASYNCHRONOUS :: \fIsendcounts(*)\fP, \fIrecvcounts(*)\fP + INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN), ASYNCHRONOUS :: + \fIsdispls(*)\fP, \fIrdispls(*)\fP + TYPE(MPI_Datatype), INTENT(IN), ASYNCHRONOUS :: \fIsendtypes(*)\fP, + \fIrecvtypes(*)\fP + TYPE(MPI_Comm), INTENT(IN) :: \fIcomm\fP + TYPE(MPI_Info), INTENT(IN) :: \fIinfo\fP + TYPE(MPI_Request), INTENT(OUT) :: \fIrequest\fP + INTEGER, OPTIONAL, INTENT(OUT) :: \fIierror\fP + .fi .SH DESCRIPTION .ft R Creates a persistent communication request for a collective operation or neighborhood collective operation. -As of June 2018, the feature of persistent collective communication operations and persistent collective neighborhood communication operations is proposed in the MPI Forum. +As of Sept. 2018, the feature of persistent collective communication operations and persistent collective neighborhood communication operations is planned to be included in the next MPI Standerd after MPI-3.1. .nf https://github.com/mpi-forum/mpi-issues/issues/25 @@ -133,9 +541,9 @@ Open MPI implements its draft version shown in the following URL. https://github.com/mpi-forum/mpi-issues/files/2078076/mpi32-report-ticket25-austin-vote-june2018.pdf .fi -Because it is still in a draft stage, the interface may change in the standard. Therefore the prefix \fIMPIX_\fP is used instead of \fIMPI_\fP for these request creation functions. To start, complete, and free the created request, usual MPI functions (\fIMPI_Start\fP etc.) can be used. Only C bindings are available currently. +The interface may still change in the standard. Therefore the prefix \fIMPIX_\fP is used instead of \fIMPI_\fP for these request creation routines. To start, complete, and free the created request, usual MPI routines (\fIMPI_Start\fP etc.) can be used. -Future versions of Open MPI will switch to the \fIMPI_\fP prefix and will not require the header file \fImpi-ext.h\fP once the MPI Standard which includes this feature is published. +Future versions of Open MPI will switch to the \fIMPI_\fP prefix and will not require the C header file \fImpi-ext.h\fP, the Fortran modules \fImpi_ext\fP and \fImpi_f08_ext\fP, and the Fortran header file \fImpif-ext.h\fP once the MPI Standard which includes this feature is published. .SH EXAMPLE .nf