diff --git a/opal/mca/hwloc/base/hwloc_base_util.c b/opal/mca/hwloc/base/hwloc_base_util.c index 0731818d92..79386a6a5c 100644 --- a/opal/mca/hwloc/base/hwloc_base_util.c +++ b/opal/mca/hwloc/base/hwloc_base_util.c @@ -1104,6 +1104,11 @@ opal_hwloc_locality_t opal_hwloc_base_get_relative_locality(hwloc_topology_t top return locality; } + /* if the binding level is NODE, then there is nothing to do */ + if (OPAL_HWLOC_NODE_LEVEL == level1) { + return locality; + } + lvl = level1; /* we know that the objects are bound to the same level, so diff --git a/orte/util/nidmap.c b/orte/util/nidmap.c index 51a4f9781d..0fb5cb7738 100644 --- a/orte/util/nidmap.c +++ b/orte/util/nidmap.c @@ -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); } + /* 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 */ n=1; 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); goto cleanup; } + jdata->map->bind_level = bind_level; #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 * all data for this job has been read */