#include #include ; using std::string; int main(int argc, char *argv[]) { int myrank; if (MPI_Init(&argc,&argv)!=MPI_SUCCESS) { printf("MPI_Init failed"); } MPI_Comm_rank(MPI_COMM_WORLD, &myrank); int world_size, universe_size, *universe_sizep, flag; MPI_Comm_size(MPI_COMM_WORLD, &world_size); printf("world_size %d\n",world_size); MPI_Attr_get(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &universe_sizep, &flag); if (!flag) { printf("This MPI does not support UNIVERSE_SIZE. How many processes total?"); scanf("%d", &universe_size); } else universe_size = *universe_sizep; printf("universe size %d\n",universe_size); char* hiargv[1]; char* m0=" "; hiargv[0]=m0; MPI_Comm childComm; int spawnerror; printf("try to spawn\n"); MPI_Comm_spawn("./hi",hiargv, universe_size-1, MPI_INFO_NULL, myrank, MPI_COMM_SELF, &childComm, &spawnerror); printf("after spawn\n"); MPI_Finalize(); return 0; }