ess/pmi: minor code readablility cleanup.
Split process name variable "name" to - "wildcard_rank" for the cases where wildcard is used. - "pname" for the case where reference to particular process is needed.
Этот коммит содержится в:
родитель
44187b408c
Коммит
1351a7065c
@ -93,7 +93,7 @@ static int rte_init(void)
|
|||||||
int u32, *u32ptr;
|
int u32, *u32ptr;
|
||||||
uint16_t u16, *u16ptr;
|
uint16_t u16, *u16ptr;
|
||||||
char **peers=NULL, *mycpuset, **cpusets=NULL;
|
char **peers=NULL, *mycpuset, **cpusets=NULL;
|
||||||
opal_process_name_t name;
|
opal_process_name_t wildcard_rank, pname;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
/* run the prolog */
|
/* run the prolog */
|
||||||
@ -137,8 +137,12 @@ static int rte_init(void)
|
|||||||
ORTE_PROC_MY_NAME->vpid = OPAL_PROC_MY_NAME.vpid;
|
ORTE_PROC_MY_NAME->vpid = OPAL_PROC_MY_NAME.vpid;
|
||||||
|
|
||||||
/* setup a name for retrieving data associated with the job */
|
/* setup a name for retrieving data associated with the job */
|
||||||
name.jobid = ORTE_PROC_MY_NAME->jobid;
|
wildcard_rank.jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
name.vpid = ORTE_NAME_WILDCARD->vpid;
|
wildcard_rank.vpid = ORTE_NAME_WILDCARD->vpid;
|
||||||
|
|
||||||
|
/* setup a name for retrieving proc-specific data */
|
||||||
|
pname.jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
|
pname.vpid = 0;
|
||||||
|
|
||||||
/* get our local rank from PMI */
|
/* get our local rank from PMI */
|
||||||
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_RANK,
|
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_RANK,
|
||||||
@ -160,7 +164,7 @@ static int rte_init(void)
|
|||||||
|
|
||||||
/* get max procs for this application */
|
/* get max procs for this application */
|
||||||
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_MAX_PROCS,
|
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_MAX_PROCS,
|
||||||
&name, &u32ptr, OPAL_UINT32);
|
&wildcard_rank, &u32ptr, OPAL_UINT32);
|
||||||
if (OPAL_SUCCESS != ret) {
|
if (OPAL_SUCCESS != ret) {
|
||||||
error = "getting max procs";
|
error = "getting max procs";
|
||||||
goto error;
|
goto error;
|
||||||
@ -169,7 +173,7 @@ static int rte_init(void)
|
|||||||
|
|
||||||
/* get job size */
|
/* get job size */
|
||||||
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_JOB_SIZE,
|
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_JOB_SIZE,
|
||||||
&name, &u32ptr, OPAL_UINT32);
|
&wildcard_rank, &u32ptr, OPAL_UINT32);
|
||||||
if (OPAL_SUCCESS != ret) {
|
if (OPAL_SUCCESS != ret) {
|
||||||
error = "getting job size";
|
error = "getting job size";
|
||||||
goto error;
|
goto error;
|
||||||
@ -203,7 +207,7 @@ static int rte_init(void)
|
|||||||
/* get the number of local peers - required for wireup of
|
/* get the number of local peers - required for wireup of
|
||||||
* shared memory BTL */
|
* shared memory BTL */
|
||||||
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_SIZE,
|
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_SIZE,
|
||||||
&name, &u32ptr, OPAL_UINT32);
|
&wildcard_rank, &u32ptr, OPAL_UINT32);
|
||||||
if (OPAL_SUCCESS == ret) {
|
if (OPAL_SUCCESS == ret) {
|
||||||
orte_process_info.num_local_peers = u32 - 1; // want number besides ourselves
|
orte_process_info.num_local_peers = u32 - 1; // want number besides ourselves
|
||||||
} else {
|
} else {
|
||||||
@ -234,7 +238,7 @@ static int rte_init(void)
|
|||||||
/* retrieve our topology */
|
/* retrieve our topology */
|
||||||
val = NULL;
|
val = NULL;
|
||||||
OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, OPAL_PMIX_LOCAL_TOPO,
|
OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, OPAL_PMIX_LOCAL_TOPO,
|
||||||
&name, &val, OPAL_STRING);
|
&wildcard_rank, &val, OPAL_STRING);
|
||||||
if (OPAL_SUCCESS == ret && NULL != val) {
|
if (OPAL_SUCCESS == ret && NULL != val) {
|
||||||
/* load the topology */
|
/* load the topology */
|
||||||
if (0 != hwloc_topology_init(&opal_hwloc_topology)) {
|
if (0 != hwloc_topology_init(&opal_hwloc_topology)) {
|
||||||
@ -293,7 +297,7 @@ static int rte_init(void)
|
|||||||
error = "topology export";
|
error = "topology export";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
if (OPAL_SUCCESS != (ret = opal_pmix.store_local(&name, kv))) {
|
if (OPAL_SUCCESS != (ret = opal_pmix.store_local(&wildcard_rank, kv))) {
|
||||||
error = "topology store";
|
error = "topology store";
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@ -310,12 +314,12 @@ static int rte_init(void)
|
|||||||
}
|
}
|
||||||
/* retrieve the local peers */
|
/* retrieve the local peers */
|
||||||
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_PEERS,
|
OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_PEERS,
|
||||||
&name, &val, OPAL_STRING);
|
&wildcard_rank, &val, OPAL_STRING);
|
||||||
if (OPAL_SUCCESS == ret && NULL != val) {
|
if (OPAL_SUCCESS == ret && NULL != val) {
|
||||||
peers = opal_argv_split(val, ',');
|
peers = opal_argv_split(val, ',');
|
||||||
free(val);
|
free(val);
|
||||||
/* and their cpusets, if available */
|
/* and their cpusets, if available */
|
||||||
OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, OPAL_PMIX_LOCAL_CPUSETS, &name, &val, OPAL_STRING);
|
OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, OPAL_PMIX_LOCAL_CPUSETS, &wildcard_rank, &val, OPAL_STRING);
|
||||||
if (OPAL_SUCCESS == ret && NULL != val) {
|
if (OPAL_SUCCESS == ret && NULL != val) {
|
||||||
cpusets = opal_argv_split(val, ':');
|
cpusets = opal_argv_split(val, ':');
|
||||||
free(val);
|
free(val);
|
||||||
@ -339,13 +343,13 @@ static int rte_init(void)
|
|||||||
} else {
|
} else {
|
||||||
mycpuset = NULL;
|
mycpuset = NULL;
|
||||||
}
|
}
|
||||||
name.jobid = ORTE_PROC_MY_NAME->jobid;
|
pname.jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
for (i=0; NULL != peers[i]; i++) {
|
for (i=0; NULL != peers[i]; i++) {
|
||||||
kv = OBJ_NEW(opal_value_t);
|
kv = OBJ_NEW(opal_value_t);
|
||||||
kv->key = strdup(OPAL_PMIX_LOCALITY);
|
kv->key = strdup(OPAL_PMIX_LOCALITY);
|
||||||
kv->type = OPAL_UINT16;
|
kv->type = OPAL_UINT16;
|
||||||
name.vpid = strtoul(peers[i], NULL, 10);
|
pname.vpid = strtoul(peers[i], NULL, 10);
|
||||||
if (name.vpid == ORTE_PROC_MY_NAME->vpid) {
|
if (pname.vpid == ORTE_PROC_MY_NAME->vpid) {
|
||||||
/* we are fully local to ourselves */
|
/* we are fully local to ourselves */
|
||||||
u16 = OPAL_PROC_ALL_LOCAL;
|
u16 = OPAL_PROC_ALL_LOCAL;
|
||||||
} else if (NULL == mycpuset || NULL == cpusets[i] ||
|
} else if (NULL == mycpuset || NULL == cpusets[i] ||
|
||||||
@ -359,9 +363,9 @@ static int rte_init(void)
|
|||||||
OPAL_OUTPUT_VERBOSE((1, orte_ess_base_framework.framework_output,
|
OPAL_OUTPUT_VERBOSE((1, orte_ess_base_framework.framework_output,
|
||||||
"%s ess:pmi:locality: proc %s locality %x",
|
"%s ess:pmi:locality: proc %s locality %x",
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
ORTE_NAME_PRINT(&name), u16));
|
ORTE_NAME_PRINT(&pname), u16));
|
||||||
kv->data.uint16 = u16;
|
kv->data.uint16 = u16;
|
||||||
ret = opal_pmix.store_local(&name, kv);
|
ret = opal_pmix.store_local(&pname, kv);
|
||||||
if (OPAL_SUCCESS != ret) {
|
if (OPAL_SUCCESS != ret) {
|
||||||
error = "local store of locality";
|
error = "local store of locality";
|
||||||
opal_argv_free(peers);
|
opal_argv_free(peers);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user