/****************************************************************************** * TotalView MPI Example * The number of MPI tasks must be equal to 4. ****************************************************************************/ #include "mpi.h" #include #include #define ARRAYSIZE 160000 #define MASTER 0 double *data; int main (int argc, char *argv[]) { int numtasks, taskid, rc=0, dest, myoffset, offset, i, j, tag1=1, tag2=2, source, chunksize; double mysum, sum, isum; double update(int myoffset, int chunk, int myid); double *Mdata; MPI_Status status; /***** Initializations *****/ MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); if (numtasks != 4) { printf("Quitting. Number of MPI tasks must equal 4.\n"); MPI_Abort(MPI_COMM_WORLD, rc); exit(0); } MPI_Comm_rank(MPI_COMM_WORLD,&taskid); printf ("MPI task %d has started...\n", taskid); chunksize = (ARRAYSIZE / numtasks); /***** Master task only ******/ if (taskid == MASTER){ Mdata=(double*)malloc(sizeof(double)*ARRAYSIZE); /* Initialize the array */ isum = 0.0; for(i=0; i