From c64746fc6aae2793e58f72bd5896a469149d2d08 Mon Sep 17 00:00:00 2001 From: Aufar Gilbran <aufargilbran@gmail.com> Date: Fri, 19 Feb 2016 11:10:06 +0700 Subject: [PATCH] implement bucket sort with omp --- 100k_1.txt | 2 + 100k_128.txt | 2 + 100k_16.txt | 2 + 100k_32.txt | 2 + 100k_64.txt | 2 + 100k_8.txt | 2 + 200k_1.txt | 2 + 200k_128.txt | 2 + 200k_16.txt | 2 + 200k_32.txt | 2 + 200k_64.txt | 2 + 200k_8.txt | 2 + 400k_1.txt | 2 + 400k_128.txt | 2 + 400k_16.txt | 2 + 400k_32.txt | 2 + 400k_64.txt | 2 + 400k_8.txt | 2 + 50k_1.txt | 2 + 50k_128.txt | 2 + 50k_16.txt | 2 + 50k_32.txt | 2 + 50k_64.txt | 2 + 50k_8.txt | 2 + omp_bucket | Bin 0 -> 15488 bytes omp_bucket.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++ out.txt | 0 27 files changed, 152 insertions(+) create mode 100644 100k_1.txt create mode 100644 100k_128.txt create mode 100644 100k_16.txt create mode 100644 100k_32.txt create mode 100644 100k_64.txt create mode 100644 100k_8.txt create mode 100644 200k_1.txt create mode 100644 200k_128.txt create mode 100644 200k_16.txt create mode 100644 200k_32.txt create mode 100644 200k_64.txt create mode 100644 200k_8.txt create mode 100644 400k_1.txt create mode 100644 400k_128.txt create mode 100644 400k_16.txt create mode 100644 400k_32.txt create mode 100644 400k_64.txt create mode 100644 400k_8.txt create mode 100644 50k_1.txt create mode 100644 50k_128.txt create mode 100644 50k_16.txt create mode 100644 50k_32.txt create mode 100644 50k_64.txt create mode 100644 50k_8.txt create mode 100755 omp_bucket create mode 100644 omp_bucket.c create mode 100644 out.txt diff --git a/100k_1.txt b/100k_1.txt new file mode 100644 index 0000000..ae17c5a --- /dev/null +++ b/100k_1.txt @@ -0,0 +1,2 @@ +1 +Program berjalan selama: 36.305078 detik diff --git a/100k_128.txt b/100k_128.txt new file mode 100644 index 0000000..2357723 --- /dev/null +++ b/100k_128.txt @@ -0,0 +1,2 @@ +128 +Program berjalan selama: 0.040036 detik diff --git a/100k_16.txt b/100k_16.txt new file mode 100644 index 0000000..7afb2a9 --- /dev/null +++ b/100k_16.txt @@ -0,0 +1,2 @@ +16 +Program berjalan selama: 0.711111 detik diff --git a/100k_32.txt b/100k_32.txt new file mode 100644 index 0000000..d8cba89 --- /dev/null +++ b/100k_32.txt @@ -0,0 +1,2 @@ +32 +Program berjalan selama: 0.317029 detik diff --git a/100k_64.txt b/100k_64.txt new file mode 100644 index 0000000..1c796b3 --- /dev/null +++ b/100k_64.txt @@ -0,0 +1,2 @@ +64 +Program berjalan selama: 0.145469 detik diff --git a/100k_8.txt b/100k_8.txt new file mode 100644 index 0000000..304716f --- /dev/null +++ b/100k_8.txt @@ -0,0 +1,2 @@ +8 +Program berjalan selama: 2.554976 detik diff --git a/200k_1.txt b/200k_1.txt new file mode 100644 index 0000000..2d55d4f --- /dev/null +++ b/200k_1.txt @@ -0,0 +1,2 @@ +1 +Program berjalan selama: 153.797887 detik diff --git a/200k_128.txt b/200k_128.txt new file mode 100644 index 0000000..7813671 --- /dev/null +++ b/200k_128.txt @@ -0,0 +1,2 @@ +128 +Program berjalan selama: 0.226761 detik diff --git a/200k_16.txt b/200k_16.txt new file mode 100644 index 0000000..c09dee2 --- /dev/null +++ b/200k_16.txt @@ -0,0 +1,2 @@ +16 +Program berjalan selama: 3.273830 detik diff --git a/200k_32.txt b/200k_32.txt new file mode 100644 index 0000000..8df671d --- /dev/null +++ b/200k_32.txt @@ -0,0 +1,2 @@ +32 +Program berjalan selama: 0.864381 detik diff --git a/200k_64.txt b/200k_64.txt new file mode 100644 index 0000000..4cc16bf --- /dev/null +++ b/200k_64.txt @@ -0,0 +1,2 @@ +64 +Program berjalan selama: 0.314616 detik diff --git a/200k_8.txt b/200k_8.txt new file mode 100644 index 0000000..d7de60c --- /dev/null +++ b/200k_8.txt @@ -0,0 +1,2 @@ +8 +Program berjalan selama: 8.510434 detik diff --git a/400k_1.txt b/400k_1.txt new file mode 100644 index 0000000..7a64e5b --- /dev/null +++ b/400k_1.txt @@ -0,0 +1,2 @@ +1 +Program berjalan selama: 585.409667 detik diff --git a/400k_128.txt b/400k_128.txt new file mode 100644 index 0000000..72ceee7 --- /dev/null +++ b/400k_128.txt @@ -0,0 +1,2 @@ +128 +Program berjalan selama: 0.421921 detik diff --git a/400k_16.txt b/400k_16.txt new file mode 100644 index 0000000..9df0a76 --- /dev/null +++ b/400k_16.txt @@ -0,0 +1,2 @@ +16 +Program berjalan selama: 11.473965 detik diff --git a/400k_32.txt b/400k_32.txt new file mode 100644 index 0000000..4f5c8ba --- /dev/null +++ b/400k_32.txt @@ -0,0 +1,2 @@ +32 +Program berjalan selama: 3.016893 detik diff --git a/400k_64.txt b/400k_64.txt new file mode 100644 index 0000000..002473f --- /dev/null +++ b/400k_64.txt @@ -0,0 +1,2 @@ +64 +Program berjalan selama: 1.123938 detik diff --git a/400k_8.txt b/400k_8.txt new file mode 100644 index 0000000..cec87e0 --- /dev/null +++ b/400k_8.txt @@ -0,0 +1,2 @@ +8 +Program berjalan selama: 27.223174 detik diff --git a/50k_1.txt b/50k_1.txt new file mode 100644 index 0000000..1d89f1d --- /dev/null +++ b/50k_1.txt @@ -0,0 +1,2 @@ +1 +Program berjalan selama: 9.709172 detik diff --git a/50k_128.txt b/50k_128.txt new file mode 100644 index 0000000..ef53339 --- /dev/null +++ b/50k_128.txt @@ -0,0 +1,2 @@ +128 +Program berjalan selama: 0.015114 detik diff --git a/50k_16.txt b/50k_16.txt new file mode 100644 index 0000000..4a78c39 --- /dev/null +++ b/50k_16.txt @@ -0,0 +1,2 @@ +16 +Program berjalan selama: 0.200435 detik diff --git a/50k_32.txt b/50k_32.txt new file mode 100644 index 0000000..3e91554 --- /dev/null +++ b/50k_32.txt @@ -0,0 +1,2 @@ +32 +Program berjalan selama: 0.094263 detik diff --git a/50k_64.txt b/50k_64.txt new file mode 100644 index 0000000..76bfdb5 --- /dev/null +++ b/50k_64.txt @@ -0,0 +1,2 @@ +64 +Program berjalan selama: 0.065497 detik diff --git a/50k_8.txt b/50k_8.txt new file mode 100644 index 0000000..db51c05 --- /dev/null +++ b/50k_8.txt @@ -0,0 +1,2 @@ +8 +Program berjalan selama: 0.512097 detik diff --git a/omp_bucket b/omp_bucket new file mode 100755 index 0000000000000000000000000000000000000000..bdbb6bb31688df265fd09efa8b44c0baca813131 GIT binary patch literal 15488 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 WoNxMIh(bu;)bZ}6&CqbJ_5T8+x$7$c literal 0 HcmV?d00001 diff --git a/omp_bucket.c b/omp_bucket.c new file mode 100644 index 0000000..3b26ed3 --- /dev/null +++ b/omp_bucket.c @@ -0,0 +1,104 @@ +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <omp.h> + +int *arr_gen(int size) { + int *arr = malloc(size * sizeof(int)); + for (int i = 0; i < size; ++i) { + arr[i] = rand() % (size + 1); + } + return arr; +} +int main(int argc, char **argv) { + srand(time(NULL)); + int arr_size; + if (argc == 3) { + arr_size = atoi(argv[1]); + } + else { + printf("Harus ada argumen jumlah array"); + } + + int num_threads = atoi(argv[2]); + printf("%d\n", num_threads); + + int *array = arr_gen(arr_size); + +#ifdef DEBUG + printf("Original Array:\n"); + for (int i = 0; i < arr_size; ++i) { + if (i) printf(" "); + printf("%d", array[i]); + } + printf("\n"); +#endif + + int max_val = arr_size; + int range = max_val/num_threads+1; + int **bucket = malloc(num_threads * sizeof(int*)); + + struct timespec start_time, end_time; + clock_gettime(CLOCK_MONOTONIC, &start_time); + + int *q = malloc(num_threads * sizeof(int)); + int *head = malloc(num_threads * sizeof(int)); + int i; + for (i = 0; i < num_threads; ++i) { + q[i] = 0; + head[i] = 0; + } + for (i = 0; i < arr_size; ++i) { + int index = array[i] / range; + q[index]++; + } + for (i = 0; i < num_threads; ++i) { + bucket[i] = malloc(q[i] * sizeof(int)); + } + for (i = 0; i < arr_size; ++i) { + int index = array[i] / range; + bucket[index][head[index]] = array[i]; + head[index]++; + } + + int thread_rank = omp_get_thread_num(); +#pragma omp parallel num_threads(num_threads) + { + int i, j; + int n = q[thread_rank]; + int *local_bucket = bucket[thread_rank]; + for (i = 0; i < n; ++i) { + for (j = i+1; j < n; ++j) { + if (local_bucket[i] > local_bucket[j]) { + int c = local_bucket[j]; + local_bucket[j] = local_bucket[i]; + local_bucket[i] = c; + } + } + } + } + + int j; + int p = 0; + for (i = 0; i < num_threads; ++i) { + for (j = 0; j < q[i]; ++j) { + array[p++] = bucket[i][j]; + } + } + + clock_gettime(CLOCK_MONOTONIC, &end_time); + +#ifdef DEBUG + printf("Hasil sorting:\n"); + for (i = 0; i < arr_size; ++i) { + if (i) printf(" "); + printf("%d", array[i]); + } + printf("\n"); +#endif + + double diff = (end_time.tv_sec - start_time.tv_sec) + (double)(end_time.tv_nsec - start_time.tv_nsec) / 1000000000.0; + printf("Program berjalan selama: %lf detik\n", diff); + + return 0; +} diff --git a/out.txt b/out.txt new file mode 100644 index 0000000..e69de29 -- GitLab