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