1
1

further fixes. The first hierarchical MPI_Bcast works! Its just ~ 100 times slower then basic at the moment :-)

This commit was SVN r7754.
Этот коммит содержится в:
Edgar Gabriel 2005-10-13 17:34:42 +00:00
родитель 460b5cb840
Коммит 30af775d40
2 изменённых файлов: 35 добавлений и 8 удалений

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

@ -99,6 +99,34 @@ static const mca_coll_base_module_1_0_0_t intra = {
}; };
static const mca_coll_base_module_1_0_0_t null_intra = {
/* Initialization / finalization functions */
mca_coll_hierarch_module_init,
mca_coll_hierarch_module_finalize,
/* Collective function pointers */
/* function pointers marked with NULL are not yet implemented
and will use the functions provided in the basic module */
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
};
/* /*
@ -239,8 +267,7 @@ mca_coll_hierarch_comm_query(struct ompi_communicator_t *comm, int *priority,
tdata->hier_level = level; tdata->hier_level = level;
*data = tdata; *data = tdata;
/* return &intra; */ return &null_intra;
goto exit;
} }
} }
@ -417,7 +444,7 @@ struct ompi_communicator_t* mca_coll_hierarch_get_llcomm (int rank,
return NULL; return NULL;
} }
for (i=0;i<data->hier_max_llead; i++ ) { for (i=0;i<data->hier_num_llead; i++ ) {
llead = &(data->hier_llead[i]); llead = &(data->hier_llead[i]);
llcomm = llead->llcomm; llcomm = llead->llcomm;
rc = ompi_comm_group ( llcomm, &llgroup); rc = ompi_comm_group ( llcomm, &llgroup);
@ -433,7 +460,7 @@ struct ompi_communicator_t* mca_coll_hierarch_get_llcomm (int rank,
/* ompi_group_decrement_proc_count (llgroup); /* ompi_group_decrement_proc_count (llgroup);
OBJ_RELEASE(llgroup); */ OBJ_RELEASE(llgroup); */
if ( MPI_UNDEFINED != *lrank ) { if ( MPI_UNDEFINED != *lrank ) {
found = 0; found = 1;
break; break;
} }
} }

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

@ -62,10 +62,10 @@ int mca_coll_hierarch_bcast_intra(void *buff,
llcomm = mca_coll_hierarch_get_llcomm ( root, data, &llroot); llcomm = mca_coll_hierarch_get_llcomm ( root, data, &llroot);
/* Bcast on the upper level among the local leaders */ /* Bcast on the upper level among the local leaders */
if ( MPI_UNDEFINED == llroot ) { if ( MPI_UNDEFINED != llroot ) {
llcomm->c_coll.coll_bcast(buff, count, datatype, llroot, llcomm); ret = llcomm->c_coll.coll_bcast(buff, count, datatype, llroot, llcomm);
if ( OMPI_SUCCESS != ret ) { if ( OMPI_SUCCESS != ret ) {
return ret; return ret;
} }
} }