1
1

btl/openib: fix recieve queue source detection

Этот коммит содержится в:
Nathan Hjelm 2014-11-04 14:25:02 -07:00 коммит произвёл Nathan Hjelm
родитель 7c43b566d2
Коммит 38e9611930
3 изменённых файлов: 39 добавлений и 44 удалений

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

@ -520,10 +520,12 @@ static int mca_btl_openib_tune_endpoint(mca_btl_openib_module_t* openib_btl,
if a user distributes different INI files or parameters for different node/procs, if a user distributes different INI files or parameters for different node/procs,
it is on his own responsibility */ it is on his own responsibility */
switch(mca_btl_openib_component.receive_queues_source) { switch(mca_btl_openib_component.receive_queues_source) {
case MCA_BASE_VAR_SOURCE_COMMAND_LINE: case MCA_BASE_VAR_SOURCE_COMMAND_LINE:
case MCA_BASE_VAR_SOURCE_ENV: case MCA_BASE_VAR_SOURCE_ENV:
case MCA_BASE_VAR_SOURCE_MAX: case MCA_BASE_VAR_SOURCE_FILE:
break; case MCA_BASE_VAR_SOURCE_SET:
case MCA_BASE_VAR_SOURCE_OVERRIDE:
break;
/* If the queues configuration was set from command line /* If the queues configuration was set from command line
(with --mca btl_openib_receive_queues parameter) => both sides have a same configuration */ (with --mca btl_openib_receive_queues parameter) => both sides have a same configuration */
@ -532,40 +534,38 @@ static int mca_btl_openib_tune_endpoint(mca_btl_openib_module_t* openib_btl,
not possible that remote side got its queues configuration from command line => not possible that remote side got its queues configuration from command line =>
(by prio) the configuration was set from INI file or (if not configure) (by prio) the configuration was set from INI file or (if not configure)
by default queues configuration */ by default queues configuration */
case MCA_BASE_VAR_SOURCE_FILE: case BTL_OPENIB_RQ_SOURCE_DEVICE_INI:
case MCA_BASE_VAR_SOURCE_SET: if(NULL != values.receive_queues) {
case MCA_BASE_VAR_SOURCE_OVERRIDE: recv_qps = values.receive_queues;
if(NULL != values.receive_queues) { } else {
recv_qps = values.receive_queues; recv_qps = mca_btl_openib_component.default_recv_qps;
} else { }
recv_qps = mca_btl_openib_component.default_recv_qps;
}
if(0 != strcmp(mca_btl_openib_component.receive_queues, if(0 != strcmp(mca_btl_openib_component.receive_queues,
recv_qps)) { recv_qps)) {
opal_show_help("help-mpi-btl-openib.txt", opal_show_help("help-mpi-btl-openib.txt",
"unsupported queues configuration", true, "unsupported queues configuration", true,
opal_process_info.nodename, opal_process_info.nodename,
ibv_get_device_name(openib_btl->device->ib_dev), ibv_get_device_name(openib_btl->device->ib_dev),
(openib_btl->device->ib_dev_attr).vendor_id, (openib_btl->device->ib_dev_attr).vendor_id,
(openib_btl->device->ib_dev_attr).vendor_part_id, (openib_btl->device->ib_dev_attr).vendor_part_id,
mca_btl_openib_component.receive_queues, mca_btl_openib_component.receive_queues,
opal_get_proc_hostname(endpoint->endpoint_proc->proc_opal), opal_get_proc_hostname(endpoint->endpoint_proc->proc_opal),
endpoint->rem_info.rem_vendor_id, endpoint->rem_info.rem_vendor_id,
endpoint->rem_info.rem_vendor_part_id, endpoint->rem_info.rem_vendor_part_id,
recv_qps); recv_qps);
return OPAL_ERROR; return OPAL_ERROR;
} }
break; break;
/* If the local queues configuration was set /* If the local queues configuration was set
by default queues => check all possible cases for remote side and compare */ by default queues => check all possible cases for remote side and compare */
case MCA_BASE_VAR_SOURCE_DEFAULT: case MCA_BASE_VAR_SOURCE_DEFAULT:
if(NULL != values.receive_queues) { if(NULL != values.receive_queues) {
if(0 != strcmp(mca_btl_openib_component.receive_queues, if(0 != strcmp(mca_btl_openib_component.receive_queues,
values.receive_queues)) { values.receive_queues)) {
opal_show_help("help-mpi-btl-openib.txt", opal_show_help("help-mpi-btl-openib.txt",
"unsupported queues configuration", true, "unsupported queues configuration", true,
opal_process_info.nodename, opal_process_info.nodename,
ibv_get_device_name(openib_btl->device->ib_dev), ibv_get_device_name(openib_btl->device->ib_dev),
@ -577,10 +577,10 @@ static int mca_btl_openib_tune_endpoint(mca_btl_openib_module_t* openib_btl,
endpoint->rem_info.rem_vendor_part_id, endpoint->rem_info.rem_vendor_part_id,
values.receive_queues); values.receive_queues);
return OPAL_ERROR; return OPAL_ERROR;
}
} }
break; }
break;
} }
return OPAL_SUCCESS; return OPAL_SUCCESS;

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

@ -126,10 +126,7 @@ struct mca_btl_openib_qp_info_t {
(BTL_OPENIB_QP_TYPE(Q) == MCA_BTL_OPENIB_XRC_QP) (BTL_OPENIB_QP_TYPE(Q) == MCA_BTL_OPENIB_XRC_QP)
typedef enum { typedef enum {
BTL_OPENIB_RQ_SOURCE_DEFAULT, BTL_OPENIB_RQ_SOURCE_DEVICE_INI = MCA_BASE_VAR_SOURCE_MAX,
BTL_OPENIB_RQ_SOURCE_MCA,
BTL_OPENIB_RQ_SOURCE_DEVICE_INI,
BTL_OPENIB_RQ_SOURCE_MAX
} btl_openib_receive_queues_source_t; } btl_openib_receive_queues_source_t;
typedef enum { typedef enum {

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

@ -1975,9 +1975,7 @@ static int init_one_device(opal_list_t *btl_list, struct ibv_device* ib_dev)
} }
/* If the MCA param was specified, skip all the checks */ /* If the MCA param was specified, skip all the checks */
if ( MCA_BASE_VAR_SOURCE_COMMAND_LINE || if (MCA_BASE_VAR_SOURCE_DEFAULT != mca_btl_openib_component.receive_queues_source) {
MCA_BASE_VAR_SOURCE_ENV ==
mca_btl_openib_component.receive_queues_source) {
goto good; goto good;
} }
@ -1995,7 +1993,7 @@ static int init_one_device(opal_list_t *btl_list, struct ibv_device* ib_dev)
mca_btl_openib_component.receive_queues = mca_btl_openib_component.receive_queues =
strdup(values.receive_queues); strdup(values.receive_queues);
mca_btl_openib_component.receive_queues_source = mca_btl_openib_component.receive_queues_source =
MCA_BASE_VAR_SOURCE_FILE; BTL_OPENIB_RQ_SOURCE_DEVICE_INI;
} }
} }