#include #include #include int main(int argc, char **argv) { int spawned, size, rank, appnum; int ret; char jobid[50]; int msg = 0; char val[20] = "0\n"; int len = 0; ret = PMI2_Init(&spawned, &size, &rank, &appnum); if (ret != PMI2_SUCCESS) { perror("PMI2_Init failed"); return 1; } PMI2_Job_GetId(jobid, sizeof(jobid)); printf("spawned=%d, size=%d, rank=%d, appnum=%d, jobid=%s\n", spawned, size, rank, appnum, jobid); fflush(stdout); PMI2_KVS_Fence(); /* broadcast msg=42 from proc 0 */ if (rank == 0) { msg = 42; snprintf(val, sizeof(val), "%d\n", msg); PMI2_KVS_Put("msg", val); printf("%d> send %d\n", rank, msg); fflush(stdout); } PMI2_KVS_Fence(); PMI2_KVS_Get(jobid, PMI2_ID_NULL, "msg", val, sizeof(val), &len); msg = atoi(val); printf("%d> got %d\n", rank, msg); fflush(stdout); PMI2_Finalize(); return 0; }