void compare_split (double *a, int my_rank, int my_size, int other_rank, int other_size, int num_procs){ MPI_Status status; double *res = (double *)malloc((my_size+other_size)*sizeof(double)); double *b = (double *)malloc(other_size*sizeof(double)); MPI_Sendrecv (&a[0], my_size, MPI_DOUBLE, other_rank,1, &b[0], other_size,MPI_DOUBLE,other_rank, 1, MPI_COMM_WORLD, &status); merge_arrays(a, b, res, my_size, other_size); if (my_rank > other_rank) MPI_Sendrecv (&res[0], other_size, MPI_DOUBLE, other_rank,1, &a[0], other_size,MPI_DOUBLE,other_rank, 1, MPI_COMM_WORLD, &status); }
int invokeFunction(int inputArr[],int arrSize) { int mid_point = size / 2 ; int left[mid_point], right[size - mid_point]; if(size == 1 || size == 0) return; memcpy(left, arr, sizeof(left)); memcpy(right, arr+mid_point, sizeof(right)); merge_sort(left, mid_point); merge_sort(right, size - mid_point); merge_arrays(arr, left, right, size); return iter; }