From 545e9af896cfc0781dacacdd918e66d0c61dc4cc Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Thu, 19 Jan 2017 10:28:28 +0900 Subject: [PATCH] mpiext/pcollreq: Add `MPIX_Bcast_init` etc. Until the MPI Forum decides to add the persistent collective communication request feature to the MPI Standard, these functions are supported through MPI extensions with the `MPIX_` prefix. Only C bindings are supported currently. Signed-off-by: KAWASHIMA Takahiro --- .gitignore | 2 + ompi/mpiext/pcollreq/Makefile.am | 10 + ompi/mpiext/pcollreq/README.txt | 13 ++ .../mpiext/pcollreq/c/MPIX_Allgather_init.3in | 1 + .../pcollreq/c/MPIX_Allgatherv_init.3in | 1 + .../mpiext/pcollreq/c/MPIX_Allreduce_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Alltoall_init.3in | 1 + .../mpiext/pcollreq/c/MPIX_Alltoallv_init.3in | 1 + .../mpiext/pcollreq/c/MPIX_Alltoallw_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in | 157 ++++++++++++++++ ompi/mpiext/pcollreq/c/MPIX_Bcast_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Exscan_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Gather_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Gatherv_init.3in | 1 + .../c/MPIX_Neighbor_allgather_init.3in | 1 + .../c/MPIX_Neighbor_allgatherv_init.3in | 1 + .../c/MPIX_Neighbor_alltoall_init.3in | 1 + .../c/MPIX_Neighbor_alltoallv_init.3in | 1 + .../c/MPIX_Neighbor_alltoallw_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Reduce_init.3in | 1 + .../c/MPIX_Reduce_scatter_block_init.3in | 1 + .../pcollreq/c/MPIX_Reduce_scatter_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Scan_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Scatter_init.3in | 1 + ompi/mpiext/pcollreq/c/MPIX_Scatterv_init.3in | 1 + ompi/mpiext/pcollreq/c/Makefile.am | 63 +++++++ ompi/mpiext/pcollreq/c/mpiext_pcollreq.c | 174 ++++++++++++++++++ ompi/mpiext/pcollreq/c/mpiext_pcollreq_c.h | 33 ++++ ompi/mpiext/pcollreq/configure.m4 | 21 +++ 29 files changed, 494 insertions(+) create mode 100644 ompi/mpiext/pcollreq/Makefile.am create mode 100644 ompi/mpiext/pcollreq/README.txt create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Allgather_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Allgatherv_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Allreduce_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Alltoall_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Alltoallv_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Alltoallw_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Bcast_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Exscan_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Gather_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Gatherv_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgather_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgatherv_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoall_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallv_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallw_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Reduce_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_block_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Scan_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Scatter_init.3in create mode 100644 ompi/mpiext/pcollreq/c/MPIX_Scatterv_init.3in create mode 100644 ompi/mpiext/pcollreq/c/Makefile.am create mode 100644 ompi/mpiext/pcollreq/c/mpiext_pcollreq.c create mode 100644 ompi/mpiext/pcollreq/c/mpiext_pcollreq_c.h create mode 100644 ompi/mpiext/pcollreq/configure.m4 diff --git a/.gitignore b/.gitignore index f4d61df197..2dd0d653be 100644 --- a/.gitignore +++ b/.gitignore @@ -246,6 +246,8 @@ ompi/mpiext/example/tests/progress_usempif08 ompi/mpiext/cuda/c/MPIX_Query_cuda_support.3 ompi/mpiext/cuda/c/mpiext_cuda_c.h +ompi/mpiext/pcollreq/c/MPIX_*.3 + ompi/tools/mpisync/mpisync ompi/tools/mpisync/mpirun_prof ompi/tools/mpisync/ompi_timing_post diff --git a/ompi/mpiext/pcollreq/Makefile.am b/ompi/mpiext/pcollreq/Makefile.am new file mode 100644 index 0000000000..2b48a7514f --- /dev/null +++ b/ompi/mpiext/pcollreq/Makefile.am @@ -0,0 +1,10 @@ +# +# Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +SUBDIRS = c diff --git a/ompi/mpiext/pcollreq/README.txt b/ompi/mpiext/pcollreq/README.txt new file mode 100644 index 0000000000..0b30de9fe8 --- /dev/null +++ b/ompi/mpiext/pcollreq/README.txt @@ -0,0 +1,13 @@ +Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. + +$COPYRIGHT$ + +This extension provides the feature of persistent collective communication +operations and persistent neighborhood collective communication operations, +which is proposed in the MPI Forum as of June 2018. + +See MPIX_Barrier_init(3) for more details. + +The code will be moved to the ompi/mpi directory and the MPIX_ prefix will +be switch to the MPI_ prefix once the MPI Standard which includes this +feature is published. diff --git a/ompi/mpiext/pcollreq/c/MPIX_Allgather_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Allgather_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Allgather_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Allgatherv_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Allgatherv_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Allgatherv_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Allreduce_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Allreduce_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Allreduce_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Alltoall_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Alltoall_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Alltoall_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Alltoallv_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Alltoallv_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Alltoallv_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Alltoallw_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Alltoallw_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Alltoallw_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in new file mode 100644 index 0000000000..5977e6e004 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Barrier_init.3in @@ -0,0 +1,157 @@ +.\" -*- nroff -*- +.\" Copyright (c) 2018 FUJITSU LIMITED. All rights reserved. +.\" $COPYRIGHT$ +.TH MPIX_Barrier_init 3 "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#" +.SH NAME +\fBMPIX_Allgather_init, MPIX_Allgatherv_init, MPIX_Allreduce_init, MPIX_Alltoall_init, MPIX_Alltoallv_init, MPIX_Alltoallw_init, MPIX_Barrier_init, MPIX_Bcast_init, MPIX_Exscan_init, MPIX_Gather_init, MPIX_Gatherv_init, MPIX_Reduce_init, MPIX_Reduce_scatter_init, MPIX_Reduce_scatter_block_init, MPIX_Scan_init, MPIX_Scatter_init, MPIX_Scatterv_init, MPIX_Neighbor_allgather_init, MPIX_Neighbor_allgatherv_init, MPIX_Neighbor_alltoall_init, MPIX_Neighbor_alltoallv_init, MPIX_Neighbor_alltoallw_init\fP \- Builds a handle for a collective communication or neighborhood collective communication + +.SH SYNTAX +.ft R +.SH C Syntax +.nf +#include +#include +int MPIX_Allgather_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, int \fIrecvcount\fP, + MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Allgatherv_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, const int \fIrecvcounts\fP[], + const int \fIdispls\fP[], MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, + MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Allreduce_init(const void *\fIsendbuf\fP, void *\fIrecvbuf\fP, int \fIcount\fP, + MPI_Datatype \fIdatatype\fP, MPI_Op \fIop\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Alltoall_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, int \fIrecvcount\fP, + MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Alltoallv_init(const void *\fIsendbuf\fP, const int \fIsendcounts\fP[], + const int \fIsdispls\fP[], MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, + const int \fIrecvcounts\fP[], const int \fIrdispls\fP[], MPI_Datatype \fIrecvtype\fP, + MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Alltoallw_init(const void *\fIsendbuf\fP, const int \fIsendcounts\fP[], + const int \fIsdispls\fP[], const MPI_Datatype \fIsendtypes\fP[], void *\fIrecvbuf\fP, + const int \fIrecvcounts\fP[], const int \fIrdispls\fP[], + const MPI_Datatype \fIrecvtypes\fP[], MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Barrier_init(MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Bcast_init(void *\fIbuffer\fP, int \fIcount\fP, MPI_Datatype \fIdatatype\fP, + int \fIroot\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Exscan_init(const void *\fIsendbuf\fP, void *\fIrecvbuf\fP, int \fIcount\fP, + MPI_Datatype \fIdatatype\fP, MPI_Op \fIop\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Gather_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, int \fIrecvcount\fP, + MPI_Datatype \fIrecvtype\fP, int \fIroot\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Gatherv_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, const int \fIrecvcounts\fP[], + const int \fIdispls\fP[], MPI_Datatype \fIrecvtype\fP, int \fIroot\fP, MPI_Comm \fIcomm\fP, + MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Reduce_init(const void *\fIsendbuf\fP, void *\fIrecvbuf\fP, int \fIcount\fP, + MPI_Datatype \fIdatatype\fP, MPI_Op \fIop\fP, int \fIroot\fP, MPI_Comm \fIcomm\fP, + MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Reduce_scatter_init(const void *\fIsendbuf\fP, void *\fIrecvbuf\fP, + const int \fIrecvcounts\fP[], MPI_Datatype \fIdatatype\fP, MPI_Op \fIop\fP, + MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Reduce_scatter_block_init(const void *\fIsendbuf\fP, void *\fIrecvbuf\fP, + int \fIrecvcount\fP, MPI_Datatype \fIdatatype\fP, MPI_Op \fIop\fP, MPI_Comm \fIcomm\fP, + MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Scan_init(const void *\fIsendbuf\fP, void *\fIrecvbuf\fP, int \fIcount\fP, + MPI_Datatype \fIdatatype\fP, MPI_Op \fIop\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Scatter_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, int \fIrecvcount\fP, + MPI_Datatype \fIrecvtype\fP, int \fIroot\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Scatterv_init(const void *\fIsendbuf\fP, const int \fIsendcounts\fP[], + const int \fIdispls\fP[], MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, + int \fIrecvcount\fP, MPI_Datatype \fIrecvtype\fP, int \fIroot\fP, MPI_Comm \fIcomm\fP, + MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Neighbor_allgather_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, int \fIrecvcount\fP, + MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Neighbor_allgatherv_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, const int \fIrecvcounts\fP[], + const int \fIdispls\fP[], MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, + MPI_Info \fIinfo\fP, MPI_Request *\fIrequest\fP) + +int MPIX_Neighbor_alltoall_init(const void *\fIsendbuf\fP, int \fIsendcount\fP, + MPI_Datatype \fIsendtype\fP, void *\fIrecvbuf\fP, int \fIrecvcount\fP, + MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Neighbor_alltoallv_init(const void *\fIsendbuf\fP, + const int \fIsendcounts\fP[], const int \fIsdispls\fP[], MPI_Datatype \fIsendtype\fP, + void *\fIrecvbuf\fP, const int \fIrecvcounts\fP[], const int \fIrdispls\fP[], + MPI_Datatype \fIrecvtype\fP, MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\fP) + +int MPIX_Neighbor_alltoallw_init(const void *\fIsendbuf\fP, + const int \fIsendcounts\fP[], const MPI_Aint \fIsdispls\fP[], + const MPI_Datatype \fIsendtypes\fP[], void *\fIrecvbuf\fP, + const int \fIrecvcounts\fP[], const MPI_Aint \fIrdispls\fP[], + const MPI_Datatype \fIrecvtypes\fP[], MPI_Comm \fIcomm\fP, MPI_Info \fIinfo\fP, + MPI_Request *\fIrequest\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. +.nf + + https://github.com/mpi-forum/mpi-issues/issues/25 +.fi + +Open MPI implements its draft version shown in the following URL. +.nf + + 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. + +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. + +.SH EXAMPLE +.nf + + MPI_Request req; + MPIX_Barrier_init(MPI_COMM_WORLD, MPI_INFO_NULL, &req); + MPI_Start(&req); + MPI_Wait(&req, MPI_STATUS_IGNORE); + MPI_Request_free(&req); +.fi + +.SH SEE ALSO +.ft R +.sp +MPI_Start +.br +MPI_Startall +.br +MPI_Request_free diff --git a/ompi/mpiext/pcollreq/c/MPIX_Bcast_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Bcast_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Bcast_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Exscan_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Exscan_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Exscan_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Gather_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Gather_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Gather_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Gatherv_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Gatherv_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Gatherv_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgather_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgather_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgather_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgatherv_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgatherv_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_allgatherv_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoall_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoall_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoall_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallv_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallv_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallv_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallw_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallw_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Neighbor_alltoallw_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Reduce_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Reduce_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Reduce_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_block_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_block_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_block_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Reduce_scatter_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Scan_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Scan_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Scan_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Scatter_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Scatter_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Scatter_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/MPIX_Scatterv_init.3in b/ompi/mpiext/pcollreq/c/MPIX_Scatterv_init.3in new file mode 100644 index 0000000000..a9a04748c9 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/MPIX_Scatterv_init.3in @@ -0,0 +1 @@ +.so man3/MPIX_Barrier_init.3 diff --git a/ompi/mpiext/pcollreq/c/Makefile.am b/ompi/mpiext/pcollreq/c/Makefile.am new file mode 100644 index 0000000000..fa38759c8c --- /dev/null +++ b/ompi/mpiext/pcollreq/c/Makefile.am @@ -0,0 +1,63 @@ +# +# Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# We must set these #defines so that the inner OMPI MPI prototype +# header files do the Right Thing. +AM_CPPFLAGS = -DOMPI_PROFILE_LAYER=0 -DOMPI_COMPILING_FORTRAN_WRAPPERS=1 + +include $(top_srcdir)/Makefile.ompi-rules + +# Convenience libtool library that will be slurped up into libmpi.la. +noinst_LTLIBRARIES = libmpiext_pcollreq_c.la + +# This is where the top-level header file (that is included in +# ) must be installed. +ompidir = $(ompiincludedir)/ompi/mpiext/pcollreq/c + +# This is the header file that is installed. +ompi_HEADERS = mpiext_pcollreq_c.h + +# Sources for the convenience libtool library. Other than the one +# header file, all source files in the extension have no file naming +# conventions. +libmpiext_pcollreq_c_la_SOURCES = \ + $(ompi_HEADERS) \ + mpiext_pcollreq.c +libmpiext_pcollreq_c_la_LDFLAGS = -module -avoid-version + +# Man page installation +nodist_man_MANS = \ + MPIX_Allgather_init.3 \ + MPIX_Allgatherv_init.3 \ + MPIX_Allreduce_init.3 \ + MPIX_Alltoall_init.3 \ + MPIX_Alltoallv_init.3 \ + MPIX_Alltoallw_init.3 \ + MPIX_Barrier_init.3 \ + MPIX_Bcast_init.3 \ + MPIX_Exscan_init.3 \ + MPIX_Gather_init.3 \ + MPIX_Gatherv_init.3 \ + MPIX_Reduce_init.3 \ + MPIX_Reduce_scatter_block_init.3 \ + MPIX_Reduce_scatter_init.3 \ + MPIX_Scan_init.3 \ + MPIX_Scatter_init.3 \ + MPIX_Scatterv_init.3 \ + MPIX_Neighbor_allgather_init.3 \ + MPIX_Neighbor_allgatherv_init.3 \ + MPIX_Neighbor_alltoall_init.3 \ + MPIX_Neighbor_alltoallv_init.3 \ + MPIX_Neighbor_alltoallw_init.3 + +# Man page sources +EXTRA_DIST = $(nodist_man_MANS:.3=.3in) + +distclean-local: + rm -f $(nodist_man_MANS) diff --git a/ompi/mpiext/pcollreq/c/mpiext_pcollreq.c b/ompi/mpiext/pcollreq/c/mpiext_pcollreq.c new file mode 100644 index 0000000000..87a56a25a7 --- /dev/null +++ b/ompi/mpiext/pcollreq/c/mpiext_pcollreq.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. + * Copyright (c) 2017 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + * + */ + +#include "ompi_config.h" +#include "ompi/mca/coll/coll.h" +#include "ompi/mca/coll/base/coll_base_functions.h" +#include "ompi/communicator/communicator.h" + +#include "mpiext_pcollreq_c.h" + +#define INFO_REQ_ARGS ompi_info_t *info, ompi_request_t **request + +int MPIX_Allgather_init(ALLGATHER_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_allgather_init( + ALLGATHER_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_allgather_init_module); +} + +int MPIX_Allgatherv_init(ALLGATHERV_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_allgatherv_init( + ALLGATHERV_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_allgatherv_init_module); +} + +int MPIX_Allreduce_init(ALLREDUCE_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_allreduce_init( + ALLREDUCE_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_allreduce_init_module); +} + +int MPIX_Alltoall_init(ALLTOALL_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_alltoall_init( + ALLTOALL_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_alltoall_init_module); +} + +int MPIX_Alltoallv_init(ALLTOALLV_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_alltoallv_init( + ALLTOALLV_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_alltoallv_init_module); +} + +int MPIX_Alltoallw_init(ALLTOALLW_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_alltoallw_init( + ALLTOALLW_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_alltoallw_init_module); +} + +int MPIX_Barrier_init(BARRIER_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_barrier_init( + BARRIER_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_barrier_init_module); +} + +int MPIX_Bcast_init(BCAST_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_bcast_init( + BCAST_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_bcast_init_module); +} + +int MPIX_Exscan_init(EXSCAN_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_exscan_init( + EXSCAN_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_exscan_init_module); +} + +int MPIX_Gather_init(GATHER_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_gather_init( + GATHER_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_gather_init_module); +} + +int MPIX_Gatherv_init(GATHERV_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_gatherv_init( + GATHERV_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_gatherv_init_module); +} + +int MPIX_Reduce_init(REDUCE_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_reduce_init( + REDUCE_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_reduce_init_module); +} + +int MPIX_Reduce_scatter_init(REDUCESCATTER_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_reduce_scatter_init( + REDUCESCATTER_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_reduce_scatter_init_module); +} + +int MPIX_Reduce_scatter_block_init(REDUCESCATTERBLOCK_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_reduce_scatter_block_init( + REDUCESCATTERBLOCK_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_reduce_scatter_block_init_module); +} + +int MPIX_Scan_init(SCAN_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_scan_init( + SCAN_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_scan_init_module); +} + +int MPIX_Scatter_init(SCATTER_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_scatter_init( + SCATTER_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_scatter_init_module); +} + +int MPIX_Scatterv_init(SCATTERV_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_scatterv_init( + SCATTERV_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_scatterv_init_module); +} + +int MPIX_Neighbor_allgather_init(NEIGHBOR_ALLGATHER_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_neighbor_allgather_init( + NEIGHBOR_ALLGATHER_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_neighbor_allgather_init_module); +} + +int MPIX_Neighbor_allgatherv_init(NEIGHBOR_ALLGATHERV_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_neighbor_allgatherv_init( + NEIGHBOR_ALLGATHERV_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_neighbor_allgatherv_init_module); +} + +int MPIX_Neighbor_alltoall_init(NEIGHBOR_ALLTOALL_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_neighbor_alltoall_init( + NEIGHBOR_ALLTOALL_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_neighbor_alltoall_init_module); +} + +int MPIX_Neighbor_alltoallv_init(NEIGHBOR_ALLTOALLV_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_neighbor_alltoallv_init( + NEIGHBOR_ALLTOALLV_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_neighbor_alltoallv_init_module); +} + +int MPIX_Neighbor_alltoallw_init(NEIGHBOR_ALLTOALLW_BASE_ARGS, INFO_REQ_ARGS) +{ + return comm->c_coll->coll_neighbor_alltoallw_init( + NEIGHBOR_ALLTOALLW_BASE_ARG_NAMES, info, request, + comm->c_coll->coll_neighbor_alltoallw_init_module); +} diff --git a/ompi/mpiext/pcollreq/c/mpiext_pcollreq_c.h b/ompi/mpiext/pcollreq/c/mpiext_pcollreq_c.h new file mode 100644 index 0000000000..7f8944010f --- /dev/null +++ b/ompi/mpiext/pcollreq/c/mpiext_pcollreq_c.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + * + */ + +OMPI_DECLSPEC int MPIX_Allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Allgatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Allreduce_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Alltoall_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Alltoallv_init(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Alltoallw_init(const void *sendbuf, const int sendcounts[], const int sdispls[], const MPI_Datatype sendtypes[], void *recvbuf, const int recvcounts[], const int rdispls[], const MPI_Datatype recvtypes[], MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Barrier_init(MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Bcast_init(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Exscan_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Gather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Gatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Reduce_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Reduce_scatter_init(const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Reduce_scatter_block_init(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Scan_init(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Scatter_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Scatterv_init(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Info info, MPI_Request *request); + +OMPI_DECLSPEC int MPIX_Neighbor_allgather_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Neighbor_allgatherv_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Neighbor_alltoall_init(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Neighbor_alltoallv_init(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Info info, MPI_Request *request); +OMPI_DECLSPEC int MPIX_Neighbor_alltoallw_init(const void *sendbuf, const int sendcounts[], const MPI_Aint sdispls[], const MPI_Datatype sendtypes[], void *recvbuf, const int recvcounts[], const MPI_Aint rdispls[], const MPI_Datatype recvtypes[], MPI_Comm comm, MPI_Info info, MPI_Request *request); diff --git a/ompi/mpiext/pcollreq/configure.m4 b/ompi/mpiext/pcollreq/configure.m4 new file mode 100644 index 0000000000..6d07b9010a --- /dev/null +++ b/ompi/mpiext/pcollreq/configure.m4 @@ -0,0 +1,21 @@ +# -*- shell-script -*- +# +# Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# OMPI_MPIEXT_pcollreq_CONFIG([action-if-found], [action-if-not-found]) +# ----------------------------------------------------------- +AC_DEFUN([OMPI_MPIEXT_pcollreq_CONFIG],[ + AC_CONFIG_FILES([ompi/mpiext/pcollreq/Makefile]) + AC_CONFIG_FILES([ompi/mpiext/pcollreq/c/Makefile]) + + AS_IF([test "$ENABLE_pcollreq" = "1" || \ + test "$ENABLE_EXT_ALL" = "1"], + [$1], + [$2]) +])