diff --git a/contrib/platform/lanl/cray_xe6/debug-lustre.conf b/contrib/platform/lanl/cray_xe6/debug-lustre.conf index 486227883e..99341bdaf8 100644 --- a/contrib/platform/lanl/cray_xe6/debug-lustre.conf +++ b/contrib/platform/lanl/cray_xe6/debug-lustre.conf @@ -80,7 +80,8 @@ orte_tmpdir_base = /var/tmp orte_allocation_required = 1 ## Deal with the allocator -plm_base_strip_prefix_from_node_names = 1 +orte_strip_prefix_from_node_names = 1 +orte_strip_prefix = nid orte_retain_aliases = 1 # 1st alias entry is the stripped node name, # 2nd is the unstripped one diff --git a/contrib/platform/lanl/cray_xe6/optimized-lustre.conf b/contrib/platform/lanl/cray_xe6/optimized-lustre.conf index bf868bded4..d82da246d4 100644 --- a/contrib/platform/lanl/cray_xe6/optimized-lustre.conf +++ b/contrib/platform/lanl/cray_xe6/optimized-lustre.conf @@ -81,6 +81,7 @@ orte_allocation_required = 1 ## Deal with the allocator orte_strip_prefix_from_node_names = 1 +orte_strip_prefix = nid orte_retain_aliases = 1 # 1st alias entry is the stripped node name, # 2nd is the unstripped one diff --git a/orte/util/proc_info.c b/orte/util/proc_info.c index 56b801f83b..3d05f5ffb8 100644 --- a/orte/util/proc_info.c +++ b/orte/util/proc_info.c @@ -89,6 +89,7 @@ static int orte_ess_node_rank; static int orte_peer_modex_id; static int orte_peer_init_barrier_id; static int orte_peer_fini_barrier_id; +static char *orte_strip_prefix; int orte_proc_info(void) { @@ -178,10 +179,18 @@ int orte_proc_info(void) MCA_BASE_VAR_SCOPE_READONLY, &orte_process_info.strip_prefix_from_node_names); + orte_strip_prefix = ""; + (void) mca_base_var_register ("orte", "orte", NULL, "strip_prefix", + "Prefix to match when deciding whether to strip leading characters and zeroes from " + "node names returned by daemons (empty = strip all). Does nothing if orte_strip_prefix_from_node_names " + "is set to false", MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, + OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY, + &orte_strip_prefix); + /* we have to strip node names here, if user directs, to ensure that * the names exchanged in the modex match the names found locally */ - if (orte_process_info.strip_prefix_from_node_names) { + if (orte_process_info.strip_prefix_from_node_names && 0 == strncmp (hostname, orte_strip_prefix, strlen (orte_strip_prefix))) { /* remove all leading characters and zeroes */ idx = 0; while (idx < (int)strlen(hostname) &&