blob: 5b0fcfff5bc6c22141c8ef95a9d9226681910071 [file] [log] [blame]
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
//#include <mpi.h>
#include <slurm/pmi2.h>
#include <sys/time.h>
/*
* To build:
*
* gcc -g -O0 -o testpmixring testpmixring.c -I<slurm_install>/include -Wl,-rpath,<slurm_install>/lib -L<slurm_install>/lib -lpmi2
*
* To run:
*
* srun -n8 -m block ./testpmixring
* srun -n8 -m cyclic ./testpmixring
*/
int
main(int argc, char **argv)
{
int spawned, size, rank, appnum;
struct timeval tv, tv2;
int ring_rank, ring_size;
char val[128];
char buf[128];
char left[128];
char right[128];
{
int x = 0;
while (x) {
fprintf(stderr, "attachme %d\n", getpid());
sleep(2);
}
}
gettimeofday(&tv, NULL);
PMI2_Init(&spawned, &size, &rank, &appnum);
/* test PMIX_Ring */
snprintf(val, sizeof(val), "pmi_rank=%d", rank);
PMIX_Ring(val, &ring_rank, &ring_size, left, right, 128);
printf("pmi_rank:%d ring_rank:%d ring_size:%d left:%s mine:%s right:%s\n",
rank, ring_rank, ring_size, left, val, right);
PMI2_Finalize();
gettimeofday(&tv2, NULL);
printf("%f\n",
((tv2.tv_sec - tv.tv_sec) * 1000.0
+ (tv2.tv_usec - tv.tv_usec) / 1000.0));
return 0;
}