blob: 0cb8ddafe4d3043abe32e420e1e501a57c082655 [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include <slurm/pmi2.h>
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;
}