1
1

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.
Этот коммит содержится в:
Jeff Squyres 2004-10-15 22:32:48 +00:00
родитель 3ddccde21f
Коммит 3b5f8c87a2
4 изменённых файлов: 7 добавлений и 2 удалений

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

@ -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);