1
1

Show the name of the collective that failed to get initialized.

Этот коммит содержится в:
George Bosilca 2015-05-11 15:10:37 -04:00
родитель 894ba28390
Коммит 78f5f0f8a9
2 изменённых файлов: 55 добавлений и 38 удалений

Просмотреть файл

@ -92,6 +92,9 @@ static OBJ_CLASS_INSTANCE(avail_coll_t, opal_list_item_t, NULL, NULL);
} \
} while (0)
#define CHECK_NULL(what, comm, func) \
( (what) = # func , NULL == (comm)->c_coll.coll_ ## func)
/*
* This function is called at the initialization time of every
* communicator. It is used to select which coll component will be
@ -103,6 +106,7 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
{
opal_list_t *selectable;
opal_list_item_t *item;
char* which_func = "unknown";
int ret;
/* Announce */
@ -201,43 +205,47 @@ int mca_coll_base_comm_select(ompi_communicator_t * comm)
OBJ_RELEASE(selectable);
/* check to make sure no NULLs */
if ((NULL == comm->c_coll.coll_allgather) ||
(NULL == comm->c_coll.coll_allgatherv) ||
(NULL == comm->c_coll.coll_allreduce) ||
(NULL == comm->c_coll.coll_alltoall) ||
(NULL == comm->c_coll.coll_alltoallv) ||
(NULL == comm->c_coll.coll_alltoallw) ||
(NULL == comm->c_coll.coll_barrier) ||
(NULL == comm->c_coll.coll_bcast) ||
((OMPI_COMM_IS_INTRA(comm)) && (NULL == comm->c_coll.coll_exscan)) ||
(NULL == comm->c_coll.coll_gather) ||
(NULL == comm->c_coll.coll_gatherv) ||
(NULL == comm->c_coll.coll_reduce) ||
(NULL == comm->c_coll.coll_reduce_scatter_block) ||
(NULL == comm->c_coll.coll_reduce_scatter) ||
((OMPI_COMM_IS_INTRA(comm)) && (NULL == comm->c_coll.coll_scan)) ||
(NULL == comm->c_coll.coll_scatter) ||
(NULL == comm->c_coll.coll_scatterv) ||
(NULL == comm->c_coll.coll_iallgather) ||
(NULL == comm->c_coll.coll_iallgatherv) ||
(NULL == comm->c_coll.coll_iallreduce) ||
(NULL == comm->c_coll.coll_ialltoall) ||
(NULL == comm->c_coll.coll_ialltoallv) ||
(NULL == comm->c_coll.coll_ialltoallw) ||
(NULL == comm->c_coll.coll_ibarrier) ||
(NULL == comm->c_coll.coll_ibcast) ||
((OMPI_COMM_IS_INTRA(comm)) && (NULL == comm->c_coll.coll_iexscan)) ||
(NULL == comm->c_coll.coll_igather) ||
(NULL == comm->c_coll.coll_igatherv) ||
(NULL == comm->c_coll.coll_ireduce) ||
(NULL == comm->c_coll.coll_ireduce_scatter_block) ||
(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)) {
if (CHECK_NULL(which_func, comm, allgather) ||
CHECK_NULL(which_func, comm, allgatherv) ||
CHECK_NULL(which_func, comm, allreduce) ||
CHECK_NULL(which_func, comm, alltoall) ||
CHECK_NULL(which_func, comm, alltoallv) ||
CHECK_NULL(which_func, comm, alltoallw) ||
CHECK_NULL(which_func, comm, barrier) ||
CHECK_NULL(which_func, comm, bcast) ||
((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, exscan)) ||
CHECK_NULL(which_func, comm, gather) ||
CHECK_NULL(which_func, comm, gatherv) ||
CHECK_NULL(which_func, comm, reduce) ||
CHECK_NULL(which_func, comm, reduce_scatter_block) ||
CHECK_NULL(which_func, comm, reduce_scatter) ||
((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, scan)) ||
CHECK_NULL(which_func, comm, scatter) ||
CHECK_NULL(which_func, comm, scatterv) ||
CHECK_NULL(which_func, comm, iallgather) ||
CHECK_NULL(which_func, comm, iallgatherv) ||
CHECK_NULL(which_func, comm, iallreduce) ||
CHECK_NULL(which_func, comm, ialltoall) ||
CHECK_NULL(which_func, comm, ialltoallv) ||
CHECK_NULL(which_func, comm, ialltoallw) ||
CHECK_NULL(which_func, comm, ibarrier) ||
CHECK_NULL(which_func, comm, ibcast) ||
((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, iexscan)) ||
CHECK_NULL(which_func, comm, igather) ||
CHECK_NULL(which_func, comm, igatherv) ||
CHECK_NULL(which_func, comm, ireduce) ||
CHECK_NULL(which_func, comm, ireduce_scatter_block) ||
CHECK_NULL(which_func, comm, ireduce_scatter) ||
((OMPI_COMM_IS_INTRA(comm)) && CHECK_NULL(which_func, comm, iscan)) ||
CHECK_NULL(which_func, comm, iscatter) ||
CHECK_NULL(which_func, comm, iscatterv)) {
/* TODO -- Once the topology flags are set before coll_select then
* check if neighborhood collectives have been set. */
mca_coll_base_comm_unselect(comm);
opal_show_help("help-mca-coll-base.txt",
"comm-select:no-function-available", true, which_func);
mca_coll_base_comm_unselect(comm);
return OMPI_ERR_NOT_FOUND;
}
return OMPI_SUCCESS;

Просмотреть файл

@ -23,13 +23,22 @@
Although some coll components are available on your system, none of
them said that they could be used for a new communicator.
This is extremely unusual -- either the "basic" or "self" components
This is extremely unusual -- either the "basic", "libnbc" or "self" components
should be able to be chosen for any communicator. As such, this
likely means that something else is wrong (although you should double
check that the "basic" and "self" coll components are available on
check that the "basic", "libnbc" and "self" coll components are available on
your system -- check the output of the "ompi_info" command).
#
[comm-unselect:failed-finalize]
[comm-select:no-function-available]
Although some coll components are available on your system, none of
them said that they could be used for %s on a new communicator.
This is extremely unusual -- either the "basic", "libnbc" or "self" components
should be able to be chosen for any communicator. As such, this
likely means that something else is wrong (although you should double
check that the "basic", "libnbc" and "self" coll components are available on
your system -- check the output of the "ompi_info" command).
#[comm-unselect:failed-finalize]
A coll module failed to finalize properly when a communicator that was
using it was destroyed.