Don't check for neighborhood collective routines on non-virtual topology communicators
This commit was SVN r29319.
Этот коммит содержится в:
родитель
0a841eb762
Коммит
4f12406436
@ -179,17 +179,20 @@ 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, neighbor_allgather);
|
if (OMPI_COMM_IS_GRAPH(comm) || OMPI_COMM_IS_DIST_GRAPH(comm) ||
|
||||||
COPY(avail->ac_module, comm, neighbor_allgatherv);
|
OMPI_COMM_IS_CART(comm)) {
|
||||||
COPY(avail->ac_module, comm, neighbor_alltoall);
|
COPY(avail->ac_module, comm, neighbor_allgather);
|
||||||
COPY(avail->ac_module, comm, neighbor_alltoallv);
|
COPY(avail->ac_module, comm, neighbor_allgatherv);
|
||||||
COPY(avail->ac_module, comm, neighbor_alltoallw);
|
COPY(avail->ac_module, comm, neighbor_alltoall);
|
||||||
|
COPY(avail->ac_module, comm, neighbor_alltoallv);
|
||||||
|
COPY(avail->ac_module, comm, neighbor_alltoallw);
|
||||||
|
|
||||||
COPY(avail->ac_module, comm, ineighbor_allgather);
|
COPY(avail->ac_module, comm, ineighbor_allgather);
|
||||||
COPY(avail->ac_module, comm, ineighbor_allgatherv);
|
COPY(avail->ac_module, comm, ineighbor_allgatherv);
|
||||||
COPY(avail->ac_module, comm, ineighbor_alltoall);
|
COPY(avail->ac_module, comm, ineighbor_alltoall);
|
||||||
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);
|
||||||
|
}
|
||||||
|
|
||||||
/* release the original module reference and the list item */
|
/* release the original module reference and the list item */
|
||||||
OBJ_RELEASE(avail->ac_module);
|
OBJ_RELEASE(avail->ac_module);
|
||||||
@ -234,16 +237,20 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
|
|||||||
((OMPI_COMM_IS_INTRA(comm)) && (NULL == comm->c_coll.coll_iscan)) ||
|
((OMPI_COMM_IS_INTRA(comm)) && (NULL == comm->c_coll.coll_iscan)) ||
|
||||||
(NULL == comm->c_coll.coll_iscatter) ||
|
(NULL == comm->c_coll.coll_iscatter) ||
|
||||||
(NULL == comm->c_coll.coll_iscatterv) ||
|
(NULL == comm->c_coll.coll_iscatterv) ||
|
||||||
(NULL == comm->c_coll.coll_neighbor_allgather) ||
|
/* neighborhood collectives only need to be defined if this
|
||||||
(NULL == comm->c_coll.coll_neighbor_allgatherv) ||
|
* is a virtual topology communicator */
|
||||||
(NULL == comm->c_coll.coll_neighbor_alltoall) ||
|
((OMPI_COMM_IS_GRAPH(comm) || OMPI_COMM_IS_DIST_GRAPH(comm) ||
|
||||||
(NULL == comm->c_coll.coll_neighbor_alltoallv) ||
|
OMPI_COMM_IS_CART(comm)) &&
|
||||||
(NULL == comm->c_coll.coll_neighbor_alltoallw) ||
|
((NULL == comm->c_coll.coll_neighbor_allgather) ||
|
||||||
(NULL == comm->c_coll.coll_ineighbor_allgather) ||
|
(NULL == comm->c_coll.coll_neighbor_allgatherv) ||
|
||||||
(NULL == comm->c_coll.coll_ineighbor_allgatherv) ||
|
(NULL == comm->c_coll.coll_neighbor_alltoall) ||
|
||||||
(NULL == comm->c_coll.coll_ineighbor_alltoall) ||
|
(NULL == comm->c_coll.coll_neighbor_alltoallv) ||
|
||||||
(NULL == comm->c_coll.coll_ineighbor_alltoallv) ||
|
(NULL == comm->c_coll.coll_neighbor_alltoallw) ||
|
||||||
(NULL == comm->c_coll.coll_ineighbor_alltoallw)
|
(NULL == comm->c_coll.coll_ineighbor_allgather) ||
|
||||||
|
(NULL == comm->c_coll.coll_ineighbor_allgatherv) ||
|
||||||
|
(NULL == comm->c_coll.coll_ineighbor_alltoall) ||
|
||||||
|
(NULL == comm->c_coll.coll_ineighbor_alltoallv) ||
|
||||||
|
(NULL == comm->c_coll.coll_ineighbor_alltoallw)))
|
||||||
) {
|
) {
|
||||||
mca_coll_base_comm_unselect(comm);
|
mca_coll_base_comm_unselect(comm);
|
||||||
return OMPI_ERR_NOT_FOUND;
|
return OMPI_ERR_NOT_FOUND;
|
||||||
|
@ -151,13 +151,6 @@ libnbc_init_query(bool enable_progress_threads,
|
|||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int libnbc_not_implemented (void *arg0, ...)
|
|
||||||
{
|
|
||||||
(void)arg0;
|
|
||||||
return OMPI_ERR_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Invoked when there's a new communicator that has been created.
|
* Invoked when there's a new communicator that has been created.
|
||||||
* Look at the communicator and decide which set of functions and
|
* Look at the communicator and decide which set of functions and
|
||||||
@ -193,11 +186,6 @@ libnbc_comm_query(struct ompi_communicator_t *comm,
|
|||||||
module->super.coll_iscan = NULL;
|
module->super.coll_iscan = NULL;
|
||||||
module->super.coll_iscatter = ompi_coll_libnbc_iscatter_inter;
|
module->super.coll_iscatter = ompi_coll_libnbc_iscatter_inter;
|
||||||
module->super.coll_iscatterv = ompi_coll_libnbc_iscatterv_inter;
|
module->super.coll_iscatterv = ompi_coll_libnbc_iscatterv_inter;
|
||||||
module->super.coll_ineighbor_allgather = (mca_coll_base_module_allgather_fn_t) libnbc_not_implemented;
|
|
||||||
module->super.coll_ineighbor_allgatherv = (mca_coll_base_module_allgatherv_fn_t) libnbc_not_implemented;
|
|
||||||
module->super.coll_ineighbor_alltoall = (mca_coll_base_module_alltoall_fn_t) libnbc_not_implemented;
|
|
||||||
module->super.coll_ineighbor_alltoallv = (mca_coll_base_module_alltoallv_fn_t) libnbc_not_implemented;
|
|
||||||
module->super.coll_ineighbor_alltoallw = (mca_coll_base_module_alltoallw_fn_t) libnbc_not_implemented;
|
|
||||||
} else {
|
} else {
|
||||||
module->super.coll_iallgather = ompi_coll_libnbc_iallgather;
|
module->super.coll_iallgather = ompi_coll_libnbc_iallgather;
|
||||||
module->super.coll_iallgatherv = ompi_coll_libnbc_iallgatherv;
|
module->super.coll_iallgatherv = ompi_coll_libnbc_iallgatherv;
|
||||||
@ -216,11 +204,14 @@ libnbc_comm_query(struct ompi_communicator_t *comm,
|
|||||||
module->super.coll_iscan = ompi_coll_libnbc_iscan;
|
module->super.coll_iscan = ompi_coll_libnbc_iscan;
|
||||||
module->super.coll_iscatter = ompi_coll_libnbc_iscatter;
|
module->super.coll_iscatter = ompi_coll_libnbc_iscatter;
|
||||||
module->super.coll_iscatterv = ompi_coll_libnbc_iscatterv;
|
module->super.coll_iscatterv = ompi_coll_libnbc_iscatterv;
|
||||||
module->super.coll_ineighbor_allgather = ompi_coll_libnbc_ineighbor_allgather;
|
|
||||||
module->super.coll_ineighbor_allgatherv = ompi_coll_libnbc_ineighbor_allgatherv;
|
if (OMPI_COMM_IS_GRAPH(comm) || OMPI_COMM_IS_DIST_GRAPH(comm) || OMPI_COMM_IS_CART(comm)) {
|
||||||
module->super.coll_ineighbor_alltoall = ompi_coll_libnbc_ineighbor_alltoall;
|
module->super.coll_ineighbor_allgather = ompi_coll_libnbc_ineighbor_allgather;
|
||||||
module->super.coll_ineighbor_alltoallv = ompi_coll_libnbc_ineighbor_alltoallv;
|
module->super.coll_ineighbor_allgatherv = ompi_coll_libnbc_ineighbor_allgatherv;
|
||||||
module->super.coll_ineighbor_alltoallw = ompi_coll_libnbc_ineighbor_alltoallw;
|
module->super.coll_ineighbor_alltoall = ompi_coll_libnbc_ineighbor_alltoall;
|
||||||
|
module->super.coll_ineighbor_alltoallv = ompi_coll_libnbc_ineighbor_alltoallv;
|
||||||
|
module->super.coll_ineighbor_alltoallw = ompi_coll_libnbc_ineighbor_alltoallw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module->super.ft_event = NULL;
|
module->super.ft_event = NULL;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user