use ibv_get_device_list if present
(submitted from roland) This commit was SVN r8712.
Этот коммит содержится в:
родитель
e830339098
Коммит
0c81c0a6ce
@ -305,7 +305,8 @@ mca_btl_base_module_t** mca_btl_openib_component_init(int *num_btl_modules,
|
|||||||
seedv[1] = opal_sys_timer_get_cycles();
|
seedv[1] = opal_sys_timer_get_cycles();
|
||||||
seedv[2] = opal_sys_timer_get_cycles();
|
seedv[2] = opal_sys_timer_get_cycles();
|
||||||
seed48(seedv);
|
seed48(seedv);
|
||||||
|
|
||||||
|
#ifndef OMPI_MCA_BTL_OPENIB_HAVE_DEVICE_LIST
|
||||||
/* Determine the number of hca's available on the host */
|
/* Determine the number of hca's available on the host */
|
||||||
dev_list = ibv_get_devices();
|
dev_list = ibv_get_devices();
|
||||||
if (NULL == dev_list) {
|
if (NULL == dev_list) {
|
||||||
@ -318,14 +319,17 @@ mca_btl_base_module_t** mca_btl_openib_component_init(int *num_btl_modules,
|
|||||||
|
|
||||||
dlist_for_each_data(dev_list, ib_dev, struct ibv_device)
|
dlist_for_each_data(dev_list, ib_dev, struct ibv_device)
|
||||||
num_devs++;
|
num_devs++;
|
||||||
|
#else
|
||||||
|
ib_devs = ibv_get_device_list(&num_devs);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(0 == num_devs) {
|
if(0 == num_devs) {
|
||||||
mca_btl_base_error_no_nics("OpenIB", "HCA");
|
mca_btl_base_error_no_nics("OpenIB", "HCA");
|
||||||
mca_btl_openib_modex_send();
|
mca_btl_openib_modex_send();
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef OMPI_MCA_BTL_OPENIB_HAVE_DEVICE_LIST
|
||||||
/* Allocate space for the ib devices */
|
/* Allocate space for the ib devices */
|
||||||
ib_devs = (struct ibv_device**) malloc(num_devs * sizeof(struct ibv_dev*));
|
ib_devs = (struct ibv_device**) malloc(num_devs * sizeof(struct ibv_dev*));
|
||||||
if(NULL == ib_devs) {
|
if(NULL == ib_devs) {
|
||||||
@ -338,7 +342,7 @@ mca_btl_base_module_t** mca_btl_openib_component_init(int *num_btl_modules,
|
|||||||
i = 0;
|
i = 0;
|
||||||
dlist_for_each_data(dev_list, ib_dev, struct ibv_device)
|
dlist_for_each_data(dev_list, ib_dev, struct ibv_device)
|
||||||
ib_devs[i++] = ib_dev;
|
ib_devs[i++] = ib_dev;
|
||||||
|
#endif
|
||||||
|
|
||||||
/** We must loop through all the hca id's, get there handles and
|
/** We must loop through all the hca id's, get there handles and
|
||||||
for each hca we query the number of ports on the hca and set up
|
for each hca we query the number of ports on the hca and set up
|
||||||
@ -449,10 +453,14 @@ mca_btl_base_module_t** mca_btl_openib_component_init(int *num_btl_modules,
|
|||||||
OBJ_CONSTRUCT(&openib_btl->recv_free_max, ompi_free_list_t);
|
OBJ_CONSTRUCT(&openib_btl->recv_free_max, ompi_free_list_t);
|
||||||
|
|
||||||
if(mca_btl_openib_module_init(openib_btl) != OMPI_SUCCESS) {
|
if(mca_btl_openib_module_init(openib_btl) != OMPI_SUCCESS) {
|
||||||
free(ib_devs);
|
#ifdef OMPI_MCA_BTL_OPENIB_HAVE_DEVICE_LIST
|
||||||
return NULL;
|
ibv_free_device_list(ib_devs);
|
||||||
|
#else
|
||||||
|
free(ib_devs);
|
||||||
|
#endif
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mpool_resources.ib_pd = openib_btl->ib_pd;
|
mpool_resources.ib_pd = openib_btl->ib_pd;
|
||||||
|
|
||||||
/* initialize the memory pool using the hca */
|
/* initialize the memory pool using the hca */
|
||||||
@ -534,7 +542,11 @@ mca_btl_base_module_t** mca_btl_openib_component_init(int *num_btl_modules,
|
|||||||
mca_btl_openib_modex_send();
|
mca_btl_openib_modex_send();
|
||||||
|
|
||||||
*num_btl_modules = mca_btl_openib_component.ib_num_btls;
|
*num_btl_modules = mca_btl_openib_component.ib_num_btls;
|
||||||
free(ib_devs);
|
#ifdef OMPI_MCA_BTL_OPENIB_HAVE_DEVICE_LIST
|
||||||
|
ibv_free_device_list(ib_devs);
|
||||||
|
#else
|
||||||
|
free(ib_devs);
|
||||||
|
#endif
|
||||||
return btls;
|
return btls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user