diff --git a/bucket_sort.c b/bucket_sort.c index 014af8bb8a9d6e8fe88090e545e2d5336f566d55..1c0b4ff947b7f696d0b2e8ac9eb7ed9731f0158c 100644 --- a/bucket_sort.c +++ b/bucket_sort.c @@ -15,21 +15,21 @@ int *create_rand_nums(int num_elements) { } int main(int argc, char** argv) { - if (argc != 2) { - fprintf(stderr, "Usage: avg num_elements\n"); + if (argc != 3) { + fprintf(stderr, "Usage: avg num_elements nuim_thread\n"); } srand(time(NULL)); int world_rank; int thread_count; - + int position=0, order=0; int i, j, k, l, t, rc, max = -RAND_MAX, min = RAND_MAX; int total_elements = atoi(argv[1]); int range; int my_rank; - int thread_count = omp_get_num_threads(); + thread_count = atoi(argv[2]); int inmsg[total_elements]; @@ -48,7 +48,7 @@ int main(int argc, char** argv) { range = (max - min) / thread_count + ((max - min) % thread_count > 0); //time_start = MPI_Wtime(); //bucketing - #pragma omp parallel num_threads(thread_count,position,order) \ shared(*rand_nums) private(bucket,i,j,k,my_rank) + #pragma omp parallel num_threads(thread_count,position,order) shared(rand_nums) private(bucket,i,j,k,my_rank) my_rank = omp_get_thread_num(); for (j = 0; j < total_elements; j++) { if ((rand_nums[j] < my_rank * range + range) && (rand_nums[j] >= my_rank * range)) { @@ -74,7 +74,7 @@ int main(int argc, char** argv) { for (j = 0; j < total_elements; j++) { if (bucket[j] >= 0) { - if (bucket[i][j] < RAND_MAX) { + if (bucket[j] < RAND_MAX) { rand_nums[position] = bucket[j]; position++; } @@ -82,9 +82,13 @@ int main(int argc, char** argv) { } //time_stop = MPI_Wtime() - time_start; - if (rank_0 == 0) { + if (my_rank == 3) { + for(j=0;j<total_elements;j++){ + printf("%d",rand_nums[j]); + } free(rand_nums); - printf("%d processes, %d elements, %.2lf seconds", thread_count, total_elements, time_stop); + + //printf("%d processes, %d elements, %.2lf seconds", thread_count, total_elements, time_stop); } } diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..91b7da3fb8bdd7a99ad1da4ae86fdf1906010917 Binary files /dev/null and b/main differ