Record the bind_level recvd by the daemon for each job so it can be correctly sent to the procs. Add test in get_relative_locality to avoid descending into an infinite loop if the level is NODE (==0).
This commit was SVN r27252.
Этот коммит содержится в:
родитель
dd254cc202
Коммит
67f34c3be6
@ -1104,6 +1104,11 @@ opal_hwloc_locality_t opal_hwloc_base_get_relative_locality(hwloc_topology_t top
|
|||||||
return locality;
|
return locality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if the binding level is NODE, then there is nothing to do */
|
||||||
|
if (OPAL_HWLOC_NODE_LEVEL == level1) {
|
||||||
|
return locality;
|
||||||
|
}
|
||||||
|
|
||||||
lvl = level1;
|
lvl = level1;
|
||||||
|
|
||||||
/* we know that the objects are bound to the same level, so
|
/* we know that the objects are bound to the same level, so
|
||||||
|
@ -974,6 +974,13 @@ int orte_util_decode_daemon_pidmap(opal_byte_object_t *bo)
|
|||||||
opal_pointer_array_set_item(orte_job_data, ORTE_LOCAL_JOBID(jobid), jdata);
|
opal_pointer_array_set_item(orte_job_data, ORTE_LOCAL_JOBID(jobid), jdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* setup the map */
|
||||||
|
map = jdata->map;
|
||||||
|
if (NULL == map) {
|
||||||
|
jdata->map = OBJ_NEW(orte_job_map_t);
|
||||||
|
map = jdata->map;
|
||||||
|
}
|
||||||
|
|
||||||
/* unpack the number of procs */
|
/* unpack the number of procs */
|
||||||
n=1;
|
n=1;
|
||||||
if (ORTE_SUCCESS != (rc = opal_dss.unpack(&buf, &num_procs, &n, ORTE_VPID))) {
|
if (ORTE_SUCCESS != (rc = opal_dss.unpack(&buf, &num_procs, &n, ORTE_VPID))) {
|
||||||
@ -989,14 +996,8 @@ int orte_util_decode_daemon_pidmap(opal_byte_object_t *bo)
|
|||||||
ORTE_ERROR_LOG(rc);
|
ORTE_ERROR_LOG(rc);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
jdata->map->bind_level = bind_level;
|
||||||
#endif
|
#endif
|
||||||
/* setup the map */
|
|
||||||
map = jdata->map;
|
|
||||||
if (NULL == map) {
|
|
||||||
jdata->map = OBJ_NEW(orte_job_map_t);
|
|
||||||
map = jdata->map;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* cycle thru the data until we hit an INVALID vpid indicating
|
/* cycle thru the data until we hit an INVALID vpid indicating
|
||||||
* all data for this job has been read
|
* all data for this job has been read
|
||||||
*/
|
*/
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user