Fix for bug 1007 -- save the selected coll component on the
communicator so that it can be passed down through MPI_COMM_DUP as the "preferred" component during coll selection. This commit was SVN r3179.
Этот коммит содержится в:
родитель
3ddccde21f
Коммит
3b5f8c87a2
@ -265,6 +265,7 @@ static void ompi_comm_construct(ompi_communicator_t* comm)
|
|||||||
memset (&(comm->c_coll), 0, sizeof(mca_coll_base_module_1_0_0_t));
|
memset (&(comm->c_coll), 0, sizeof(mca_coll_base_module_1_0_0_t));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
comm->c_coll_selected_component = NULL;
|
||||||
comm->c_coll_selected_module = NULL;
|
comm->c_coll_selected_module = NULL;
|
||||||
comm->c_coll_selected_data = NULL;
|
comm->c_coll_selected_data = NULL;
|
||||||
comm->c_coll_basic_module = NULL;
|
comm->c_coll_basic_module = NULL;
|
||||||
|
@ -110,6 +110,8 @@ struct ompi_communicator_t {
|
|||||||
/**< Selected collective module, saved by value for speed (instead
|
/**< Selected collective module, saved by value for speed (instead
|
||||||
of by reference) */
|
of by reference) */
|
||||||
|
|
||||||
|
const mca_coll_base_component_1_0_0_t *c_coll_selected_component;
|
||||||
|
/**< Selected coll component */
|
||||||
const mca_coll_base_module_1_0_0_t *c_coll_selected_module;
|
const mca_coll_base_module_1_0_0_t *c_coll_selected_module;
|
||||||
/**< The selected module, but only when the selected module
|
/**< The selected module, but only when the selected module
|
||||||
is not* the basic module. Used during comm_unselect(). */
|
is not* the basic module. Used during comm_unselect(). */
|
||||||
|
@ -119,6 +119,7 @@ int mca_coll_base_comm_select(ompi_communicator_t *comm,
|
|||||||
|
|
||||||
comm->c_coll = null_module;
|
comm->c_coll = null_module;
|
||||||
|
|
||||||
|
comm->c_coll_selected_component = NULL;
|
||||||
comm->c_coll_selected_data = NULL;
|
comm->c_coll_selected_data = NULL;
|
||||||
comm->c_coll_selected_module = NULL;
|
comm->c_coll_selected_module = NULL;
|
||||||
|
|
||||||
@ -250,6 +251,7 @@ int mca_coll_base_comm_select(ompi_communicator_t *comm,
|
|||||||
NULL function pointers with those from basic, and then initialize
|
NULL function pointers with those from basic, and then initialize
|
||||||
it. */
|
it. */
|
||||||
|
|
||||||
|
comm->c_coll_selected_component = selected_component;
|
||||||
if (!using_basic) {
|
if (!using_basic) {
|
||||||
comm->c_coll = *selected_module;
|
comm->c_coll = *selected_module;
|
||||||
replace_null_with_basic(comm);
|
replace_null_with_basic(comm);
|
||||||
|
@ -77,7 +77,7 @@ int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)
|
|||||||
rprocs, /* remote_procs */
|
rprocs, /* remote_procs */
|
||||||
comp->c_keyhash, /* attrs */
|
comp->c_keyhash, /* attrs */
|
||||||
comp->error_handler, /* error handler */
|
comp->error_handler, /* error handler */
|
||||||
comp->c_topo_component /* topo module */
|
comp->c_topo_component /* topo component */
|
||||||
);
|
);
|
||||||
if ( MPI_SUCCESS != rc) {
|
if ( MPI_SUCCESS != rc) {
|
||||||
return OMPI_ERRHANDLER_INVOKE (comm, rc, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE (comm, rc, FUNC_NAME);
|
||||||
@ -91,7 +91,7 @@ int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)
|
|||||||
NULL, /* remote_leader */
|
NULL, /* remote_leader */
|
||||||
mode, /* mode */
|
mode, /* mode */
|
||||||
-1, /* send_first */
|
-1, /* send_first */
|
||||||
(mca_base_component_t*) comp->c_coll_selected_module /* coll module */
|
comp->c_coll_selected_component /* coll component */
|
||||||
);
|
);
|
||||||
if ( MPI_SUCCESS != rc ) {
|
if ( MPI_SUCCESS != rc ) {
|
||||||
return OMPI_ERRHANDLER_INVOKE(comm, rc, FUNC_NAME);
|
return OMPI_ERRHANDLER_INVOKE(comm, rc, FUNC_NAME);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user