1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#include "src/include/pmix_config.h"
#include <assert.h>
#include <stdio.h>
#include <pmix.h>
#include <string.h>
#include "src/include/pmix_globals.h"
int
main(int argc, char *argv[])
{
pmix_value_t *val = NULL;
pmix_status_t rc = PMIX_SUCCESS;
pmix_proc_t global_proc, proc;
PMIX_HIDE_UNUSED_PARAMS(argc, argv);
rc = PMIx_Init(&global_proc, NULL, 0);
assert(PMIX_SUCCESS == rc);
rc = PMIx_Get(&global_proc, PMIX_LOCAL_RANK, NULL, 0, &val);
assert(PMIX_SUCCESS == rc);
int local_rank = val->data.uint16;
PMIX_VALUE_RELEASE(val);
char key_p[32];
pmix_value_t value_p;
sprintf(key_p, "%s-%d", "foo", local_rank);
value_p.type = PMIX_UINT32;
value_p.data.uint32 = local_rank + 10;
rc = PMIx_Put(PMIX_GLOBAL, key_p, &value_p);
assert(PMIX_SUCCESS == rc);
if (1 == global_proc.rank) {
sleep(1);
}
rc = PMIx_Commit();
assert(PMIX_SUCCESS == rc);
PMIX_PROC_CONSTRUCT(&proc);
proc.rank = PMIX_RANK_UNDEF;
strcpy(proc.nspace, global_proc.nspace);
for (int i = 0; i < 2; i++) {
char key_g[32];
pmix_value_t *value_g;
sprintf(key_g, "%s-%d", "foo", i);
rc = PMIx_Get(&proc, key_g, NULL, 0, &value_g);
if (PMIX_SUCCESS != rc) {
fprintf(stderr, "Rank %u: PMIx_Get got %d\n", global_proc.rank, rc);
} else {
fprintf(stderr, "Rank %u: Got %d\n", global_proc.rank, value_g->data.uint32);
}
}
PMIx_Finalize(NULL, 0);
return 0;
}
|