#include "slice.h" // main represents code shared by all processes: int main(int argc, char** argv) { int rank, size, i, j; int themaster = 0; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&size); if (size != (P*P)+1) {printf("wrong np\n"); exit(1);} // seperate worker from master process: (must be done by all procs) MPI_Group worldgroup, workersgroup; MPI_Comm_group(MPI_COMM_WORLD,&worldgroup); MPI_Group_excl(worldgroup,1,&themaster,&workersgroup); MPI_Comm_create(MPI_COMM_WORLD,workersgroup,&WORKERS); if (rank==0) master(); else worker(); MPI_Finalize(); } // Called by root to record relative ranks of each process in WORKERS. // That is, if a process has rank 2 in MPI_COMM_WORLD and void registerworkers() { int i, y; MPI_Status stat; // needs to know how to contact each proc in WORKERS for(i=0;i
=YDIM) k=YDIM-1;
if (j+U