coll: Add persistent collective communication request feature
Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
Этот коммит содержится в:
родитель
c753e9baff
Коммит
a9fdea51aa
@ -20,6 +20,7 @@
|
|||||||
* Copyright (c) 2014 Research Organization for Information Science
|
* Copyright (c) 2014 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
|
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2017 FUJITSU LIMITED. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -190,6 +191,24 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
|
|||||||
COPY(avail->ac_module, comm, iscatter);
|
COPY(avail->ac_module, comm, iscatter);
|
||||||
COPY(avail->ac_module, comm, iscatterv);
|
COPY(avail->ac_module, comm, iscatterv);
|
||||||
|
|
||||||
|
COPY(avail->ac_module, comm, allgather_init);
|
||||||
|
COPY(avail->ac_module, comm, allgatherv_init);
|
||||||
|
COPY(avail->ac_module, comm, allreduce_init);
|
||||||
|
COPY(avail->ac_module, comm, alltoall_init);
|
||||||
|
COPY(avail->ac_module, comm, alltoallv_init);
|
||||||
|
COPY(avail->ac_module, comm, alltoallw_init);
|
||||||
|
COPY(avail->ac_module, comm, barrier_init);
|
||||||
|
COPY(avail->ac_module, comm, bcast_init);
|
||||||
|
COPY(avail->ac_module, comm, exscan_init);
|
||||||
|
COPY(avail->ac_module, comm, gather_init);
|
||||||
|
COPY(avail->ac_module, comm, gatherv_init);
|
||||||
|
COPY(avail->ac_module, comm, reduce_init);
|
||||||
|
COPY(avail->ac_module, comm, reduce_scatter_block_init);
|
||||||
|
COPY(avail->ac_module, comm, reduce_scatter_init);
|
||||||
|
COPY(avail->ac_module, comm, scan_init);
|
||||||
|
COPY(avail->ac_module, comm, scatter_init);
|
||||||
|
COPY(avail->ac_module, comm, scatterv_init);
|
||||||
|
|
||||||
/* We can not reliably check if this comm has a topology
|
/* We can not reliably check if this comm has a topology
|
||||||
* at this time. The flags are set *after* coll_select */
|
* at this time. The flags are set *after* coll_select */
|
||||||
COPY(avail->ac_module, comm, neighbor_allgather);
|
COPY(avail->ac_module, comm, neighbor_allgather);
|
||||||
@ -204,6 +223,12 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
|
|||||||
COPY(avail->ac_module, comm, ineighbor_alltoallv);
|
COPY(avail->ac_module, comm, ineighbor_alltoallv);
|
||||||
COPY(avail->ac_module, comm, ineighbor_alltoallw);
|
COPY(avail->ac_module, comm, ineighbor_alltoallw);
|
||||||
|
|
||||||
|
COPY(avail->ac_module, comm, neighbor_allgather_init);
|
||||||
|
COPY(avail->ac_module, comm, neighbor_allgatherv_init);
|
||||||
|
COPY(avail->ac_module, comm, neighbor_alltoall_init);
|
||||||
|
COPY(avail->ac_module, comm, neighbor_alltoallv_init);
|
||||||
|
COPY(avail->ac_module, comm, neighbor_alltoallw_init);
|
||||||
|
|
||||||
COPY(avail->ac_module, comm, reduce_local);
|
COPY(avail->ac_module, comm, reduce_local);
|
||||||
}
|
}
|
||||||
/* release the original module reference and the list item */
|
/* release the original module reference and the list item */
|
||||||
@ -250,6 +275,9 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
|
|||||||
CHECK_NULL(which_func, comm, iscatter) ||
|
CHECK_NULL(which_func, comm, iscatter) ||
|
||||||
CHECK_NULL(which_func, comm, iscatterv) ||
|
CHECK_NULL(which_func, comm, iscatterv) ||
|
||||||
CHECK_NULL(which_func, comm, reduce_local) ) {
|
CHECK_NULL(which_func, comm, reduce_local) ) {
|
||||||
|
/* TODO -- Once the persistent collective communication request
|
||||||
|
* function is implemented then check if persistent collectives have
|
||||||
|
* been set. */
|
||||||
/* TODO -- Once the topology flags are set before coll_select then
|
/* TODO -- Once the topology flags are set before coll_select then
|
||||||
* check if neighborhood collectives have been set. */
|
* check if neighborhood collectives have been set. */
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
* Copyright (c) 2014 Research Organization for Information Science
|
* Copyright (c) 2014 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2017 IBM Corporation. All rights reserved.
|
* Copyright (c) 2017 IBM Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2017 FUJITSU LIMITED. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -85,6 +86,24 @@ int mca_coll_base_comm_unselect(ompi_communicator_t * comm)
|
|||||||
CLOSE(comm, iscatter);
|
CLOSE(comm, iscatter);
|
||||||
CLOSE(comm, iscatterv);
|
CLOSE(comm, iscatterv);
|
||||||
|
|
||||||
|
CLOSE(comm, allgather_init);
|
||||||
|
CLOSE(comm, allgatherv_init);
|
||||||
|
CLOSE(comm, allreduce_init);
|
||||||
|
CLOSE(comm, alltoall_init);
|
||||||
|
CLOSE(comm, alltoallv_init);
|
||||||
|
CLOSE(comm, alltoallw_init);
|
||||||
|
CLOSE(comm, barrier_init);
|
||||||
|
CLOSE(comm, bcast_init);
|
||||||
|
CLOSE(comm, exscan_init);
|
||||||
|
CLOSE(comm, gather_init);
|
||||||
|
CLOSE(comm, gatherv_init);
|
||||||
|
CLOSE(comm, reduce_init);
|
||||||
|
CLOSE(comm, reduce_scatter_block_init);
|
||||||
|
CLOSE(comm, reduce_scatter_init);
|
||||||
|
CLOSE(comm, scan_init);
|
||||||
|
CLOSE(comm, scatter_init);
|
||||||
|
CLOSE(comm, scatterv_init);
|
||||||
|
|
||||||
CLOSE(comm, neighbor_allgather);
|
CLOSE(comm, neighbor_allgather);
|
||||||
CLOSE(comm, neighbor_allgatherv);
|
CLOSE(comm, neighbor_allgatherv);
|
||||||
CLOSE(comm, neighbor_alltoall);
|
CLOSE(comm, neighbor_alltoall);
|
||||||
@ -97,6 +116,12 @@ int mca_coll_base_comm_unselect(ompi_communicator_t * comm)
|
|||||||
CLOSE(comm, ineighbor_alltoallv);
|
CLOSE(comm, ineighbor_alltoallv);
|
||||||
CLOSE(comm, ineighbor_alltoallw);
|
CLOSE(comm, ineighbor_alltoallw);
|
||||||
|
|
||||||
|
CLOSE(comm, neighbor_allgather_init);
|
||||||
|
CLOSE(comm, neighbor_allgatherv_init);
|
||||||
|
CLOSE(comm, neighbor_alltoall_init);
|
||||||
|
CLOSE(comm, neighbor_alltoallv_init);
|
||||||
|
CLOSE(comm, neighbor_alltoallw_init);
|
||||||
|
|
||||||
CLOSE(comm, reduce_local);
|
CLOSE(comm, reduce_local);
|
||||||
|
|
||||||
free(comm->c_coll);
|
free(comm->c_coll);
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "ompi/mca/coll/base/base.h"
|
#include "ompi/mca/coll/base/base.h"
|
||||||
#include "ompi/mca/mca.h"
|
#include "ompi/mca/mca.h"
|
||||||
#include "ompi/mca/coll/coll.h"
|
#include "ompi/mca/coll/coll.h"
|
||||||
|
#include "ompi/info/info.h"
|
||||||
#include "ompi/request/request.h"
|
#include "ompi/request/request.h"
|
||||||
|
|
||||||
/* need to include our own topo prototypes so we can malloc data on the comm correctly */
|
/* need to include our own topo prototypes so we can malloc data on the comm correctly */
|
||||||
@ -135,6 +136,29 @@ typedef enum COLLTYPE {
|
|||||||
#define INEIGHBOR_ALLTOALLV_ARGS NEIGHBOR_ALLTOALLV_BASE_ARGS, ompi_request_t **request, mca_coll_base_module_t *module
|
#define INEIGHBOR_ALLTOALLV_ARGS NEIGHBOR_ALLTOALLV_BASE_ARGS, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
#define INEIGHBOR_ALLTOALLW_ARGS NEIGHBOR_ALLTOALLW_BASE_ARGS, ompi_request_t **request, mca_coll_base_module_t *module
|
#define INEIGHBOR_ALLTOALLW_ARGS NEIGHBOR_ALLTOALLW_BASE_ARGS, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
|
||||||
|
#define ALLGATHER_INIT_ARGS ALLGATHER_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define ALLGATHERV_INIT_ARGS ALLGATHERV_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define ALLREDUCE_INIT_ARGS ALLREDUCE_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define ALLTOALL_INIT_ARGS ALLTOALL_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define ALLTOALLV_INIT_ARGS ALLTOALLV_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define ALLTOALLW_INIT_ARGS ALLTOALLW_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define BARRIER_INIT_ARGS BARRIER_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define BCAST_INIT_ARGS BCAST_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define EXSCAN_INIT_ARGS EXSCAN_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define GATHER_INIT_ARGS GATHER_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define GATHERV_INIT_ARGS GATHERV_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define REDUCE_INIT_ARGS REDUCE_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define REDUCESCATTER_INIT_ARGS REDUCESCATTER_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define REDUCESCATTERBLOCK_INIT_ARGS REDUCESCATTERBLOCK_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define SCAN_INIT_ARGS SCAN_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define SCATTER_INIT_ARGS SCATTER_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define SCATTERV_INIT_ARGS SCATTERV_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define NEIGHBOR_ALLGATHER_INIT_ARGS NEIGHBOR_ALLGATHER_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define NEIGHBOR_ALLGATHERV_INIT_ARGS NEIGHBOR_ALLGATHERV_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define NEIGHBOR_ALLTOALL_INIT_ARGS NEIGHBOR_ALLTOALL_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define NEIGHBOR_ALLTOALLV_INIT_ARGS NEIGHBOR_ALLTOALLV_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
#define NEIGHBOR_ALLTOALLW_INIT_ARGS NEIGHBOR_ALLTOALLW_BASE_ARGS, ompi_info_t *info, ompi_request_t **request, mca_coll_base_module_t *module
|
||||||
|
|
||||||
#define ALLGATHER_BASE_ARG_NAMES sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm
|
#define ALLGATHER_BASE_ARG_NAMES sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm
|
||||||
#define ALLGATHERV_BASE_ARG_NAMES sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm
|
#define ALLGATHERV_BASE_ARG_NAMES sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm
|
||||||
#define ALLREDUCE_BASE_ARG_NAMES sendbuf, recvbuf, count, datatype, op, comm
|
#define ALLREDUCE_BASE_ARG_NAMES sendbuf, recvbuf, count, datatype, op, comm
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
|
* Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2017 FUJITSU LIMITED. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -195,7 +196,7 @@ typedef int
|
|||||||
(*mca_coll_base_module_disable_1_2_0_fn_t)(struct mca_coll_base_module_2_2_0_t* module,
|
(*mca_coll_base_module_disable_1_2_0_fn_t)(struct mca_coll_base_module_2_2_0_t* module,
|
||||||
struct ompi_communicator_t *comm);
|
struct ompi_communicator_t *comm);
|
||||||
|
|
||||||
|
/* blocking collectives */
|
||||||
typedef int (*mca_coll_base_module_allgather_fn_t)
|
typedef int (*mca_coll_base_module_allgather_fn_t)
|
||||||
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
||||||
@ -334,6 +335,84 @@ typedef int (*mca_coll_base_module_iscatterv_fn_t)
|
|||||||
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
int root, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
||||||
struct mca_coll_base_module_2_2_0_t *module);
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
|
||||||
|
/* persistent collectives */
|
||||||
|
typedef int (*mca_coll_base_module_allgather_init_fn_t)
|
||||||
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
|
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_allgatherv_init_fn_t)
|
||||||
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
|
void * rbuf, const int *rcounts, const int *disps, struct ompi_datatype_t *rdtype,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_allreduce_init_fn_t)
|
||||||
|
(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_info_t *info,
|
||||||
|
ompi_request_t ** request, struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_alltoall_init_fn_t)
|
||||||
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
|
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_alltoallv_init_fn_t)
|
||||||
|
(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t *sdtype,
|
||||||
|
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t *rdtype,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_alltoallw_init_fn_t)
|
||||||
|
(const void *sbuf, const int *scounts, const int *sdisps, struct ompi_datatype_t * const *sdtypes,
|
||||||
|
void *rbuf, const int *rcounts, const int *rdisps, struct ompi_datatype_t * const *rdtypes,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_barrier_init_fn_t)
|
||||||
|
(struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_bcast_init_fn_t)
|
||||||
|
(void *buff, int count, struct ompi_datatype_t *datatype, int root,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_exscan_init_fn_t)
|
||||||
|
(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_gather_init_fn_t)
|
||||||
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
|
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
||||||
|
int root, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_gatherv_init_fn_t)
|
||||||
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
|
void *rbuf, const int *rcounts, const int *disps, struct ompi_datatype_t *rdtype,
|
||||||
|
int root, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_reduce_init_fn_t)
|
||||||
|
(const void *sbuf, void* rbuf, int count, struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_reduce_scatter_init_fn_t)
|
||||||
|
(const void *sbuf, void *rbuf, const int *rcounts, struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_reduce_scatter_block_init_fn_t)
|
||||||
|
(const void *sbuf, void *rbuf, int rcount, struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_scan_init_fn_t)
|
||||||
|
(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
|
||||||
|
struct ompi_op_t *op, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_scatter_init_fn_t)
|
||||||
|
(const void *sbuf, int scount, struct ompi_datatype_t *sdtype,
|
||||||
|
void *rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
||||||
|
int root, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_scatterv_init_fn_t)
|
||||||
|
(const void *sbuf, const int *scounts, const int *disps, struct ompi_datatype_t *sdtype,
|
||||||
|
void* rbuf, int rcount, struct ompi_datatype_t *rdtype,
|
||||||
|
int root, struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The signature of the neighborhood alltoallw differs from alltoallw
|
* The signature of the neighborhood alltoallw differs from alltoallw
|
||||||
*/
|
*/
|
||||||
@ -346,6 +425,11 @@ typedef int (*mca_coll_base_module_ineighbor_alltoallw_fn_t)
|
|||||||
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rdtypes,
|
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rdtypes,
|
||||||
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
||||||
struct mca_coll_base_module_2_2_0_t *module);
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
typedef int (*mca_coll_base_module_neighbor_alltoallw_init_fn_t)
|
||||||
|
(const void *sbuf, const int *scounts, const MPI_Aint *sdisps, struct ompi_datatype_t * const *sdtypes,
|
||||||
|
void *rbuf, const int *rcounts, const MPI_Aint *rdisps, struct ompi_datatype_t * const *rdtypes,
|
||||||
|
struct ompi_communicator_t *comm, struct ompi_info_t *info, ompi_request_t ** request,
|
||||||
|
struct mca_coll_base_module_2_2_0_t *module);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* reduce_local
|
* reduce_local
|
||||||
@ -426,6 +510,7 @@ struct mca_coll_base_module_2_2_0_t {
|
|||||||
mca_coll_base_module_enable_1_1_0_fn_t coll_module_enable;
|
mca_coll_base_module_enable_1_1_0_fn_t coll_module_enable;
|
||||||
|
|
||||||
/* Collective function pointers */
|
/* Collective function pointers */
|
||||||
|
|
||||||
/* blocking functions */
|
/* blocking functions */
|
||||||
mca_coll_base_module_allgather_fn_t coll_allgather;
|
mca_coll_base_module_allgather_fn_t coll_allgather;
|
||||||
mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
|
mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
|
||||||
@ -444,6 +529,7 @@ struct mca_coll_base_module_2_2_0_t {
|
|||||||
mca_coll_base_module_scan_fn_t coll_scan;
|
mca_coll_base_module_scan_fn_t coll_scan;
|
||||||
mca_coll_base_module_scatter_fn_t coll_scatter;
|
mca_coll_base_module_scatter_fn_t coll_scatter;
|
||||||
mca_coll_base_module_scatterv_fn_t coll_scatterv;
|
mca_coll_base_module_scatterv_fn_t coll_scatterv;
|
||||||
|
|
||||||
/* nonblocking functions */
|
/* nonblocking functions */
|
||||||
mca_coll_base_module_iallgather_fn_t coll_iallgather;
|
mca_coll_base_module_iallgather_fn_t coll_iallgather;
|
||||||
mca_coll_base_module_iallgatherv_fn_t coll_iallgatherv;
|
mca_coll_base_module_iallgatherv_fn_t coll_iallgatherv;
|
||||||
@ -463,6 +549,25 @@ struct mca_coll_base_module_2_2_0_t {
|
|||||||
mca_coll_base_module_iscatter_fn_t coll_iscatter;
|
mca_coll_base_module_iscatter_fn_t coll_iscatter;
|
||||||
mca_coll_base_module_iscatterv_fn_t coll_iscatterv;
|
mca_coll_base_module_iscatterv_fn_t coll_iscatterv;
|
||||||
|
|
||||||
|
/* persistent functions */
|
||||||
|
mca_coll_base_module_allgather_init_fn_t coll_allgather_init;
|
||||||
|
mca_coll_base_module_allgatherv_init_fn_t coll_allgatherv_init;
|
||||||
|
mca_coll_base_module_allreduce_init_fn_t coll_allreduce_init;
|
||||||
|
mca_coll_base_module_alltoall_init_fn_t coll_alltoall_init;
|
||||||
|
mca_coll_base_module_alltoallv_init_fn_t coll_alltoallv_init;
|
||||||
|
mca_coll_base_module_alltoallw_init_fn_t coll_alltoallw_init;
|
||||||
|
mca_coll_base_module_barrier_init_fn_t coll_barrier_init;
|
||||||
|
mca_coll_base_module_bcast_init_fn_t coll_bcast_init;
|
||||||
|
mca_coll_base_module_exscan_init_fn_t coll_exscan_init;
|
||||||
|
mca_coll_base_module_gather_init_fn_t coll_gather_init;
|
||||||
|
mca_coll_base_module_gatherv_init_fn_t coll_gatherv_init;
|
||||||
|
mca_coll_base_module_reduce_init_fn_t coll_reduce_init;
|
||||||
|
mca_coll_base_module_reduce_scatter_init_fn_t coll_reduce_scatter_init;
|
||||||
|
mca_coll_base_module_reduce_scatter_block_init_fn_t coll_reduce_scatter_block_init;
|
||||||
|
mca_coll_base_module_scan_init_fn_t coll_scan_init;
|
||||||
|
mca_coll_base_module_scatter_init_fn_t coll_scatter_init;
|
||||||
|
mca_coll_base_module_scatterv_init_fn_t coll_scatterv_init;
|
||||||
|
|
||||||
/* neighborhood functions */
|
/* neighborhood functions */
|
||||||
mca_coll_base_module_allgather_fn_t coll_neighbor_allgather;
|
mca_coll_base_module_allgather_fn_t coll_neighbor_allgather;
|
||||||
mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv;
|
mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv;
|
||||||
@ -470,12 +575,20 @@ struct mca_coll_base_module_2_2_0_t {
|
|||||||
mca_coll_base_module_alltoallv_fn_t coll_neighbor_alltoallv;
|
mca_coll_base_module_alltoallv_fn_t coll_neighbor_alltoallv;
|
||||||
mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw;
|
mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw;
|
||||||
|
|
||||||
|
/* nonblocking neighborhood functions */
|
||||||
mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather;
|
mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather;
|
||||||
mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv;
|
mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv;
|
||||||
mca_coll_base_module_ialltoall_fn_t coll_ineighbor_alltoall;
|
mca_coll_base_module_ialltoall_fn_t coll_ineighbor_alltoall;
|
||||||
mca_coll_base_module_ialltoallv_fn_t coll_ineighbor_alltoallv;
|
mca_coll_base_module_ialltoallv_fn_t coll_ineighbor_alltoallv;
|
||||||
mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw;
|
mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw;
|
||||||
|
|
||||||
|
/* persistent neighborhood functions */
|
||||||
|
mca_coll_base_module_allgather_init_fn_t coll_neighbor_allgather_init;
|
||||||
|
mca_coll_base_module_allgatherv_init_fn_t coll_neighbor_allgatherv_init;
|
||||||
|
mca_coll_base_module_alltoall_init_fn_t coll_neighbor_alltoall_init;
|
||||||
|
mca_coll_base_module_alltoallv_init_fn_t coll_neighbor_alltoallv_init;
|
||||||
|
mca_coll_base_module_neighbor_alltoallw_init_fn_t coll_neighbor_alltoallw_init;
|
||||||
|
|
||||||
/** Fault tolerance event trigger function */
|
/** Fault tolerance event trigger function */
|
||||||
mca_coll_base_module_ft_event_fn_t ft_event;
|
mca_coll_base_module_ft_event_fn_t ft_event;
|
||||||
|
|
||||||
@ -507,6 +620,8 @@ OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_coll_base_module_t);
|
|||||||
* component.
|
* component.
|
||||||
*/
|
*/
|
||||||
struct mca_coll_base_comm_coll_t {
|
struct mca_coll_base_comm_coll_t {
|
||||||
|
|
||||||
|
/* blocking collectives */
|
||||||
mca_coll_base_module_allgather_fn_t coll_allgather;
|
mca_coll_base_module_allgather_fn_t coll_allgather;
|
||||||
mca_coll_base_module_2_2_0_t *coll_allgather_module;
|
mca_coll_base_module_2_2_0_t *coll_allgather_module;
|
||||||
mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
|
mca_coll_base_module_allgatherv_fn_t coll_allgatherv;
|
||||||
@ -541,6 +656,7 @@ struct mca_coll_base_comm_coll_t {
|
|||||||
mca_coll_base_module_2_2_0_t *coll_scatter_module;
|
mca_coll_base_module_2_2_0_t *coll_scatter_module;
|
||||||
mca_coll_base_module_scatterv_fn_t coll_scatterv;
|
mca_coll_base_module_scatterv_fn_t coll_scatterv;
|
||||||
mca_coll_base_module_2_2_0_t *coll_scatterv_module;
|
mca_coll_base_module_2_2_0_t *coll_scatterv_module;
|
||||||
|
|
||||||
/* nonblocking collectives */
|
/* nonblocking collectives */
|
||||||
mca_coll_base_module_iallgather_fn_t coll_iallgather;
|
mca_coll_base_module_iallgather_fn_t coll_iallgather;
|
||||||
mca_coll_base_module_2_2_0_t *coll_iallgather_module;
|
mca_coll_base_module_2_2_0_t *coll_iallgather_module;
|
||||||
@ -577,7 +693,43 @@ struct mca_coll_base_comm_coll_t {
|
|||||||
mca_coll_base_module_iscatterv_fn_t coll_iscatterv;
|
mca_coll_base_module_iscatterv_fn_t coll_iscatterv;
|
||||||
mca_coll_base_module_2_2_0_t *coll_iscatterv_module;
|
mca_coll_base_module_2_2_0_t *coll_iscatterv_module;
|
||||||
|
|
||||||
/* neighborhood collectives */
|
/* persistent collectives */
|
||||||
|
mca_coll_base_module_allgather_init_fn_t coll_allgather_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_allgather_init_module;
|
||||||
|
mca_coll_base_module_allgatherv_init_fn_t coll_allgatherv_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_allgatherv_init_module;
|
||||||
|
mca_coll_base_module_allreduce_init_fn_t coll_allreduce_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_allreduce_init_module;
|
||||||
|
mca_coll_base_module_alltoall_init_fn_t coll_alltoall_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_alltoall_init_module;
|
||||||
|
mca_coll_base_module_alltoallv_init_fn_t coll_alltoallv_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_alltoallv_init_module;
|
||||||
|
mca_coll_base_module_alltoallw_init_fn_t coll_alltoallw_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_alltoallw_init_module;
|
||||||
|
mca_coll_base_module_barrier_init_fn_t coll_barrier_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_barrier_init_module;
|
||||||
|
mca_coll_base_module_bcast_init_fn_t coll_bcast_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_bcast_init_module;
|
||||||
|
mca_coll_base_module_exscan_init_fn_t coll_exscan_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_exscan_init_module;
|
||||||
|
mca_coll_base_module_gather_init_fn_t coll_gather_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_gather_init_module;
|
||||||
|
mca_coll_base_module_gatherv_init_fn_t coll_gatherv_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_gatherv_init_module;
|
||||||
|
mca_coll_base_module_reduce_init_fn_t coll_reduce_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_reduce_init_module;
|
||||||
|
mca_coll_base_module_reduce_scatter_init_fn_t coll_reduce_scatter_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_reduce_scatter_init_module;
|
||||||
|
mca_coll_base_module_reduce_scatter_block_init_fn_t coll_reduce_scatter_block_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_reduce_scatter_block_init_module;
|
||||||
|
mca_coll_base_module_scan_init_fn_t coll_scan_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_scan_init_module;
|
||||||
|
mca_coll_base_module_scatter_init_fn_t coll_scatter_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_scatter_init_module;
|
||||||
|
mca_coll_base_module_scatterv_init_fn_t coll_scatterv_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_scatterv_init_module;
|
||||||
|
|
||||||
|
/* blocking neighborhood collectives */
|
||||||
mca_coll_base_module_allgather_fn_t coll_neighbor_allgather;
|
mca_coll_base_module_allgather_fn_t coll_neighbor_allgather;
|
||||||
mca_coll_base_module_2_2_0_t *coll_neighbor_allgather_module;
|
mca_coll_base_module_2_2_0_t *coll_neighbor_allgather_module;
|
||||||
mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv;
|
mca_coll_base_module_allgatherv_fn_t coll_neighbor_allgatherv;
|
||||||
@ -589,6 +741,7 @@ struct mca_coll_base_comm_coll_t {
|
|||||||
mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw;
|
mca_coll_base_module_neighbor_alltoallw_fn_t coll_neighbor_alltoallw;
|
||||||
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoallw_module;
|
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoallw_module;
|
||||||
|
|
||||||
|
/* nonblocking neighborhood collectives */
|
||||||
mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather;
|
mca_coll_base_module_iallgather_fn_t coll_ineighbor_allgather;
|
||||||
mca_coll_base_module_2_2_0_t *coll_ineighbor_allgather_module;
|
mca_coll_base_module_2_2_0_t *coll_ineighbor_allgather_module;
|
||||||
mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv;
|
mca_coll_base_module_iallgatherv_fn_t coll_ineighbor_allgatherv;
|
||||||
@ -600,6 +753,18 @@ struct mca_coll_base_comm_coll_t {
|
|||||||
mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw;
|
mca_coll_base_module_ineighbor_alltoallw_fn_t coll_ineighbor_alltoallw;
|
||||||
mca_coll_base_module_2_2_0_t *coll_ineighbor_alltoallw_module;
|
mca_coll_base_module_2_2_0_t *coll_ineighbor_alltoallw_module;
|
||||||
|
|
||||||
|
/* persistent neighborhood collectives */
|
||||||
|
mca_coll_base_module_allgather_init_fn_t coll_neighbor_allgather_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_neighbor_allgather_init_module;
|
||||||
|
mca_coll_base_module_allgatherv_init_fn_t coll_neighbor_allgatherv_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_neighbor_allgatherv_init_module;
|
||||||
|
mca_coll_base_module_alltoall_init_fn_t coll_neighbor_alltoall_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoall_init_module;
|
||||||
|
mca_coll_base_module_alltoallv_init_fn_t coll_neighbor_alltoallv_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoallv_init_module;
|
||||||
|
mca_coll_base_module_neighbor_alltoallw_init_fn_t coll_neighbor_alltoallw_init;
|
||||||
|
mca_coll_base_module_2_2_0_t *coll_neighbor_alltoallw_init_module;
|
||||||
|
|
||||||
mca_coll_base_module_reduce_local_fn_t coll_reduce_local;
|
mca_coll_base_module_reduce_local_fn_t coll_reduce_local;
|
||||||
mca_coll_base_module_2_2_0_t *coll_reduce_local_module;
|
mca_coll_base_module_2_2_0_t *coll_reduce_local_module;
|
||||||
};
|
};
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
* Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2015 Research Organization for Information Science
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
|
* Copyright (c) 2017 FUJITSU LIMITED. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -66,6 +67,7 @@ int MPI_Start(MPI_Request *request)
|
|||||||
|
|
||||||
switch((*request)->req_type) {
|
switch((*request)->req_type) {
|
||||||
case OMPI_REQUEST_PML:
|
case OMPI_REQUEST_PML:
|
||||||
|
case OMPI_REQUEST_COLL:
|
||||||
OPAL_CR_ENTER_LIBRARY();
|
OPAL_CR_ENTER_LIBRARY();
|
||||||
|
|
||||||
ret = (*request)->req_start(1, request);
|
ret = (*request)->req_start(1, request);
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
|
* Copyright (c) 2017 FUJITSU LIMITED. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -64,7 +65,8 @@ int MPI_Startall(int count, MPI_Request requests[])
|
|||||||
} else {
|
} else {
|
||||||
for (i = 0; i < count; ++i) {
|
for (i = 0; i < count; ++i) {
|
||||||
if (NULL == requests[i] ||
|
if (NULL == requests[i] ||
|
||||||
(OMPI_REQUEST_PML != requests[i]->req_type &&
|
(OMPI_REQUEST_PML != requests[i]->req_type &&
|
||||||
|
OMPI_REQUEST_COLL != requests[i]->req_type &&
|
||||||
OMPI_REQUEST_NOOP != requests[i]->req_type)) {
|
OMPI_REQUEST_NOOP != requests[i]->req_type)) {
|
||||||
rc = MPI_ERR_REQUEST;
|
rc = MPI_ERR_REQUEST;
|
||||||
break;
|
break;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user