Example #1
0
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);

}
Example #2
0
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;
}