49 #ifndef LIB_MPI_SPLIT_H_
50 #define LIB_MPI_SPLIT_H_
58 if (!flag) MPI_Finalize();
61 inline MPI_Comm
mpi_split_by_app(
int argc=0,
char **argv=NULL,
int threadType=-1,
int *thread_support=NULL )
65 MPI_Initialized(&flag);
67 if(threadType != -1) {
68 MPI_Init_thread( &argc, &argv, threadType, thread_support );
71 MPI_Init( &argc, &argv );
78 MPI_Comm_get_attr(MPI_COMM_WORLD,MPI_APPNUM,&v,&flag);
80 std::cout <<
"MUI Info [lib_mpi_split.h]: Calling mpi_split_by_app() when run as a single application" << std::endl;
82 int appnum = *
static_cast<int*
>(v);
84 MPI_Comm_rank(MPI_COMM_WORLD,&rank);
86 MPI_Comm_split(MPI_COMM_WORLD,appnum,rank,&domain);
void mpi_finalize_after_split()
Definition: lib_mpi_split.h:55
MPI_Comm mpi_split_by_app(int argc=0, char **argv=NULL, int threadType=-1, int *thread_support=NULL)
Definition: lib_mpi_split.h:61