further fixes. The first hierarchical MPI_Bcast works! Its just ~ 100 times slower then basic at the moment :-)
This commit was SVN r7754.
Этот коммит содержится в:
родитель
460b5cb840
Коммит
30af775d40
@ -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;
|
||||
*data = tdata;
|
||||
/* return &intra; */
|
||||
goto exit;
|
||||
return &null_intra;
|
||||
}
|
||||
}
|
||||
|
||||
@ -417,7 +444,7 @@ struct ompi_communicator_t* mca_coll_hierarch_get_llcomm (int rank,
|
||||
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]);
|
||||
llcomm = llead->llcomm;
|
||||
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);
|
||||
OBJ_RELEASE(llgroup); */
|
||||
if ( MPI_UNDEFINED != *lrank ) {
|
||||
found = 0;
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -62,10 +62,10 @@ int mca_coll_hierarch_bcast_intra(void *buff,
|
||||
llcomm = mca_coll_hierarch_get_llcomm ( root, data, &llroot);
|
||||
|
||||
/* Bcast on the upper level among the local leaders */
|
||||
if ( MPI_UNDEFINED == llroot ) {
|
||||
llcomm->c_coll.coll_bcast(buff, count, datatype, llroot, llcomm);
|
||||
if ( OMPI_SUCCESS != ret ) {
|
||||
return ret;
|
||||
if ( MPI_UNDEFINED != llroot ) {
|
||||
ret = llcomm->c_coll.coll_bcast(buff, count, datatype, llroot, llcomm);
|
||||
if ( OMPI_SUCCESS != ret ) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user