pmix/s1: fix indentation (only)
Этот коммит содержится в:
родитель
8aa3ef7799
Коммит
2cb923a413
@ -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)));
|
||||
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);
|
||||
}
|
||||
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:
|
||||
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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user