1
1

Handle the case of nodes that do not report cores, and thus our default binding policy will fail even though binding is supported by defaulting to not binding on those nodes.

Thanks to Paul Hargrove for reporting the problem on NetBSD.

cmr=v1.7.4:reviewer=jsquyres:subject=Handle the case of nodes that do not report cores

This commit was SVN r30180.
Этот коммит содержится в:
Ralph Castain 2014-01-09 16:27:58 +00:00
родитель f179f2086b
Коммит 7e4748a0f1

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

@ -150,6 +150,16 @@ static int bind_upwards(orte_job_t *jdata,
}
}
/* some systems do not report cores, and so we can get a situation where our
* default binding policy will fail for no necessary reason. So if we are
* computing a binding due to our default policy, and no cores are found
* on this node, just silently skip it - we will not bind
*/
if (!(OPAL_BIND_GIVEN & opal_hwloc_binding_policy) &&
HWLOC_TYPE_DEPTH_UNKNOWN == hwloc_get_type_depth(node->topology, HWLOC_OBJ_CORE)) {
continue;
}
/* we share topologies in order
* to save space, so we need to reset the usage info to reflect
* our own current state
@ -314,6 +324,16 @@ static int bind_downwards(orte_job_t *jdata,
}
}
/* some systems do not report cores, and so we can get a situation where our
* default binding policy will fail for no necessary reason. So if we are
* computing a binding due to our default policy, and no cores are found
* on this node, just silently skip it - we will not bind
*/
if (!(OPAL_BIND_GIVEN & opal_hwloc_binding_policy) &&
HWLOC_TYPE_DEPTH_UNKNOWN == hwloc_get_type_depth(node->topology, HWLOC_OBJ_CORE)) {
continue;
}
/* we share topologies in order
* to save space, so we need to reset the usage info to reflect
* our own current state
@ -480,6 +500,16 @@ static int bind_in_place(orte_job_t *jdata,
}
}
/* some systems do not report cores, and so we can get a situation where our
* default binding policy will fail for no necessary reason. So if we are
* computing a binding due to our default policy, and no cores are found
* on this node, just silently skip it - we will not bind
*/
if (!(OPAL_BIND_GIVEN & opal_hwloc_binding_policy) &&
HWLOC_TYPE_DEPTH_UNKNOWN == hwloc_get_type_depth(node->topology, HWLOC_OBJ_CORE)) {
continue;
}
/* we share topologies in order
* to save space, so we need to reset the usage info to reflect
* our own current state