/* Parallel Algorithms (cs521) Assignment 1 * Author: Anirban Sinha, anirbans@cs.ubc.ca */ #include "mpi.h" #include #include static void sorting_list(int); int compfunc(int *i, int *j); static void initialize(int); #define WORKTAG 1 #define DIETAG 2 int main(int argc, char** argv) { int myrank, n=10; /* number of elements to sort */ MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if(myrank==0) { initialize(n); } else { sorting_list(n/2); } MPI_Finalize(); return 0; } static void initialize(int n) { int i; int j; int k; int *sorted_array; int *buf1; int *buf2; int ntasks; MPI_Status status; sorted_array=(int*) malloc(n*sizeof(int)); buf1=(int*) malloc((n/2)*sizeof(int)); buf2=(int*) malloc((n/2)*sizeof(int)); MPI_Comm_size(MPI_COMM_WORLD, &ntasks); for(i=0;i=n/2) { *(sorted_array+i)=*(buf2+k); k++; continue; } if (k>=n/2) { *(sorted_array+i)=*(buf1+j); j++; continue; } if(*(buf1+j) < *(buf2+k)) { *(sorted_array+i)=*(buf1+j); j++; } else { *(sorted_array+i)=*(buf2+k); k++; } } /* Print Results */ printf(":::Final Sorted results:\n"); for(i=0;i