1
1

It is just fine to map by node or slot and bind, so ensure the switch statement includes those options. Thanks to Tatsuya Mishima for point it out.

Refs trac:4240

This commit was SVN r30661.

The following Trac tickets were found above:
  Ticket 4240 --> https://svn.open-mpi.org/trac/ompi/ticket/4240
Этот коммит содержится в:
Ralph Castain 2014-02-11 02:52:01 +00:00
родитель b4effd200f
Коммит d66d2f5fb3

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

@ -163,6 +163,7 @@ static int bind_upwards(orte_job_t *jdata,
} }
/* get its index */ /* get its index */
if (UINT_MAX == (idx = opal_hwloc_base_get_obj_idx(node->topology, obj, OPAL_HWLOC_AVAILABLE))) { if (UINT_MAX == (idx = opal_hwloc_base_get_obj_idx(node->topology, obj, OPAL_HWLOC_AVAILABLE))) {
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
return ORTE_ERR_SILENT; return ORTE_ERR_SILENT;
} }
/* track the number bound */ /* track the number bound */
@ -652,11 +653,16 @@ int orte_rmaps_base_compute_bindings(orte_job_t *jdata)
hwb = HWLOC_OBJ_PU; hwb = HWLOC_OBJ_PU;
break; break;
default: default:
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
return ORTE_ERR_BAD_PARAM; return ORTE_ERR_BAD_PARAM;
} }
/* do the same for the mapping policy */ /* do the same for the mapping policy */
switch (map) { switch (map) {
case ORTE_MAPPING_BYNODE:
case ORTE_MAPPING_BYSLOT:
hwm = HWLOC_OBJ_MACHINE;
break;
case ORTE_MAPPING_BYDIST: case ORTE_MAPPING_BYDIST:
case ORTE_MAPPING_BYNUMA: case ORTE_MAPPING_BYNUMA:
hwm = HWLOC_OBJ_NODE; hwm = HWLOC_OBJ_NODE;
@ -683,6 +689,7 @@ int orte_rmaps_base_compute_bindings(orte_job_t *jdata)
hwm = HWLOC_OBJ_PU; hwm = HWLOC_OBJ_PU;
break; break;
default: default:
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
return ORTE_ERR_BAD_PARAM; return ORTE_ERR_BAD_PARAM;
} }
@ -827,6 +834,10 @@ int orte_rmaps_base_compute_bindings(orte_job_t *jdata)
true, hwloc_obj_type_string(hwm), node->name); true, hwloc_obj_type_string(hwm), node->name);
return ORTE_ERR_SILENT; return ORTE_ERR_SILENT;
} }
opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
"%s bind_depth: %d map_depth %d",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
bind_depth, map_depth);
if (bind_depth > map_depth) { if (bind_depth > map_depth) {
if (ORTE_SUCCESS != (rc = bind_downwards(jdata, node, hwb, clvl))) { if (ORTE_SUCCESS != (rc = bind_downwards(jdata, node, hwb, clvl))) {
ORTE_ERROR_LOG(rc); ORTE_ERROR_LOG(rc);