diff --git a/bucket b/bucket deleted file mode 100755 index 05d8d887a10d32713c84e305652d2c1941f0bfa8..0000000000000000000000000000000000000000 Binary files a/bucket and /dev/null differ diff --git a/result/Laporan.jpg b/result/Laporan.jpg new file mode 100644 index 0000000000000000000000000000000000000000..199e211a27bf60b8629caa2a59b4ef9f45a98f20 Binary files /dev/null and b/result/Laporan.jpg differ diff --git a/result/Makefile b/result/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..1eaf36dd25a72a4b644bd385519411d40a759e0e --- /dev/null +++ b/result/Makefile @@ -0,0 +1,2 @@ +all: + gcc --std=gnu99 bucket.c -o bucket -fopenmp diff --git a/result/bucket b/result/bucket new file mode 100755 index 0000000000000000000000000000000000000000..8fb51e471dc2e54918ea742eeb1030cae54a8022 Binary files /dev/null and b/result/bucket differ diff --git a/bucket.c b/result/bucket.c similarity index 88% rename from bucket.c rename to result/bucket.c index 7d2e6d92e8462cd09db095d755741805914ce96d..30b66cf6de4c2838a98a779dc1f090891306f29f 100644 --- a/bucket.c +++ b/result/bucket.c @@ -123,21 +123,21 @@ int main(int argc, char** argv) { } } - /* for (int i = 0; i < num_thread; i++) { */ - /* printf("%d : ", i); */ - /* for (int j = 0; j < bucket_sizes[i]; j++) { */ - /* printf("%d, ", all_data[i][j]); */ - /* } */ - /* printf("\n"); */ - /* } */ - /* Sroted array */ - int *sorted_array = malloc(sizeof(int) * NbElmts - 10); + int *sorted_array = malloc(sizeof(int) * NbElmts); + - #pragma omp parallel num_threads(num_thread), shared(sorted_array) + double delta; + +#pragma omp parallel num_threads(num_thread), shared(sorted_array) { int my_num_thread = omp_get_thread_num(); int start_index = 0; + + struct timespec start, end; + clock_gettime(CLOCK_MONOTONIC, &start); + + for (int i = 0; i < my_num_thread ; i++) { start_index += bucket_sizes[i]; } @@ -163,11 +163,10 @@ int main(int argc, char** argv) { } } - printf("Sorted for thread %d : \n", my_num_thread); - for (int i = 0; i < my_bucket_size; i++) { - printf("%d ", data[i]); - } - printf("\n"); + clock_gettime(CLOCK_MONOTONIC, &end); + + delta = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec)/1.e9; + memcpy(sorted_array + start_index, data, sizeof(int) * my_bucket_size); } @@ -178,5 +177,13 @@ int main(int argc, char** argv) { } printf("\n"); + printf("Performance : %.3lf s\n", delta); + + free(rand_nums); + free(sorted_array); + for (int i = 0; i < num_thread; i++) { + free(all_data[i]); + } + return 0; }