#include #include #include #include "mpi.h" #define VERBOSE 0 int get_io_clone(){ int *iop, iorank, flag; MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_IO, &iop, &flag); if(!flag){ if(VERBOSE)fprintf(stderr, "MPI_Attr_get failed, exiting\n"); return -1; } if(*iop == MPI_PROC_NULL){ if(VERBOSE)fprintf(stderr, "No one can do IO!\n"); return -1; } if(*iop == MPI_ANY_SOURCE){ if(VERBOSE)fprintf(stderr, "Anyone can do IO!\n"); return 0; } MPI_Allreduce(iop, &iorank, 1, MPI_INT, MPI_MIN, MPI_COMM_WORLD); return iorank; }