From 6232ef3bfbdcf8c7574f960d9f6ed09b9f646bc1 Mon Sep 17 00:00:00 2001 From: Nathan Hjelm Date: Thu, 3 Oct 2013 03:37:46 +0000 Subject: [PATCH] At coll_select time we can not check whether the communicator has a virtual topology. Remove code checking for a virtual topology until this flag is set before coll_select. This commit was SVN r29344. --- ompi/mca/coll/base/coll_base_comm_select.c | 44 +++++++------------- ompi/mca/coll/libnbc/coll_libnbc_component.c | 12 +++--- 2 files changed, 20 insertions(+), 36 deletions(-) diff --git a/ompi/mca/coll/base/coll_base_comm_select.c b/ompi/mca/coll/base/coll_base_comm_select.c index dc96f48c0a..ce2a15ab51 100644 --- a/ompi/mca/coll/base/coll_base_comm_select.c +++ b/ompi/mca/coll/base/coll_base_comm_select.c @@ -179,20 +179,19 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm) COPY(avail->ac_module, comm, iscatter); COPY(avail->ac_module, comm, iscatterv); - if (OMPI_COMM_IS_GRAPH(comm) || OMPI_COMM_IS_DIST_GRAPH(comm) || - OMPI_COMM_IS_CART(comm)) { - COPY(avail->ac_module, comm, neighbor_allgather); - COPY(avail->ac_module, comm, neighbor_allgatherv); - COPY(avail->ac_module, comm, neighbor_alltoall); - COPY(avail->ac_module, comm, neighbor_alltoallv); - COPY(avail->ac_module, comm, neighbor_alltoallw); + /* We can not reliably check if this comm has a topology + * at this time. The flags are set *after* coll_select */ + COPY(avail->ac_module, comm, neighbor_allgather); + COPY(avail->ac_module, comm, neighbor_allgatherv); + 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_allgatherv); - COPY(avail->ac_module, comm, ineighbor_alltoall); - COPY(avail->ac_module, comm, ineighbor_alltoallv); - COPY(avail->ac_module, comm, ineighbor_alltoallw); - } + COPY(avail->ac_module, comm, ineighbor_allgather); + COPY(avail->ac_module, comm, ineighbor_allgatherv); + COPY(avail->ac_module, comm, ineighbor_alltoall); + COPY(avail->ac_module, comm, ineighbor_alltoallv); + COPY(avail->ac_module, comm, ineighbor_alltoallw); /* release the original module reference and the list item */ OBJ_RELEASE(avail->ac_module); @@ -236,22 +235,9 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm) (NULL == comm->c_coll.coll_ireduce_scatter) || ((OMPI_COMM_IS_INTRA(comm)) && (NULL == comm->c_coll.coll_iscan)) || (NULL == comm->c_coll.coll_iscatter) || - (NULL == comm->c_coll.coll_iscatterv) || - /* neighborhood collectives only need to be defined if this - * is a virtual topology communicator */ - ((OMPI_COMM_IS_GRAPH(comm) || OMPI_COMM_IS_DIST_GRAPH(comm) || - OMPI_COMM_IS_CART(comm)) && - ((NULL == comm->c_coll.coll_neighbor_allgather) || - (NULL == comm->c_coll.coll_neighbor_allgatherv) || - (NULL == comm->c_coll.coll_neighbor_alltoall) || - (NULL == comm->c_coll.coll_neighbor_alltoallv) || - (NULL == comm->c_coll.coll_neighbor_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))) - ) { + (NULL == comm->c_coll.coll_iscatterv)) { + /* TODO -- Once the topologu flags are set before coll_select then + * check if neighborhood collectives have been set. */ mca_coll_base_comm_unselect(comm); return OMPI_ERR_NOT_FOUND; } diff --git a/ompi/mca/coll/libnbc/coll_libnbc_component.c b/ompi/mca/coll/libnbc/coll_libnbc_component.c index b5698247ae..1a2a81a689 100644 --- a/ompi/mca/coll/libnbc/coll_libnbc_component.c +++ b/ompi/mca/coll/libnbc/coll_libnbc_component.c @@ -205,13 +205,11 @@ libnbc_comm_query(struct ompi_communicator_t *comm, module->super.coll_iscatter = ompi_coll_libnbc_iscatter; module->super.coll_iscatterv = ompi_coll_libnbc_iscatterv; - if (OMPI_COMM_IS_GRAPH(comm) || OMPI_COMM_IS_DIST_GRAPH(comm) || OMPI_COMM_IS_CART(comm)) { - module->super.coll_ineighbor_allgather = ompi_coll_libnbc_ineighbor_allgather; - module->super.coll_ineighbor_allgatherv = ompi_coll_libnbc_ineighbor_allgatherv; - 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.coll_ineighbor_allgather = ompi_coll_libnbc_ineighbor_allgather; + module->super.coll_ineighbor_allgatherv = ompi_coll_libnbc_ineighbor_allgatherv; + 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;