All pastes #182684 Raw Edit

Untitled

public c v1 · immutable
#182684 ·published 2006-09-26 08:04 UTC
rendered paste body
#include <stdio.h>#include "mpi.h"int main( argc, argv )int  argc;char **argv;{    int ierr;    int rank, size;    int a[800];    int b[800];    int c[800];    for (int i=0;i<800;i++)    {     b[i]=i;     c[i]=i+4;    }    int ista,iend;    MPI_Init( &argc, &argv );    MPI_Comm_size( MPI_COMM_WORLD, &size );    MPI_Comm_rank( MPI_COMM_WORLD, &rank );    ista = (800/size)*rank;    iend = ista+(800/size);    int A=0,B=0,C=0;    for (int i=ista;i<=iend;i++)    {     a[i] = b[i] + c[i];     A+=a[i];     B+=b[i];     C+=c[i];    }    printf("%d +%d = %d on processor #%d of processors #%d\n",B,C,A,rank,size);     int V[size];    int R;    MPI_Status status;    int received;    if (rank == 0) {      received = 1;    }    V[rank]=A;    if (rank == 0) {      while (received<size) {      ierr = MPI_Recv(&R,1,MPI_INT,                      MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,                      &status);      V[status.MPI_SOURCE]=R;      received++;      }    } else {      ierr = MPI_Send(&A,1,MPI_INT,0,1,MPI_COMM_WORLD);    }    if (rank == 0 ) {      printf("Master processor #0 has all results as following:\n");      for (int i=0;i<size;i++) {        printf("%d ",V[i]);      }      printf("\n");    }    MPI_Finalize();    return 0;}