int main(int argc, char* argv[]){ int n; int m; double *value=NULL; int *colind=NULL; int *rbegin=NULL; double *answer=NULL; double *b=NULL; int nproc,rank,namelen; char processor_name[MPI_MAX_PROCESSOR_NAME]; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&nproc); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Get_processor_name(processor_name,&namelen); printf("Process %d on %s out of %d\n",rank, processor_name, nproc); fflush(stdout); if (rank==MPI_RANK_ROOT){ readFile(argv[1],&n,&value,&colind,&rbegin,&b); scatterData(&n,&m,&value,&colind,&rbegin,&b,rank,nproc); } else{ scatterData(&n,&m,&value,&colind,&rbegin,&b,rank,nproc); } MPI_Barrier(MPI_COMM_WORLD); double tv1,tv2; tv1=MPI_Wtime(); answer=cg(n,value,colind,rbegin,b,rank,nproc); tv2=MPI_Wtime(); if (rank==MPI_RANK_ROOT){ printf("Process %d takes %.10f seconds\n",rank,tv2-tv1); } if (value!=NULL) {free(value);} if (colind!=NULL) {free(colind);} if (rbegin!=NULL) {free(rbegin);} if (b!=NULL) {free(b);} if (rank==MPI_RANK_ROOT) { writeFile(n,answer); } if (answer!=NULL) {free(answer);} MPI_Finalize(); return 1; }
int main (int argc, char* argv[]) { int rank, size; int *arr; int i; /* for (i=0;i<N;i++) arr[i]=N-i; */ MPI_Init (&argc, &argv); /* starts MPI */ MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */ MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */ printf( "Hello world from process %d of %d\n", rank, size ); scatterData(arr,N,rank,size); MPI_Finalize(); return 0; }