1
1

OSHMEM: use bulk connect/disconnect API

fixed by Yossi, reviewed by MikeD

cmr=v1.8.2:reviewer=ompi-rm1.8

This commit was SVN r31856.
Этот коммит содержится в:
Mike Dubman 2014-05-21 08:00:21 +00:00
родитель fad1063980
Коммит 5dd4c68a0f
3 изменённых файлов: 20 добавлений и 0 удалений

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

@ -342,6 +342,12 @@ int mca_spml_ikrit_del_procs(oshmem_proc_t** procs, size_t nprocs)
size_t i; size_t i;
opal_list_item_t *item; opal_list_item_t *item;
#if MXM_API >= MXM_VERSION(2,0)
if (mca_spml_ikrit.bulk_disconnect) {
mxm_ep_powerdown(mca_spml_ikrit.mxm_ep);
}
#endif
while (NULL != (item = opal_list_remove_first(&mca_spml_ikrit.active_peers))) { while (NULL != (item = opal_list_remove_first(&mca_spml_ikrit.active_peers))) {
}; };
OBJ_DESTRUCT(&mca_spml_ikrit.active_peers); OBJ_DESTRUCT(&mca_spml_ikrit.active_peers);
@ -487,6 +493,14 @@ int mca_spml_ikrit_add_procs(oshmem_proc_t** procs, size_t nprocs)
free(conn_reqs); free(conn_reqs);
#endif #endif
#if MXM_API >= MXM_VERSION(2,0)
if (mca_spml_ikrit.bulk_connect) {
/* Need a barrier to ensure remote peers already created connection */
oshmem_shmem_barrier();
mxm_ep_wireup(mca_spml_ikrit.mxm_ep);
}
#endif
proc_self = oshmem_proc_group_find(oshmem_group_all, my_rank); proc_self = oshmem_proc_group_find(oshmem_group_all, my_rank);
/* identify local processes and change transport to SHM */ /* identify local processes and change transport to SHM */
for (i = 0; i < nprocs; i++) { for (i = 0; i < nprocs; i++) {

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

@ -81,6 +81,8 @@ struct mca_spml_ikrit_t {
int free_list_num; /* initial size of free list */ int free_list_num; /* initial size of free list */
int free_list_max; /* maximum size of free list */ int free_list_max; /* maximum size of free list */
int free_list_inc; /* number of elements to grow free list */ int free_list_inc; /* number of elements to grow free list */
int bulk_connect; /* use bulk connect */
int bulk_disconnect; /* use bulk disconnect */
bool enabled; bool enabled;
opal_list_t active_peers; opal_list_t active_peers;

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

@ -150,6 +150,10 @@ static int mca_spml_ikrit_component_register(void)
mca_spml_ikrit_param_register_int("free_list_max", 1024, 0); mca_spml_ikrit_param_register_int("free_list_max", 1024, 0);
mca_spml_ikrit.free_list_inc = mca_spml_ikrit.free_list_inc =
mca_spml_ikrit_param_register_int("free_list_inc", 16, 0); mca_spml_ikrit_param_register_int("free_list_inc", 16, 0);
mca_spml_ikrit.bulk_connect =
mca_spml_ikrit_param_register_int("bulk_connect", 1, 0);
mca_spml_ikrit.bulk_disconnect =
mca_spml_ikrit_param_register_int("bulk_disconnect", 1, 0);
mca_spml_ikrit.priority = mca_spml_ikrit.priority =
mca_spml_ikrit_param_register_int("priority", mca_spml_ikrit_param_register_int("priority",
20, 20,