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));
|
||||
#endif
|
||||
|
||||
comm->c_coll_selected_component = NULL;
|
||||
comm->c_coll_selected_module = NULL;
|
||||
comm->c_coll_selected_data = NULL;
|
||||
comm->c_coll_basic_module = NULL;
|
||||
|
@ -110,6 +110,8 @@ struct ompi_communicator_t {
|
||||
/**< Selected collective module, saved by value for speed (instead
|
||||
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;
|
||||
/**< The selected module, but only when the selected module
|
||||
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_selected_component = NULL;
|
||||
comm->c_coll_selected_data = 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
|
||||
it. */
|
||||
|
||||
comm->c_coll_selected_component = selected_component;
|
||||
if (!using_basic) {
|
||||
comm->c_coll = *selected_module;
|
||||
replace_null_with_basic(comm);
|
||||
|
@ -77,7 +77,7 @@ int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm)
|
||||
rprocs, /* remote_procs */
|
||||
comp->c_keyhash, /* attrs */
|
||||
comp->error_handler, /* error handler */
|
||||
comp->c_topo_component /* topo module */
|
||||
comp->c_topo_component /* topo component */
|
||||
);
|
||||
if ( MPI_SUCCESS != rc) {
|
||||
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 */
|
||||
mode, /* mode */
|
||||
-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 ) {
|
||||
return OMPI_ERRHANDLER_INVOKE(comm, rc, FUNC_NAME);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user