From 1351a7065c5df13f4eb198e4fd6302e06ac57c43 Mon Sep 17 00:00:00 2001 From: Artem Polyakov Date: Sat, 6 Aug 2016 15:43:00 +0600 Subject: [PATCH 1/5] 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. --- orte/mca/ess/pmi/ess_pmi_module.c | 34 +++++++++++++++++-------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/orte/mca/ess/pmi/ess_pmi_module.c b/orte/mca/ess/pmi/ess_pmi_module.c index 135d56d9296..ab23256c604 100644 --- a/orte/mca/ess/pmi/ess_pmi_module.c +++ b/orte/mca/ess/pmi/ess_pmi_module.c @@ -93,7 +93,7 @@ static int rte_init(void) int u32, *u32ptr; uint16_t u16, *u16ptr; char **peers=NULL, *mycpuset, **cpusets=NULL; - opal_process_name_t name; + opal_process_name_t wildcard_rank, pname; size_t i; /* run the prolog */ @@ -137,8 +137,12 @@ static int rte_init(void) ORTE_PROC_MY_NAME->vpid = OPAL_PROC_MY_NAME.vpid; /* setup a name for retrieving data associated with the job */ - name.jobid = ORTE_PROC_MY_NAME->jobid; - name.vpid = ORTE_NAME_WILDCARD->vpid; + wildcard_rank.jobid = ORTE_PROC_MY_NAME->jobid; + 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 */ OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_RANK, @@ -160,7 +164,7 @@ static int rte_init(void) /* get max procs for this application */ OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_MAX_PROCS, - &name, &u32ptr, OPAL_UINT32); + &wildcard_rank, &u32ptr, OPAL_UINT32); if (OPAL_SUCCESS != ret) { error = "getting max procs"; goto error; @@ -169,7 +173,7 @@ static int rte_init(void) /* get job size */ OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_JOB_SIZE, - &name, &u32ptr, OPAL_UINT32); + &wildcard_rank, &u32ptr, OPAL_UINT32); if (OPAL_SUCCESS != ret) { error = "getting job size"; goto error; @@ -203,7 +207,7 @@ static int rte_init(void) /* get the number of local peers - required for wireup of * shared memory BTL */ OPAL_MODEX_RECV_VALUE(ret, OPAL_PMIX_LOCAL_SIZE, - &name, &u32ptr, OPAL_UINT32); + &wildcard_rank, &u32ptr, OPAL_UINT32); if (OPAL_SUCCESS == ret) { orte_process_info.num_local_peers = u32 - 1; // want number besides ourselves } else { @@ -234,7 +238,7 @@ static int rte_init(void) /* retrieve our topology */ val = NULL; 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) { /* load the topology */ if (0 != hwloc_topology_init(&opal_hwloc_topology)) { @@ -293,7 +297,7 @@ static int rte_init(void) error = "topology export"; 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"; goto error; } @@ -310,12 +314,12 @@ static int rte_init(void) } /* retrieve the 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) { peers = opal_argv_split(val, ','); free(val); /* 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) { cpusets = opal_argv_split(val, ':'); free(val); @@ -339,13 +343,13 @@ static int rte_init(void) } else { mycpuset = NULL; } - name.jobid = ORTE_PROC_MY_NAME->jobid; + pname.jobid = ORTE_PROC_MY_NAME->jobid; for (i=0; NULL != peers[i]; i++) { kv = OBJ_NEW(opal_value_t); kv->key = strdup(OPAL_PMIX_LOCALITY); kv->type = OPAL_UINT16; - name.vpid = strtoul(peers[i], NULL, 10); - if (name.vpid == ORTE_PROC_MY_NAME->vpid) { + pname.vpid = strtoul(peers[i], NULL, 10); + if (pname.vpid == ORTE_PROC_MY_NAME->vpid) { /* we are fully local to ourselves */ u16 = OPAL_PROC_ALL_LOCAL; } 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, "%s ess:pmi:locality: proc %s locality %x", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), - ORTE_NAME_PRINT(&name), u16)); + ORTE_NAME_PRINT(&pname), u16)); kv->data.uint16 = u16; - ret = opal_pmix.store_local(&name, kv); + ret = opal_pmix.store_local(&pname, kv); if (OPAL_SUCCESS != ret) { error = "local store of locality"; opal_argv_free(peers); From 81063f17174818480eb56188d64f1104e268ba39 Mon Sep 17 00:00:00 2001 From: Artem Polyakov Date: Sat, 6 Aug 2016 15:45:46 +0600 Subject: [PATCH 2/5] pmix/s1: fix s1 component data placement Use wildcard for the information related to the job-level data. Fixes s1 component with regard to PR https://github.com/open-mpi/ompi/pull/1897. --- opal/mca/pmix/s1/pmix_s1.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/opal/mca/pmix/s1/pmix_s1.c b/opal/mca/pmix/s1/pmix_s1.c index ac5580c156e..dcfdb4c6a3c 100644 --- a/opal/mca/pmix/s1/pmix_s1.c +++ b/opal/mca/pmix/s1/pmix_s1.c @@ -153,6 +153,7 @@ static int s1_init(void) uint32_t ui32; opal_process_name_t ldr; char **localranks=NULL; + opal_process_name_t wildcard_rank; if (PMI_SUCCESS != (rc = PMI_Initialized(&initialized))) { OPAL_PMI_ERROR(rc, "PMI_Initialized"); @@ -229,11 +230,15 @@ static int s1_init(void) "%s pmix:s1: assigned tmp name", OPAL_NAME_PRINT(s1_pname)); + /* setup wildcard rank*/ + wildcard_rank = OPAL_PROC_MY_NAME; + wildcard_rank.vpid = OPAL_VPID_WILDCARD; + OBJ_CONSTRUCT(&kv, opal_value_t); kv.key = strdup(OPAL_PMIX_JOBID); kv.type = OPAL_UINT32; kv.data.uint32 = s1_pname.jobid; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -274,7 +279,7 @@ static int s1_init(void) kv.key = strdup(OPAL_PMIX_LOCAL_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = nlranks; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -314,7 +319,7 @@ static int s1_init(void) kv.key = strdup(OPAL_PMIX_LOCAL_PEERS); kv.type = OPAL_STRING; kv.data.string = str; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -367,7 +372,7 @@ static int s1_init(void) kv.key = strdup(OPAL_PMIX_UNIV_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = i; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -378,7 +383,7 @@ static int s1_init(void) kv.key = strdup(OPAL_PMIX_MAX_PROCS); kv.type = OPAL_UINT32; kv.data.uint32 = i; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -396,7 +401,7 @@ static int s1_init(void) kv.key = strdup(OPAL_PMIX_JOB_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = i; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; From 8aa3ef7799fdda78a2620fdcaf444e3155c8c808 Mon Sep 17 00:00:00 2001 From: Artem Polyakov Date: Sat, 6 Aug 2016 15:49:16 +0600 Subject: [PATCH 3/5] pmix/s2: fix s2 component data placement Use wildcard for the information related to the job-level data. Fixes s2 component with regard to PR https://github.com/open-mpi/ompi/pull/1897. --- opal/mca/pmix/s2/pmix_s2.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/opal/mca/pmix/s2/pmix_s2.c b/opal/mca/pmix/s2/pmix_s2.c index 37d17da626d..0a14b5ec448 100644 --- a/opal/mca/pmix/s2/pmix_s2.c +++ b/opal/mca/pmix/s2/pmix_s2.c @@ -173,6 +173,7 @@ static int s2_init(void) char **localranks; char *str; char nmtmp[64]; + opal_process_name_t wildcard_rank; /* if we can't startup PMI, we can't be used */ if ( PMI2_Initialized () ) { @@ -232,6 +233,10 @@ static int s2_init(void) "%s pmix:s2: assigned tmp name", OPAL_NAME_PRINT(s2_pname)); + /* setup wildcard rank*/ + wildcard_rank = OPAL_PROC_MY_NAME; + wildcard_rank.vpid = OPAL_VPID_WILDCARD; + /* Slurm PMI provides the job id as an integer followed * by a '.', followed by essentially a stepid. The first integer * defines an overall job number. The second integer is the number of @@ -241,7 +246,7 @@ static int s2_init(void) kv.key = strdup(OPAL_PMIX_JOBID); kv.type = OPAL_UINT32; kv.data.uint32 = s2_pname.jobid; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -253,7 +258,7 @@ static int s2_init(void) kv.key = strdup(OPAL_PMIX_JOB_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = size; - if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(rc); OBJ_DESTRUCT(&kv); goto err_exit; @@ -282,7 +287,7 @@ static int s2_init(void) kv.key = strdup(OPAL_PMIX_UNIV_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = atoi(buf); - if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(rc); OBJ_DESTRUCT(&kv); goto err_exit; @@ -293,7 +298,7 @@ static int s2_init(void) kv.key = strdup(OPAL_PMIX_MAX_PROCS); kv.type = OPAL_UINT32; kv.data.uint32 = atoi(buf); - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; @@ -327,7 +332,7 @@ static int s2_init(void) kv.key = strdup(OPAL_PMIX_LOCAL_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = s2_nlranks; - if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(rc); OBJ_DESTRUCT(&kv); goto err_exit; @@ -359,7 +364,7 @@ static int s2_init(void) kv.key = strdup(OPAL_PMIX_LOCAL_PEERS); kv.type = OPAL_STRING; kv.data.string = str; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; From 2cb923a4136b11a08d5f578656eb0b512b36afff Mon Sep 17 00:00:00 2001 From: Artem Polyakov Date: Sat, 6 Aug 2016 16:30:45 +0600 Subject: [PATCH 4/5] pmix/s1: fix indentation (only) --- opal/mca/pmix/s1/pmix_s1.c | 440 +++++++++++++-------------- opal/mca/pmix/s1/pmix_s1_component.c | 44 +-- 2 files changed, 242 insertions(+), 242 deletions(-) diff --git a/opal/mca/pmix/s1/pmix_s1.c b/opal/mca/pmix/s1/pmix_s1.c index dcfdb4c6a3c..6b5874d81f9 100644 --- a/opal/mca/pmix/s1/pmix_s1.c +++ b/opal/mca/pmix/s1/pmix_s1.c @@ -35,16 +35,16 @@ static int s1_init(void); static int s1_fini(void); static int s1_initialized(void); static int s1_abort(int flag, const char msg[], - opal_list_t *procs); + opal_list_t *procs); static int s1_commit(void); static int s1_fencenb(opal_list_t *procs, int collect_data, - opal_pmix_op_cbfunc_t cbfunc, void *cbdata); + opal_pmix_op_cbfunc_t cbfunc, void *cbdata); static int s1_fence(opal_list_t *procs, int collect_data); static int s1_put(opal_pmix_scope_t scope, - opal_value_t *kv); + opal_value_t *kv); static int s1_get(const opal_process_name_t *id, - const char *key, opal_list_t *info, - opal_value_t **kv); + const char *key, opal_list_t *info, + opal_value_t **kv); static int s1_publish(opal_list_t *info); static int s1_lookup(opal_list_t *data, opal_list_t *info); static int s1_unpublish(char **keys, opal_list_t *info); @@ -52,7 +52,7 @@ static int s1_spawn(opal_list_t *jobinfo, opal_list_t *apps, opal_jobid_t *jobid static int s1_job_connect(opal_list_t *procs); static int s1_job_disconnect(opal_list_t *procs); static int s1_store_local(const opal_process_name_t *proc, - opal_value_t *val); + opal_value_t *val); static const char *s1_get_nspace(opal_jobid_t jobid); static void s1_register_jobid(opal_jobid_t jobid, const char *nspace); @@ -90,8 +90,8 @@ typedef struct { void *cbdata; } pmi_opcaddy_t; OBJ_CLASS_INSTANCE(pmi_opcaddy_t, - opal_object_t, - NULL, NULL); + opal_object_t, + NULL, NULL); // PMI constant values: static int pmix_kvslen_max = 0; @@ -114,9 +114,9 @@ static bool got_modex_data = false; static char* pmix_error(int pmix_err); #define OPAL_PMI_ERROR(pmi_err, pmi_func) \ do { \ - opal_output(0, "%s [%s:%d:%s]: %s\n", \ - pmi_func, __FILE__, __LINE__, __func__, \ - pmix_error(pmi_err)); \ + opal_output(0, "%s [%s:%d:%s]: %s\n", \ + pmi_func, __FILE__, __LINE__, __func__, \ + pmix_error(pmi_err)); \ } while(0); static int kvs_get(const char key[], char value [], int maxvalue) @@ -124,8 +124,8 @@ static int kvs_get(const char key[], char value [], int maxvalue) int rc; rc = PMI_KVS_Get(pmix_kvs_name, key, value, maxvalue); if( PMI_SUCCESS != rc ){ - /* silently return an error - might be okay */ - return OPAL_ERROR; + /* silently return an error - might be okay */ + return OPAL_ERROR; } return OPAL_SUCCESS; } @@ -135,8 +135,8 @@ static int kvs_put(const char key[], const char value[]) int rc; rc = PMI_KVS_Put(pmix_kvs_name, key, value); if( PMI_SUCCESS != rc ){ - OPAL_PMI_ERROR(rc, "PMI_KVS_Put"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI_KVS_Put"); + return OPAL_ERROR; } return rc; } @@ -156,13 +156,13 @@ static int s1_init(void) opal_process_name_t wildcard_rank; if (PMI_SUCCESS != (rc = PMI_Initialized(&initialized))) { - OPAL_PMI_ERROR(rc, "PMI_Initialized"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI_Initialized"); + return OPAL_ERROR; } if (PMI_TRUE != initialized && PMI_SUCCESS != (rc = PMI_Init(&spawned))) { - OPAL_PMI_ERROR(rc, "PMI_Init"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI_Init"); + return OPAL_ERROR; } // setup hash table @@ -171,42 +171,42 @@ static int s1_init(void) // Initialize space demands rc = PMI_KVS_Get_value_length_max(&pmix_vallen_max); if (PMI_SUCCESS != rc) { - OPAL_PMI_ERROR(rc, "PMI_KVS_Get_value_length_max"); - goto err_exit; + OPAL_PMI_ERROR(rc, "PMI_KVS_Get_value_length_max"); + goto err_exit; } pmix_vallen_threshold = pmix_vallen_max * 3; pmix_vallen_threshold >>= 2; rc = PMI_KVS_Get_name_length_max(&pmix_kvslen_max); if (PMI_SUCCESS != rc) { - OPAL_PMI_ERROR(rc, "PMI_KVS_Get_name_length_max"); - goto err_exit; + OPAL_PMI_ERROR(rc, "PMI_KVS_Get_name_length_max"); + goto err_exit; } rc = PMI_KVS_Get_key_length_max(&pmix_keylen_max); if (PMI_SUCCESS != rc) { - OPAL_PMI_ERROR(rc, "PMI_KVS_Get_key_length_max"); - goto err_exit; + OPAL_PMI_ERROR(rc, "PMI_KVS_Get_key_length_max"); + goto err_exit; } // Initialize job environment information pmix_id = (char*)malloc(pmix_vallen_max); if (pmix_id == NULL) { - ret = OPAL_ERR_OUT_OF_RESOURCE; - goto err_exit; + ret = OPAL_ERR_OUT_OF_RESOURCE; + goto err_exit; } /* Get domain id */ if (PMI_SUCCESS != (rc = PMI_Get_kvs_domain_id(pmix_id, pmix_vallen_max))) { - free(pmix_id); - goto err_exit; + free(pmix_id); + goto err_exit; } /* get our rank */ ret = PMI_Get_rank(&rank); if( PMI_SUCCESS != ret ) { - OPAL_PMI_ERROR(ret, "PMI_Get_rank"); - free(pmix_id); - goto err_exit; + OPAL_PMI_ERROR(ret, "PMI_Get_rank"); + free(pmix_id); + goto err_exit; } /* Slurm PMI provides the job id as an integer followed @@ -216,8 +216,8 @@ static int s1_init(void) s1_pname.jobid = strtoul(pmix_id, &str, 10); s1_pname.jobid = (s1_pname.jobid << 16) & 0xffff0000; if (NULL != str) { - ui32 = strtoul(str, NULL, 10); - s1_pname.jobid |= (ui32 & 0x0000ffff); + ui32 = strtoul(str, NULL, 10); + s1_pname.jobid |= (ui32 & 0x0000ffff); } ldr.jobid = s1_pname.jobid; s1_pname.vpid = rank; @@ -227,8 +227,8 @@ static int s1_init(void) * won't do any harm */ opal_proc_set_name(&s1_pname); opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s1: assigned tmp name", - OPAL_NAME_PRINT(s1_pname)); + "%s pmix:s1: assigned tmp name", + OPAL_NAME_PRINT(s1_pname)); /* setup wildcard rank*/ wildcard_rank = OPAL_PROC_MY_NAME; @@ -239,9 +239,9 @@ static int s1_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = s1_pname.jobid; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); @@ -251,28 +251,28 @@ static int s1_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = rank; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); pmix_kvs_name = (char*)malloc(pmix_kvslen_max); if (pmix_kvs_name == NULL) { - ret = OPAL_ERR_OUT_OF_RESOURCE; - goto err_exit; + ret = OPAL_ERR_OUT_OF_RESOURCE; + goto err_exit; } rc = PMI_KVS_Get_my_name(pmix_kvs_name, pmix_kvslen_max); if (PMI_SUCCESS != rc) { - OPAL_PMI_ERROR(rc, "PMI_KVS_Get_my_name"); - goto err_exit; + OPAL_PMI_ERROR(rc, "PMI_KVS_Get_my_name"); + goto err_exit; } /* get our local proc info to find our local rank */ if (PMI_SUCCESS != (rc = PMI_Get_clique_size(&nlranks))) { - OPAL_PMI_ERROR(rc, "PMI_Get_clique_size"); - return rc; + OPAL_PMI_ERROR(rc, "PMI_Get_clique_size"); + return rc; } /* save the local size */ OBJ_CONSTRUCT(&kv, opal_value_t); @@ -280,51 +280,51 @@ static int s1_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = nlranks; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); lrank = 0; nrank = 0; ldr.vpid = rank; if (0 < nlranks) { - /* now get the specific ranks */ - lranks = (int*)calloc(nlranks, sizeof(int)); - if (NULL == lranks) { - rc = OPAL_ERR_OUT_OF_RESOURCE; - OPAL_ERROR_LOG(rc); - return rc; - } - if (PMI_SUCCESS != (rc = PMI_Get_clique_ranks(lranks, nlranks))) { - OPAL_PMI_ERROR(rc, "PMI_Get_clique_ranks"); - free(lranks); - return rc; - } - /* note the local ldr */ - ldr.vpid = lranks[0]; - /* save this */ - memset(tmp, 0, 64); - for (i=0; i < nlranks; i++) { - (void)snprintf(tmp, 64, "%d", lranks[i]); - opal_argv_append_nosize(&localranks, tmp); - if (rank == lranks[i]) { - lrank = i; - nrank = i; - } - } - str = opal_argv_join(localranks, ','); - opal_argv_free(localranks); - OBJ_CONSTRUCT(&kv, opal_value_t); - kv.key = strdup(OPAL_PMIX_LOCAL_PEERS); - kv.type = OPAL_STRING; - kv.data.string = str; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; - } - OBJ_DESTRUCT(&kv); + /* now get the specific ranks */ + lranks = (int*)calloc(nlranks, sizeof(int)); + if (NULL == lranks) { + rc = OPAL_ERR_OUT_OF_RESOURCE; + OPAL_ERROR_LOG(rc); + return rc; + } + if (PMI_SUCCESS != (rc = PMI_Get_clique_ranks(lranks, nlranks))) { + OPAL_PMI_ERROR(rc, "PMI_Get_clique_ranks"); + free(lranks); + return rc; + } + /* note the local ldr */ + ldr.vpid = lranks[0]; + /* save this */ + memset(tmp, 0, 64); + for (i=0; i < nlranks; i++) { + (void)snprintf(tmp, 64, "%d", lranks[i]); + opal_argv_append_nosize(&localranks, tmp); + if (rank == lranks[i]) { + lrank = i; + nrank = i; + } + } + str = opal_argv_join(localranks, ','); + opal_argv_free(localranks); + OBJ_CONSTRUCT(&kv, opal_value_t); + kv.key = strdup(OPAL_PMIX_LOCAL_PEERS); + kv.type = OPAL_STRING; + kv.data.string = str; + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; + } + OBJ_DESTRUCT(&kv); } /* save the local leader */ @@ -333,9 +333,9 @@ static int s1_init(void) kv.type = OPAL_UINT64; kv.data.uint64 = *(uint64_t*)&ldr; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* save our local rank */ @@ -344,9 +344,9 @@ static int s1_init(void) kv.type = OPAL_UINT16; kv.data.uint16 = lrank; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* and our node rank */ @@ -355,17 +355,17 @@ static int s1_init(void) kv.type = OPAL_UINT16; kv.data.uint16 = nrank; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* get universe size */ ret = PMI_Get_universe_size(&i); if (PMI_SUCCESS != ret) { - OPAL_PMI_ERROR(ret, "PMI_Get_universe_size"); - goto err_exit; + OPAL_PMI_ERROR(ret, "PMI_Get_universe_size"); + goto err_exit; } /* push this into the dstore for subsequent fetches */ OBJ_CONSTRUCT(&kv, opal_value_t); @@ -373,9 +373,9 @@ static int s1_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = i; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* push this into the dstore for subsequent fetches */ @@ -384,9 +384,9 @@ static int s1_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = i; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); @@ -394,54 +394,54 @@ static int s1_init(void) /* get job size */ ret = PMI_Get_size(&i); if (PMI_SUCCESS != ret) { - OPAL_PMI_ERROR(ret, "PMI_Get_size"); - goto err_exit; + OPAL_PMI_ERROR(ret, "PMI_Get_size"); + goto err_exit; } OBJ_CONSTRUCT(&kv, opal_value_t); kv.key = strdup(OPAL_PMIX_JOB_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = i; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* get appnum */ ret = PMI_Get_appnum(&i); if (PMI_SUCCESS != ret) { - OPAL_PMI_ERROR(ret, "PMI_Get_appnum"); - goto err_exit; + OPAL_PMI_ERROR(ret, "PMI_Get_appnum"); + goto err_exit; } OBJ_CONSTRUCT(&kv, opal_value_t); kv.key = strdup(OPAL_PMIX_APPNUM); kv.type = OPAL_UINT32; kv.data.uint32 = i; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); - /* increment the init count */ + /* increment the init count */ ++pmix_init_count; return OPAL_SUCCESS; - err_exit: +err_exit: PMI_Finalize(); return ret; } static int s1_fini(void) { if (0 == pmix_init_count) { - return OPAL_SUCCESS; + return OPAL_SUCCESS; } if (0 == --pmix_init_count) { - PMI_Finalize (); + PMI_Finalize (); } // teardown hash table @@ -453,13 +453,13 @@ static int s1_fini(void) { static int s1_initialized(void) { if (0 < pmix_init_count) { - return 1; + return 1; } return 0; } static int s1_abort(int flag, const char msg[], - opal_list_t *procs) + opal_list_t *procs) { PMI_Abort(flag, msg); return OPAL_SUCCESS; @@ -476,41 +476,41 @@ static int s1_spawn(opal_list_t *jobinfo, opal_list_t *apps, opal_jobid_t *jobid preput_vector_size = opal_list_get_size(preput_keyval_vector); rc = PMI_Spawn_multiple(count, cmds, argcs, argvs, maxprocs, info_keyval_sizes, info_keyval_vector, (int)preput_vector_size, preput_keyval_vector); if( PMI_SUCCESS != rc ) { - OPAL_PMI_ERROR(rc, "PMI_Spawn_multiple"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI_Spawn_multiple"); + return OPAL_ERROR; }*/ return OPAL_ERR_NOT_IMPLEMENTED; } static int s1_put(opal_pmix_scope_t scope, - opal_value_t *kv) + opal_value_t *kv) { int rc; opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s1 put for key %s", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), kv->key); + "%s pmix:s1 put for key %s", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), kv->key); if (OPAL_SUCCESS != (rc = opal_pmix_base_store_encoded (kv->key, (void*)&kv->data, kv->type, &pmix_packed_data, &pmix_packed_data_offset))) { - OPAL_ERROR_LOG(rc); - return rc; + OPAL_ERROR_LOG(rc); + return rc; } if (pmix_packed_data_offset == 0) { - /* nothing to write */ - return OPAL_SUCCESS; + /* nothing to write */ + return OPAL_SUCCESS; } if (((pmix_packed_data_offset/3)*4) + pmix_packed_encoded_data_offset < pmix_vallen_max) { - /* this meta-key is still being filled, - * nothing to put yet - */ - return OPAL_SUCCESS; + /* this meta-key is still being filled, + * nothing to put yet + */ + return OPAL_SUCCESS; } rc = opal_pmix_base_partial_commit_packed (&pmix_packed_data, &pmix_packed_data_offset, - &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, - pmix_vallen_max, &pmix_pack_key, kvs_put); + &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, + pmix_vallen_max, &pmix_pack_key, kvs_put); s1_committed = false; return rc; @@ -522,12 +522,12 @@ static int s1_commit(void) /* check if there is partially filled meta key and put them */ opal_pmix_base_commit_packed (&pmix_packed_data, &pmix_packed_data_offset, - &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, - pmix_vallen_max, &pmix_pack_key, kvs_put); + &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, + pmix_vallen_max, &pmix_pack_key, kvs_put); if (PMI_SUCCESS != (rc = PMI_KVS_Commit(pmix_kvs_name))) { - OPAL_PMI_ERROR(rc, "PMI_KVS_Commit"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI_KVS_Commit"); + return OPAL_ERROR; } return OPAL_SUCCESS; } @@ -542,75 +542,75 @@ static void fencenb(int sd, short args, void *cbdata) opal_process_name_t s1_pname; opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s1 called fence", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); + "%s pmix:s1 called fence", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); /* use the PMI barrier function */ if (PMI_SUCCESS != (rc = PMI_Barrier())) { - OPAL_PMI_ERROR(rc, "PMI_Barrier"); - rc = OPAL_ERROR; - goto cleanup; + OPAL_PMI_ERROR(rc, "PMI_Barrier"); + rc = OPAL_ERROR; + goto cleanup; } opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s1 barrier complete", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); + "%s pmix:s1 barrier complete", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); /* get the modex data from each local process and set the * localities to avoid having the MPI layer fetch data * for every process in the job */ s1_pname.jobid = OPAL_PROC_MY_NAME.jobid; if (!got_modex_data) { - got_modex_data = true; - /* we only need to set locality for each local rank as "not found" - * equates to "non-local" */ - for (i=0; i < nlranks; i++) { - s1_pname.vpid = lranks[i]; - rc = opal_pmix_base_cache_keys_locally(&s1_pname, OPAL_PMIX_CPUSET, - &kp, pmix_kvs_name, pmix_vallen_max, kvs_get); - if (OPAL_SUCCESS != rc) { - OPAL_ERROR_LOG(rc); - goto cleanup; - } - if (NULL == kp || NULL == kp->data.string) { - /* if we share a node, but we don't know anything more, then - * mark us as on the node as this is all we know - */ - locality = OPAL_PROC_ON_CLUSTER | OPAL_PROC_ON_CU | OPAL_PROC_ON_NODE; - } else { - /* determine relative location on our node */ - locality = opal_hwloc_base_get_relative_locality(opal_hwloc_topology, - opal_process_info.cpuset, - kp->data.string); - } - if (NULL != kp) { - OBJ_RELEASE(kp); - } - OPAL_OUTPUT_VERBOSE((1, opal_pmix_base_framework.framework_output, - "%s pmix:s1 proc %s locality %s", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), - OPAL_NAME_PRINT(s1_pname), - opal_hwloc_base_print_locality(locality))); - - OBJ_CONSTRUCT(&kvn, opal_value_t); - kvn.key = strdup(OPAL_PMIX_LOCALITY); - kvn.type = OPAL_UINT16; - kvn.data.uint16 = locality; - opal_pmix_base_store(&s1_pname, &kvn); - OBJ_DESTRUCT(&kvn); - } - } - - cleanup: + got_modex_data = true; + /* we only need to set locality for each local rank as "not found" + * equates to "non-local" */ + for (i=0; i < nlranks; i++) { + s1_pname.vpid = lranks[i]; + rc = opal_pmix_base_cache_keys_locally(&s1_pname, OPAL_PMIX_CPUSET, + &kp, pmix_kvs_name, pmix_vallen_max, kvs_get); + if (OPAL_SUCCESS != rc) { + OPAL_ERROR_LOG(rc); + goto cleanup; + } + if (NULL == kp || NULL == kp->data.string) { + /* if we share a node, but we don't know anything more, then + * mark us as on the node as this is all we know + */ + locality = OPAL_PROC_ON_CLUSTER | OPAL_PROC_ON_CU | OPAL_PROC_ON_NODE; + } else { + /* determine relative location on our node */ + locality = opal_hwloc_base_get_relative_locality(opal_hwloc_topology, + opal_process_info.cpuset, + kp->data.string); + } + if (NULL != kp) { + OBJ_RELEASE(kp); + } + OPAL_OUTPUT_VERBOSE((1, opal_pmix_base_framework.framework_output, + "%s pmix:s1 proc %s locality %s", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), + OPAL_NAME_PRINT(s1_pname), + opal_hwloc_base_print_locality(locality))); + + OBJ_CONSTRUCT(&kvn, opal_value_t); + kvn.key = strdup(OPAL_PMIX_LOCALITY); + kvn.type = OPAL_UINT16; + kvn.data.uint16 = locality; + opal_pmix_base_store(&s1_pname, &kvn); + OBJ_DESTRUCT(&kvn); + } + } + +cleanup: if (NULL != op->opcbfunc) { - op->opcbfunc(rc, op->cbdata); + op->opcbfunc(rc, op->cbdata); } OBJ_RELEASE(op); return; } static int s1_fencenb(opal_list_t *procs, int collect_data, - opal_pmix_op_cbfunc_t cbfunc, void *cbdata) + opal_pmix_op_cbfunc_t cbfunc, void *cbdata) { pmi_opcaddy_t *op; @@ -619,7 +619,7 @@ static int s1_fencenb(opal_list_t *procs, int collect_data, op->opcbfunc = cbfunc; op->cbdata = cbdata; event_assign(&op->ev, opal_pmix_base.evbase, -1, - EV_WRITE, fencenb, op); + EV_WRITE, fencenb, op); event_active(&op->ev, EV_WRITE, 1); return OPAL_SUCCESS; @@ -627,9 +627,9 @@ static int s1_fencenb(opal_list_t *procs, int collect_data, #define S1_WAIT_FOR_COMPLETION(a) \ do { \ - while ((a)) { \ - usleep(10); \ - } \ + while ((a)) { \ + usleep(10); \ + } \ } while (0) struct fence_result { @@ -655,20 +655,20 @@ static int s1_fence(opal_list_t *procs, int collect_data) static int s1_get(const opal_process_name_t *id, - const char *key, opal_list_t *info, - opal_value_t **kv) + const char *key, opal_list_t *info, + opal_value_t **kv) { int rc; opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s1 called get for key %s", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), key); + "%s pmix:s1 called get for key %s", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), key); rc = opal_pmix_base_cache_keys_locally(id, key, kv, pmix_kvs_name, pmix_vallen_max, kvs_get); - opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s1 got key %s", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), key); + opal_output_verbose(2, opal_pmix_base_framework.framework_output, + "%s pmix:s1 got key %s", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), key); - return rc; + return rc; } static int s1_publish(opal_list_t *info) @@ -704,7 +704,7 @@ static int s1_job_disconnect(opal_list_t *procs) } static int s1_store_local(const opal_process_name_t *proc, - opal_value_t *val) + opal_value_t *val) { opal_pmix_base_store(proc, val); @@ -725,26 +725,26 @@ static char* pmix_error(int pmix_err) char * err_msg; switch(pmix_err) { - case PMI_FAIL: err_msg = "Operation failed"; break; - case PMI_ERR_INIT: err_msg = "PMI is not initialized"; break; - case PMI_ERR_NOMEM: err_msg = "Input buffer not large enough"; break; - case PMI_ERR_INVALID_ARG: err_msg = "Invalid argument"; break; - case PMI_ERR_INVALID_KEY: err_msg = "Invalid key argument"; break; - case PMI_ERR_INVALID_KEY_LENGTH: err_msg = "Invalid key length argument"; break; - case PMI_ERR_INVALID_VAL: err_msg = "Invalid value argument"; break; - case PMI_ERR_INVALID_VAL_LENGTH: err_msg = "Invalid value length argument"; break; - case PMI_ERR_INVALID_LENGTH: err_msg = "Invalid length argument"; break; - case PMI_ERR_INVALID_NUM_ARGS: err_msg = "Invalid number of arguments"; break; - case PMI_ERR_INVALID_ARGS: err_msg = "Invalid args argument"; break; - case PMI_ERR_INVALID_NUM_PARSED: err_msg = "Invalid num_parsed length argument"; break; - case PMI_ERR_INVALID_KEYVALP: err_msg = "Invalid keyvalp argument"; break; - case PMI_ERR_INVALID_SIZE: err_msg = "Invalid size argument"; break; + case PMI_FAIL: err_msg = "Operation failed"; break; + case PMI_ERR_INIT: err_msg = "PMI is not initialized"; break; + case PMI_ERR_NOMEM: err_msg = "Input buffer not large enough"; break; + case PMI_ERR_INVALID_ARG: err_msg = "Invalid argument"; break; + case PMI_ERR_INVALID_KEY: err_msg = "Invalid key argument"; break; + case PMI_ERR_INVALID_KEY_LENGTH: err_msg = "Invalid key length argument"; break; + case PMI_ERR_INVALID_VAL: err_msg = "Invalid value argument"; break; + case PMI_ERR_INVALID_VAL_LENGTH: err_msg = "Invalid value length argument"; break; + case PMI_ERR_INVALID_LENGTH: err_msg = "Invalid length argument"; break; + case PMI_ERR_INVALID_NUM_ARGS: err_msg = "Invalid number of arguments"; break; + case PMI_ERR_INVALID_ARGS: err_msg = "Invalid args argument"; break; + case PMI_ERR_INVALID_NUM_PARSED: err_msg = "Invalid num_parsed length argument"; break; + case PMI_ERR_INVALID_KEYVALP: err_msg = "Invalid keyvalp argument"; break; + case PMI_ERR_INVALID_SIZE: err_msg = "Invalid size argument"; break; #if defined(PMI_ERR_INVALID_KVS) - /* pmix.h calls this a valid return code but mpich doesn't define it (slurm does). */ - case PMI_ERR_INVALID_KVS: err_msg = "Invalid kvs argument"; break; + /* pmix.h calls this a valid return code but mpich doesn't define it (slurm does). */ + case PMI_ERR_INVALID_KVS: err_msg = "Invalid kvs argument"; break; #endif - case PMI_SUCCESS: err_msg = "Success"; break; - default: err_msg = "Unkown error"; + case PMI_SUCCESS: err_msg = "Success"; break; + default: err_msg = "Unkown error"; } return err_msg; } diff --git a/opal/mca/pmix/s1/pmix_s1_component.c b/opal/mca/pmix/s1/pmix_s1_component.c index c9868478f53..6191dbf8677 100644 --- a/opal/mca/pmix/s1/pmix_s1_component.c +++ b/opal/mca/pmix/s1/pmix_s1_component.c @@ -27,7 +27,7 @@ * Public string showing the pmix s1 component version number */ const char *opal_pmix_s1_component_version_string = - "OPAL s1 pmix MCA component version " OPAL_VERSION; + "OPAL s1 pmix MCA component version " OPAL_VERSION; /* * Local function @@ -44,28 +44,28 @@ static int pmix_s1_component_register(void); opal_pmix_base_component_t mca_pmix_s1_component = { /* First, the mca_component_t struct containing meta information - about the component itself */ + about the component itself */ .base_version = { - /* Indicate that we are a pmix v1.1.0 component (which also - implies a specific MCA version) */ + /* Indicate that we are a pmix v1.1.0 component (which also + implies a specific MCA version) */ - OPAL_PMIX_BASE_VERSION_2_0_0, + OPAL_PMIX_BASE_VERSION_2_0_0, - /* Component name and version */ + /* Component name and version */ - .mca_component_name = "s1", - MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, - OPAL_RELEASE_VERSION), + .mca_component_name = "s1", + MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, + OPAL_RELEASE_VERSION), - /* Component open and close functions */ - .mca_query_component = pmix_s1_component_query, - .mca_register_component_params = pmix_s1_component_register, + /* Component open and close functions */ + .mca_query_component = pmix_s1_component_query, + .mca_register_component_params = pmix_s1_component_register, }, /* Next the MCA v1.0.0 component meta data */ .base_data = { - /* The component is checkpoint ready */ - MCA_BASE_METADATA_PARAM_CHECKPOINT + /* The component is checkpoint ready */ + MCA_BASE_METADATA_PARAM_CHECKPOINT }, .priority = 10, }; @@ -77,12 +77,12 @@ static int pmix_s1_component_register(void) mca_pmix_s1_component.priority = 10; ret = mca_base_component_var_register(component, "priority", - "Priority of the pmix s1 component (default: 10)", - MCA_BASE_VAR_TYPE_INT, NULL, 0, 0, - OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY, - &mca_pmix_s1_component.priority); + "Priority of the pmix s1 component (default: 10)", + MCA_BASE_VAR_TYPE_INT, NULL, 0, 0, + OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY, + &mca_pmix_s1_component.priority); if (0 > ret) { - return ret; + return ret; } return OPAL_SUCCESS; @@ -92,9 +92,9 @@ static int pmix_s1_component_query(mca_base_module_t **module, int *priority) { /* disqualify ourselves if we are not under slurm */ if (NULL == getenv("SLURM_STEP_NUM_TASKS")) { - *priority = 0; - *module = NULL; - return OPAL_ERROR; + *priority = 0; + *module = NULL; + return OPAL_ERROR; } /* we can be considered, but set our priority by default From b24ec3e3b921fd6dd486b43b3c341ef0c810a43f Mon Sep 17 00:00:00 2001 From: Artem Polyakov Date: Sat, 6 Aug 2016 16:31:19 +0600 Subject: [PATCH 5/5] pmix/s2: fix indentation (only) --- opal/mca/pmix/s2/pmi2_pmap_parser.c | 106 +++---- opal/mca/pmix/s2/pmix_s2.c | 402 +++++++++++++-------------- opal/mca/pmix/s2/pmix_s2_component.c | 44 +-- 3 files changed, 276 insertions(+), 276 deletions(-) diff --git a/opal/mca/pmix/s2/pmi2_pmap_parser.c b/opal/mca/pmix/s2/pmi2_pmap_parser.c index 61d9cee0e03..4af6c187bc3 100644 --- a/opal/mca/pmix/s2/pmi2_pmap_parser.c +++ b/opal/mca/pmix/s2/pmi2_pmap_parser.c @@ -32,14 +32,14 @@ slurm block distro of 4 ranks over 2 nodes: Tuple can be visualized as a rectangle on two dimensional (Hosts, Local Ranks) plane: - ------------------------------------ Hosts -> - | H - | +--------+ - |<- base -->| | - | | | L - | +--------+ - Local Ranks - V + ------------------------------------ Hosts -> + | H + | +--------+ + |<- base -->| | + | | | L + | +--------+ + Local Ranks + V Note that ranks increase by column. Tuple (0,2,3) looks like: 0 3 @@ -59,14 +59,14 @@ static int find_my_node(char *map, int me) p = map; abs_rank = 0; while (NULL != (p = strstr(p+1, ",("))) { - if (3 != sscanf(p, ",(%d,%d,%d)", &base, &H, &L)) { - return -1; - } - if (me >= abs_rank && me < abs_rank + H*L) { - /* found my rectangle, compute node */ - return base + (me - abs_rank)/L; - } - abs_rank += H*L; + if (3 != sscanf(p, ",(%d,%d,%d)", &base, &H, &L)) { + return -1; + } + if (me >= abs_rank && me < abs_rank + H*L) { + /* found my rectangle, compute node */ + return base + (me - abs_rank)/L; + } + abs_rank += H*L; } return -1; } @@ -86,34 +86,34 @@ static int *find_lrs(char *map, int my_node, int *nlrs) max_lr = 16; lrs = malloc(max_lr * sizeof(int)); while (NULL != (p = strstr(p+1, ",("))) { - if (3 != sscanf(p, ",(%d,%d,%d)", &base, &H, &L)) { - free(lrs); - return NULL; - } - if (base <= my_node && my_node < base + H) { - if (*nlrs + L >= max_lr) { - lrs = realloc(lrs, (max_lr + L) * sizeof(int)); - if (NULL == lrs) { - *nlrs = 0; - free(lrs); - return NULL; - } - max_lr += L; - } - /* skip (my_node - base) columns of L elems, - * numbers in my column are local to me - */ - for (i = 0; i < L; i++) { - lrs[*nlrs] = (my_node - base) * L + i + abs_rank; - (*nlrs) ++; - } - } - abs_rank += H*L; + if (3 != sscanf(p, ",(%d,%d,%d)", &base, &H, &L)) { + free(lrs); + return NULL; + } + if (base <= my_node && my_node < base + H) { + if (*nlrs + L >= max_lr) { + lrs = realloc(lrs, (max_lr + L) * sizeof(int)); + if (NULL == lrs) { + *nlrs = 0; + free(lrs); + return NULL; + } + max_lr += L; + } + /* skip (my_node - base) columns of L elems, + * numbers in my column are local to me + */ + for (i = 0; i < L; i++) { + lrs[*nlrs] = (my_node - base) * L + i + abs_rank; + (*nlrs) ++; + } + } + abs_rank += H*L; } if (0 == *nlrs) { - free(lrs); - lrs = 0; + free(lrs); + lrs = 0; } return lrs; } @@ -129,18 +129,18 @@ static int *find_lrs(char *map, int my_node, int *nlrs) * on failure. Array must be freed by the caller. */ int *mca_common_pmi2_parse_pmap(char *pmap, int my_rank, - int *node, int *nlrs) + int *node, int *nlrs) { char *p; p = strstr(pmap, "(vector"); if (NULL == p) { - return NULL; + return NULL; } *node = find_my_node(p, my_rank); if (0 > *node) { - return NULL; + return NULL; } return find_lrs(p, *node, nlrs); @@ -155,7 +155,7 @@ static void dump_lrs(int *lrs, int me, int node, int n) printf("Total %d ranks/node, node %d me %d\n", n, node, me); for (i = 0; i < n; i++) { - printf("%d ", lrs[i]); + printf("%d ", lrs[i]); } printf("\n"); free(lrs); @@ -175,14 +175,14 @@ int main(int argc, char **argv) if (argc == 3) { - me = atoi(argv[1]); - lrs = orte_grpcomm_pmi2_parse_pmap(argv[2], me, &node, &n); - if (NULL == lrs) { - printf("can not parse pmap\n"); - exit(1); - } - dump_lrs(lrs, me, node, n); - exit(0); + me = atoi(argv[1]); + lrs = orte_grpcomm_pmi2_parse_pmap(argv[2], me, &node, &n); + if (NULL == lrs) { + printf("can not parse pmap\n"); + exit(1); + } + dump_lrs(lrs, me, node, n); + exit(0); } /* built in cases */ diff --git a/opal/mca/pmix/s2/pmix_s2.c b/opal/mca/pmix/s2/pmix_s2.c index 0a14b5ec448..ca0f7c59ec2 100644 --- a/opal/mca/pmix/s2/pmix_s2.c +++ b/opal/mca/pmix/s2/pmix_s2.c @@ -41,16 +41,16 @@ static int s2_init(void); static int s2_fini(void); static int s2_initialized(void); static int s2_abort(int flag, const char msg[], - opal_list_t *procs); + opal_list_t *procs); static int s2_commit(void); static int s2_fencenb(opal_list_t *procs, int collect_data, - opal_pmix_op_cbfunc_t cbfunc, void *cbdata); + opal_pmix_op_cbfunc_t cbfunc, void *cbdata); static int s2_fence(opal_list_t *procs, int collect_data); static int s2_put(opal_pmix_scope_t scope, - opal_value_t *kv); + opal_value_t *kv); static int s2_get(const opal_process_name_t *id, - const char *key, opal_list_t *info, - opal_value_t **kv); + const char *key, opal_list_t *info, + opal_value_t **kv); static int s2_publish(opal_list_t *info); static int s2_lookup(opal_list_t *data, opal_list_t *info); static int s2_unpublish(char **keys, opal_list_t *info); @@ -58,7 +58,7 @@ static int s2_spawn(opal_list_t *jobinfo, opal_list_t *apps, opal_jobid_t *jobid static int s2_job_connect(opal_list_t *procs); static int s2_job_disconnect(opal_list_t *procs); static int s2_store_local(const opal_process_name_t *proc, - opal_value_t *val); + opal_value_t *val); static const char *s2_get_nspace(opal_jobid_t jobid); static void s2_register_jobid(opal_jobid_t jobid, const char *nspace); @@ -96,8 +96,8 @@ typedef struct { void *cbdata; } pmi_opcaddy_t; OBJ_CLASS_INSTANCE(pmi_opcaddy_t, - opal_object_t, - NULL, NULL); + opal_object_t, + NULL, NULL); // PMI constant values: static int pmix_kvslen_max = 0; @@ -127,9 +127,9 @@ static bool got_modex_data = false; static char* pmix_error(int pmix_err); #define OPAL_PMI_ERROR(pmi_err, pmi_func) \ do { \ - opal_output(0, "%s [%s:%d:%s]: %s\n", \ - pmi_func, __FILE__, __LINE__, __func__, \ - pmix_error(pmi_err)); \ + opal_output(0, "%s [%s:%d:%s]: %s\n", \ + pmi_func, __FILE__, __LINE__, __func__, \ + pmix_error(pmi_err)); \ } while(0); static int kvs_put(const char key[], const char value[]) @@ -137,8 +137,8 @@ static int kvs_put(const char key[], const char value[]) int rc; rc = PMI2_KVS_Put(key, value); if( PMI2_SUCCESS != rc ){ - OPAL_PMI_ERROR(rc, "PMI2_KVS_Put"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_KVS_Put"); + return OPAL_ERROR; } return OPAL_SUCCESS; } @@ -154,7 +154,7 @@ static int kvs_get(const char key[], char value [], int maxvalue) * case */ if (PMI2_SUCCESS != rc) { - return OPAL_ERROR; + return OPAL_ERROR; } return OPAL_SUCCESS; } @@ -177,7 +177,7 @@ static int s2_init(void) /* if we can't startup PMI, we can't be used */ if ( PMI2_Initialized () ) { - return OPAL_SUCCESS; + return OPAL_SUCCESS; } size = -1; rank = -1; @@ -186,12 +186,12 @@ static int s2_init(void) opal_pmix_base_hash_init(); if (PMI2_SUCCESS != (rc = PMI2_Init(&spawned, &size, &rank, &appnum))) { - opal_show_help("help-pmix-base.txt", "pmix2-init-failed", true, rc); - return OPAL_ERROR; + opal_show_help("help-pmix-base.txt", "pmix2-init-failed", true, rc); + return OPAL_ERROR; } if( size < 0 || rank < 0 ){ - opal_show_help("help-pmix-base.txt", "pmix2-init-returned-bad-values", true); - goto err_exit; + opal_show_help("help-pmix-base.txt", "pmix2-init-returned-bad-values", true); + goto err_exit; } s2_jsize = size; @@ -206,15 +206,15 @@ static int s2_init(void) pmix_kvs_name = (char*)malloc(pmix_kvslen_max); if( pmix_kvs_name == NULL ){ - PMI2_Finalize(); - ret = OPAL_ERR_OUT_OF_RESOURCE; - goto err_exit; + PMI2_Finalize(); + ret = OPAL_ERR_OUT_OF_RESOURCE; + goto err_exit; } rc = PMI2_Job_GetId(pmix_kvs_name, pmix_kvslen_max); if( PMI2_SUCCESS != rc ) { - OPAL_PMI_ERROR(rc, "PMI2_Job_GetId"); - free(pmix_kvs_name); - goto err_exit; + OPAL_PMI_ERROR(rc, "PMI2_Job_GetId"); + free(pmix_kvs_name); + goto err_exit; } /* store our name in the opal_proc_t so that @@ -224,14 +224,14 @@ static int s2_init(void) s2_pname.jobid = strtoul(pmix_kvs_name, &str, 10); s2_pname.jobid = (s2_pname.jobid << 16) & 0xffff0000; if (NULL != str) { - stepid = strtoul(str, NULL, 10); - s2_pname.jobid |= (stepid & 0x0000ffff); + stepid = strtoul(str, NULL, 10); + s2_pname.jobid |= (stepid & 0x0000ffff); } s2_pname.vpid = s2_rank; opal_proc_set_name(&s2_pname); opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s2: assigned tmp name", - OPAL_NAME_PRINT(s2_pname)); + "%s pmix:s2: assigned tmp name", + OPAL_NAME_PRINT(s2_pname)); /* setup wildcard rank*/ wildcard_rank = OPAL_PROC_MY_NAME; @@ -247,9 +247,9 @@ static int s2_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = s2_pname.jobid; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); // frees pmix_kvs_name @@ -259,9 +259,9 @@ static int s2_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = size; if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(rc); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(rc); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); @@ -271,16 +271,16 @@ static int s2_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = appnum; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); rc = PMI2_Info_GetJobAttr("universeSize", buf, 16, &found); if( PMI2_SUCCESS != rc ) { - OPAL_PMI_ERROR(rc, "PMI_Get_universe_size"); - goto err_exit; + OPAL_PMI_ERROR(rc, "PMI_Get_universe_size"); + goto err_exit; } /* save it */ OBJ_CONSTRUCT(&kv, opal_value_t); @@ -288,9 +288,9 @@ static int s2_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = atoi(buf); if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(rc); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(rc); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* push this into the dstore for subsequent fetches */ @@ -299,30 +299,30 @@ static int s2_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = atoi(buf); if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); char *pmapping = (char*)malloc(PMI2_MAX_VALLEN); if( pmapping == NULL ){ - rc = OPAL_ERR_OUT_OF_RESOURCE; - OPAL_ERROR_LOG(rc); - return rc; + rc = OPAL_ERR_OUT_OF_RESOURCE; + OPAL_ERROR_LOG(rc); + return rc; } rc = PMI2_Info_GetJobAttr("PMI_process_mapping", pmapping, PMI2_MAX_VALLEN, &found); if( !found || PMI2_SUCCESS != rc ) { - OPAL_PMI_ERROR(rc,"PMI2_Info_GetJobAttr"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc,"PMI2_Info_GetJobAttr"); + return OPAL_ERROR; } s2_lranks = mca_common_pmi2_parse_pmap(pmapping, s2_pname.vpid, &my_node, &s2_nlranks); if (NULL == s2_lranks) { - rc = OPAL_ERR_OUT_OF_RESOURCE; - OPAL_ERROR_LOG(rc); - return rc; + rc = OPAL_ERR_OUT_OF_RESOURCE; + OPAL_ERROR_LOG(rc); + return rc; } free(pmapping); @@ -333,9 +333,9 @@ static int s2_init(void) kv.type = OPAL_UINT32; kv.data.uint32 = s2_nlranks; if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(rc); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(rc); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); @@ -344,32 +344,32 @@ static int s2_init(void) ldr.vpid = rank; localranks = NULL; if (0 < s2_nlranks && NULL != s2_lranks) { - /* note the local ldr */ - ldr.vpid = s2_lranks[0]; - /* find ourselves */ - ldr.jobid = s2_pname.jobid; - ldr.vpid = s2_pname.vpid; - memset(nmtmp, 0, 64); - for (i=0; i < s2_nlranks; i++) { - (void)snprintf(nmtmp, 64, "%d", s2_lranks[i]); - opal_argv_append_nosize(&localranks, nmtmp); - if (s2_rank == s2_lranks[i]) { - s2_lrank = i; - s2_nrank = i; - } - } - str = opal_argv_join(localranks, ','); - opal_argv_free(localranks); - OBJ_CONSTRUCT(&kv, opal_value_t); - kv.key = strdup(OPAL_PMIX_LOCAL_PEERS); - kv.type = OPAL_STRING; - kv.data.string = str; - if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; - } - OBJ_DESTRUCT(&kv); + /* note the local ldr */ + ldr.vpid = s2_lranks[0]; + /* find ourselves */ + ldr.jobid = s2_pname.jobid; + ldr.vpid = s2_pname.vpid; + memset(nmtmp, 0, 64); + for (i=0; i < s2_nlranks; i++) { + (void)snprintf(nmtmp, 64, "%d", s2_lranks[i]); + opal_argv_append_nosize(&localranks, nmtmp); + if (s2_rank == s2_lranks[i]) { + s2_lrank = i; + s2_nrank = i; + } + } + str = opal_argv_join(localranks, ','); + opal_argv_free(localranks); + OBJ_CONSTRUCT(&kv, opal_value_t); + kv.key = strdup(OPAL_PMIX_LOCAL_PEERS); + kv.type = OPAL_STRING; + kv.data.string = str; + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; + } + OBJ_DESTRUCT(&kv); } /* save the local leader */ @@ -378,9 +378,9 @@ static int s2_init(void) kv.type = OPAL_UINT64; kv.data.uint64 = *(uint64_t*)&ldr; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* save our local rank */ @@ -389,9 +389,9 @@ static int s2_init(void) kv.type = OPAL_UINT16; kv.data.uint16 = s2_lrank; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); /* and our node rank */ @@ -400,9 +400,9 @@ static int s2_init(void) kv.type = OPAL_UINT16; kv.data.uint16 = s2_nrank; if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&OPAL_PROC_MY_NAME, &kv))) { - OPAL_ERROR_LOG(ret); - OBJ_DESTRUCT(&kv); - goto err_exit; + OPAL_ERROR_LOG(ret); + OBJ_DESTRUCT(&kv); + goto err_exit; } OBJ_DESTRUCT(&kv); @@ -410,25 +410,25 @@ static int s2_init(void) ++pmix_init_count; return OPAL_SUCCESS; - err_exit: +err_exit: PMI2_Finalize(); return ret; } static int s2_fini(void) { if (0 == pmix_init_count) { - return OPAL_SUCCESS; + return OPAL_SUCCESS; } if (0 == --pmix_init_count) { - PMI2_Finalize(); + PMI2_Finalize(); } if (NULL != pmix_kvs_name) { - free(pmix_kvs_name); - pmix_kvs_name = NULL; + free(pmix_kvs_name); + pmix_kvs_name = NULL; } if (NULL != s2_lranks) { - free(s2_lranks); + free(s2_lranks); } return OPAL_SUCCESS; } @@ -436,13 +436,13 @@ static int s2_fini(void) { static int s2_initialized(void) { if (0 < pmix_init_count) { - return 1; + return 1; } return 0; } static int s2_abort(int flag, const char msg[], - opal_list_t *procs) + opal_list_t *procs) { PMI2_Abort(flag, msg); return OPAL_SUCCESS; @@ -459,8 +459,8 @@ static int s2_spawn(opal_list_t *jobinfo, opal_list_t *apps, opal_jobid_t *jobid preput_vector_size = opal_list_get_size(preput_keyval_vector); rc = PMI2_Job_Spawn(count, cmds, argcs, argvs, maxprocs, info_keyval_sizes, info_keyval_vector, (int)preput_vector_size, preput_keyval_vector, jobId, jobIdSize, errors); if( PMI2_SUCCESS != rc ) { - OPAL_PMI_ERROR(rc, "PMI2_Job_Spawn"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_Job_Spawn"); + return OPAL_ERROR; }*/ return OPAL_ERR_NOT_IMPLEMENTED; } @@ -473,7 +473,7 @@ static int s2_job_connect(opal_list_t *procs) char *jobid; if (NULL == procs || 1 < opal_list_get_size(procs)) { - return OPAL_ERR_NOT_SUPPORTED; + return OPAL_ERR_NOT_SUPPORTED; } nm = (opal_namelist_t*)opal_list_get_first(procs); (void)asprintf(&jobid, "%s", OPAL_JOBID_PRINT(nm->name.jobid)); @@ -481,9 +481,9 @@ static int s2_job_connect(opal_list_t *procs) /*FIXME should change function prototype to add void* conn */ rc = PMI2_Job_Connect(jobid, &conn); if( PMI2_SUCCESS != rc ){ - OPAL_PMI_ERROR(rc, "PMI2_Job_Connect"); - free(jobid); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_Job_Connect"); + free(jobid); + return OPAL_ERROR; } free(jobid); return OPAL_SUCCESS; @@ -496,50 +496,50 @@ static int s2_job_disconnect(opal_list_t *procs) char *jobid; if (NULL == procs || 1 < opal_list_get_size(procs)) { - return OPAL_ERR_NOT_SUPPORTED; + return OPAL_ERR_NOT_SUPPORTED; } nm = (opal_namelist_t*)opal_list_get_first(procs); (void)asprintf(&jobid, "%s", OPAL_JOBID_PRINT(nm->name.jobid)); rc = PMI2_Job_Disconnect(jobid); if( PMI2_SUCCESS != rc ){ - OPAL_PMI_ERROR(rc, "PMI2_Job_Disconnect"); - free(jobid); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_Job_Disconnect"); + free(jobid); + return OPAL_ERROR; } free(jobid); return OPAL_SUCCESS; } static int s2_put(opal_pmix_scope_t scope, - opal_value_t *kv) + opal_value_t *kv) { int rc; opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s2 put for key %s", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), kv->key); + "%s pmix:s2 put for key %s", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), kv->key); if (OPAL_SUCCESS != (rc = opal_pmix_base_store_encoded (kv->key, (void*)&kv->data, kv->type, &pmix_packed_data, &pmix_packed_data_offset))) { - OPAL_ERROR_LOG(rc); - return rc; + OPAL_ERROR_LOG(rc); + return rc; } if (pmix_packed_data_offset == 0) { - /* nothing to write */ - return OPAL_SUCCESS; + /* nothing to write */ + return OPAL_SUCCESS; } if (((pmix_packed_data_offset/3)*4) + pmix_packed_encoded_data_offset < pmix_vallen_max) { - /* this meta-key is still being filled, - * nothing to put yet - */ - return OPAL_SUCCESS; + /* this meta-key is still being filled, + * nothing to put yet + */ + return OPAL_SUCCESS; } rc = opal_pmix_base_partial_commit_packed (&pmix_packed_data, &pmix_packed_data_offset, - &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, - pmix_vallen_max, &pmix_pack_key, kvs_put); + &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, + pmix_vallen_max, &pmix_pack_key, kvs_put); return rc; } @@ -559,18 +559,18 @@ static void fencenb(int sd, short args, void *cbdata) opal_process_name_t pname; opal_output_verbose(2, opal_pmix_base_framework.framework_output, - "%s pmix:s2 called fence", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); + "%s pmix:s2 called fence", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); /* check if there is partially filled meta key and put them */ opal_pmix_base_commit_packed (&pmix_packed_data, &pmix_packed_data_offset, - &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, - pmix_vallen_max, &pmix_pack_key, kvs_put); + &pmix_packed_encoded_data, &pmix_packed_encoded_data_offset, + pmix_vallen_max, &pmix_pack_key, kvs_put); /* now call fence */ if (PMI2_SUCCESS != PMI2_KVS_Fence()) { - rc = OPAL_ERROR; - goto cleanup; + rc = OPAL_ERROR; + goto cleanup; } /* get the modex data from each local process and set the @@ -578,56 +578,56 @@ static void fencenb(int sd, short args, void *cbdata) * for every process in the job */ pname.jobid = OPAL_PROC_MY_NAME.jobid; if (!got_modex_data) { - got_modex_data = true; - /* we only need to set locality for each local rank as "not found" - * equates to "non-local" */ - for (i=0; i < s2_nlranks; i++) { - pname.vpid = s2_lranks[i]; - rc = opal_pmix_base_cache_keys_locally(&s2_pname, OPAL_PMIX_CPUSET, - &kp, pmix_kvs_name, pmix_vallen_max, kvs_get); - if (OPAL_SUCCESS != rc) { - OPAL_ERROR_LOG(rc); - goto cleanup; - } - if (NULL == kp || NULL == kp->data.string) { - /* if we share a node, but we don't know anything more, then - * mark us as on the node as this is all we know - */ - locality = OPAL_PROC_ON_CLUSTER | OPAL_PROC_ON_CU | OPAL_PROC_ON_NODE; - } else { - /* determine relative location on our node */ - locality = opal_hwloc_base_get_relative_locality(opal_hwloc_topology, - opal_process_info.cpuset, - kp->data.string); - } - if (NULL != kp) { - OBJ_RELEASE(kp); - } - OPAL_OUTPUT_VERBOSE((1, opal_pmix_base_framework.framework_output, - "%s pmix:s2 proc %s locality %s", - OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), - OPAL_NAME_PRINT(s2_pname), - opal_hwloc_base_print_locality(locality))); - - OBJ_CONSTRUCT(&kvn, opal_value_t); - kvn.key = strdup(OPAL_PMIX_LOCALITY); - kvn.type = OPAL_UINT16; - kvn.data.uint16 = locality; - opal_pmix_base_store(&pname, &kvn); - OBJ_DESTRUCT(&kvn); - } - } - - cleanup: + got_modex_data = true; + /* we only need to set locality for each local rank as "not found" + * equates to "non-local" */ + for (i=0; i < s2_nlranks; i++) { + pname.vpid = s2_lranks[i]; + rc = opal_pmix_base_cache_keys_locally(&s2_pname, OPAL_PMIX_CPUSET, + &kp, pmix_kvs_name, pmix_vallen_max, kvs_get); + if (OPAL_SUCCESS != rc) { + OPAL_ERROR_LOG(rc); + goto cleanup; + } + if (NULL == kp || NULL == kp->data.string) { + /* if we share a node, but we don't know anything more, then + * mark us as on the node as this is all we know + */ + locality = OPAL_PROC_ON_CLUSTER | OPAL_PROC_ON_CU | OPAL_PROC_ON_NODE; + } else { + /* determine relative location on our node */ + locality = opal_hwloc_base_get_relative_locality(opal_hwloc_topology, + opal_process_info.cpuset, + kp->data.string); + } + if (NULL != kp) { + OBJ_RELEASE(kp); + } + OPAL_OUTPUT_VERBOSE((1, opal_pmix_base_framework.framework_output, + "%s pmix:s2 proc %s locality %s", + OPAL_NAME_PRINT(OPAL_PROC_MY_NAME), + OPAL_NAME_PRINT(s2_pname), + opal_hwloc_base_print_locality(locality))); + + OBJ_CONSTRUCT(&kvn, opal_value_t); + kvn.key = strdup(OPAL_PMIX_LOCALITY); + kvn.type = OPAL_UINT16; + kvn.data.uint16 = locality; + opal_pmix_base_store(&pname, &kvn); + OBJ_DESTRUCT(&kvn); + } + } + +cleanup: if (NULL != op->opcbfunc) { - op->opcbfunc(rc, op->cbdata); + op->opcbfunc(rc, op->cbdata); } OBJ_RELEASE(op); return; } static int s2_fencenb(opal_list_t *procs, int collect_data, - opal_pmix_op_cbfunc_t cbfunc, void *cbdata) + opal_pmix_op_cbfunc_t cbfunc, void *cbdata) { pmi_opcaddy_t *op; @@ -636,7 +636,7 @@ static int s2_fencenb(opal_list_t *procs, int collect_data, op->opcbfunc = cbfunc; op->cbdata = cbdata; event_assign(&op->ev, opal_pmix_base.evbase, -1, - EV_WRITE, fencenb, op); + EV_WRITE, fencenb, op); event_active(&op->ev, EV_WRITE, 1); return OPAL_SUCCESS; @@ -644,9 +644,9 @@ static int s2_fencenb(opal_list_t *procs, int collect_data, #define S2_WAIT_FOR_COMPLETION(a) \ do { \ - while ((a)) { \ - usleep(10); \ - } \ + while ((a)) { \ + usleep(10); \ + } \ } while (0) struct fence_result { @@ -672,8 +672,8 @@ static int s2_fence(opal_list_t *procs, int collect_data) static int s2_get(const opal_process_name_t *id, - const char *key, opal_list_t *info, - opal_value_t **kv) + const char *key, opal_list_t *info, + opal_value_t **kv) { int rc; rc = opal_pmix_base_cache_keys_locally(id, key, kv, pmix_kvs_name, pmix_vallen_max, kvs_get); @@ -686,8 +686,8 @@ static int s2_publish(opal_list_t *info) int rc; if (PMI2_SUCCESS != (rc = PMI2_Nameserv_publish(service_name, NULL, port))) { - OPAL_PMI_ERROR(rc, "PMI2_Nameserv_publish"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_Nameserv_publish"); + return OPAL_ERROR; } #endif return OPAL_ERR_NOT_IMPLEMENTED; @@ -699,8 +699,8 @@ static int s2_lookup(opal_list_t *data, opal_list_t *info) int rc; if (PMI2_SUCCESS != (rc = PMI2_Nameserv_lookup(service_name, NULL, port, portLen))) { - OPAL_PMI_ERROR(rc, "PMI2_Nameserv_lookup"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_Nameserv_lookup"); + return OPAL_ERROR; } #endif @@ -713,15 +713,15 @@ static int s2_unpublish(char **keys, opal_list_t *info) int rc; if (PMI2_SUCCESS != (rc = PMI2_Nameserv_unpublish(service_name, NULL))) { - OPAL_PMI_ERROR(rc, "PMI2_Nameserv_unpublish"); - return OPAL_ERROR; + OPAL_PMI_ERROR(rc, "PMI2_Nameserv_unpublish"); + return OPAL_ERROR; } #endif return OPAL_ERR_NOT_IMPLEMENTED; } static int s2_store_local(const opal_process_name_t *proc, - opal_value_t *val) + opal_value_t *val) { opal_pmix_base_store(proc, val); @@ -742,22 +742,22 @@ static char* pmix_error(int pmix_err) char * err_msg; switch(pmix_err) { - case PMI2_FAIL: err_msg = "Operation failed"; break; - case PMI2_ERR_INIT: err_msg = "PMI is not initialized"; break; - case PMI2_ERR_NOMEM: err_msg = "Input buffer not large enough"; break; - case PMI2_ERR_INVALID_ARG: err_msg = "Invalid argument"; break; - case PMI2_ERR_INVALID_KEY: err_msg = "Invalid key argument"; break; - case PMI2_ERR_INVALID_KEY_LENGTH: err_msg = "Invalid key length argument"; break; - case PMI2_ERR_INVALID_VAL: err_msg = "Invalid value argument"; break; - case PMI2_ERR_INVALID_VAL_LENGTH: err_msg = "Invalid value length argument"; break; - case PMI2_ERR_INVALID_LENGTH: err_msg = "Invalid length argument"; break; - case PMI2_ERR_INVALID_NUM_ARGS: err_msg = "Invalid number of arguments"; break; - case PMI2_ERR_INVALID_ARGS: err_msg = "Invalid args argument"; break; - case PMI2_ERR_INVALID_NUM_PARSED: err_msg = "Invalid num_parsed length argument"; break; - case PMI2_ERR_INVALID_KEYVALP: err_msg = "Invalid keyvalp argument"; break; - case PMI2_ERR_INVALID_SIZE: err_msg = "Invalid size argument"; break; - case PMI2_SUCCESS: err_msg = "Success"; break; - default: err_msg = "Unkown error"; + case PMI2_FAIL: err_msg = "Operation failed"; break; + case PMI2_ERR_INIT: err_msg = "PMI is not initialized"; break; + case PMI2_ERR_NOMEM: err_msg = "Input buffer not large enough"; break; + case PMI2_ERR_INVALID_ARG: err_msg = "Invalid argument"; break; + case PMI2_ERR_INVALID_KEY: err_msg = "Invalid key argument"; break; + case PMI2_ERR_INVALID_KEY_LENGTH: err_msg = "Invalid key length argument"; break; + case PMI2_ERR_INVALID_VAL: err_msg = "Invalid value argument"; break; + case PMI2_ERR_INVALID_VAL_LENGTH: err_msg = "Invalid value length argument"; break; + case PMI2_ERR_INVALID_LENGTH: err_msg = "Invalid length argument"; break; + case PMI2_ERR_INVALID_NUM_ARGS: err_msg = "Invalid number of arguments"; break; + case PMI2_ERR_INVALID_ARGS: err_msg = "Invalid args argument"; break; + case PMI2_ERR_INVALID_NUM_PARSED: err_msg = "Invalid num_parsed length argument"; break; + case PMI2_ERR_INVALID_KEYVALP: err_msg = "Invalid keyvalp argument"; break; + case PMI2_ERR_INVALID_SIZE: err_msg = "Invalid size argument"; break; + case PMI2_SUCCESS: err_msg = "Success"; break; + default: err_msg = "Unkown error"; } return err_msg; } diff --git a/opal/mca/pmix/s2/pmix_s2_component.c b/opal/mca/pmix/s2/pmix_s2_component.c index 1d60a1bd785..8037a561da8 100644 --- a/opal/mca/pmix/s2/pmix_s2_component.c +++ b/opal/mca/pmix/s2/pmix_s2_component.c @@ -27,7 +27,7 @@ * Public string showing the pmix s2 component version number */ const char *opal_pmix_s2_component_version_string = - "OPAL s2 pmix MCA component version " OPAL_VERSION; + "OPAL s2 pmix MCA component version " OPAL_VERSION; /* * Local function @@ -44,27 +44,27 @@ static int pmix_s2_component_register(void); opal_pmix_base_component_t mca_pmix_s2_component = { /* First, the mca_component_t struct containing meta information - about the component itself */ + about the component itself */ .base_version = { - /* Indicate that we are a pmix v1.1.0 component (which also - implies a specific MCA version) */ + /* Indicate that we are a pmix v1.1.0 component (which also + implies a specific MCA version) */ - OPAL_PMIX_BASE_VERSION_2_0_0, + OPAL_PMIX_BASE_VERSION_2_0_0, - /* Component name and version */ + /* Component name and version */ - .mca_component_name = "s2", - MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, - OPAL_RELEASE_VERSION), + .mca_component_name = "s2", + MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, + OPAL_RELEASE_VERSION), - .mca_query_component = pmix_s2_component_query, - .mca_register_component_params = pmix_s2_component_register, + .mca_query_component = pmix_s2_component_query, + .mca_register_component_params = pmix_s2_component_register, }, /* Next the MCA v1.0.0 component meta data */ .base_data = { - /* The component is checkpoint ready */ - MCA_BASE_METADATA_PARAM_CHECKPOINT + /* The component is checkpoint ready */ + MCA_BASE_METADATA_PARAM_CHECKPOINT }, .priority = 20, }; @@ -76,12 +76,12 @@ static int pmix_s2_component_register(void) mca_base_component_t *component = &(mca_pmix_s2_component.base_version); ret = mca_base_component_var_register(component, "priority", - "Priority of the pmix s2 component (default: 20)", - MCA_BASE_VAR_TYPE_INT, NULL, 0, 0, - OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY, - &mca_pmix_s2_component.priority); + "Priority of the pmix s2 component (default: 20)", + MCA_BASE_VAR_TYPE_INT, NULL, 0, 0, + OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_READONLY, + &mca_pmix_s2_component.priority); if (0 > ret) { - return ret; + return ret; } return OPAL_SUCCESS; @@ -92,10 +92,10 @@ static int pmix_s2_component_query(mca_base_module_t **module, int *priority) /* disqualify ourselves if we are not under slurm, and * if they didn't set mpi=pmix2 */ if (NULL == getenv("SLURM_STEP_NUM_TASKS") || - NULL == getenv("PMI_FD")) { - *priority = 0; - *module = NULL; - return OPAL_ERROR; + NULL == getenv("PMI_FD")) { + *priority = 0; + *module = NULL; + return OPAL_ERROR; } /* we can be considered */