#include #include "mpi.h" #include #include #include #include #include #include #define SLAVE "mpi_slave" int main(int argc, char* argv[]){ int nchild,my_rank; int *errcodes; MPI_Comm intercomm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); if((argc < 2) || ((nchild = atoi(argv[1])) <= 0)){ if(my_rank == 0){ fprintf(stderr, "Usage: %s %d\n", argv[0], argc); MPI_Finalize(); exit(0); } } errcodes = (int*)calloc(sizeof(int),nchild); if(MPI_Comm_spawn(SLAVE, argv, nchild, MPI_INFO_NULL, my_rank, MPI_COMM_WORLD, &intercomm, errcodes) != MPI_SUCCESS) fprintf(stderr, "Spawn failed!\n"); else fprintf(stderr, "Spawn of %d children successful\n",nchild); MPI_Finalize(); exit(0); }