From b4ab8cfd2eb89f96493b59f3eed4a44e3fee32ba Mon Sep 17 00:00:00 2001
From: 13513063 <13513063@hpc.if.itb.ac.id>
Date: Fri, 19 Feb 2016 15:41:34 +0700
Subject: [PATCH] Program + laporan

---
 laporan.txt      |  78 +++++++++++++++++++++++++++++++++++++++++
 omp_bucketsort   | Bin 0 -> 17058 bytes
 omp_bucketsort.c |  88 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 166 insertions(+)
 create mode 100644 laporan.txt
 create mode 100755 omp_bucketsort
 create mode 100644 omp_bucketsort.c

diff --git a/laporan.txt b/laporan.txt
new file mode 100644
index 0000000..d439a94
--- /dev/null
+++ b/laporan.txt
@@ -0,0 +1,78 @@
+perbandingan waktu kinerja program
+
+1)
+N = 50.000, M = 1
+t = 2240 ms
+
+N = 50.000, M = 8
+t = 580 ms
+
+N = 50.000, M = 16
+t = 450 ms
+
+N = 50.000, M = 32
+t = 460 ms
+
+N = 50.000, M = 64
+t = 780 ms
+
+N = 50.000, M = 128
+t = 140 ms
+
+2)
+N = 100.000, M = 1
+t = 8630 ms
+
+N = 100.000, M = 8
+t = 1440 ms
+
+N = 100.000, M = 16
+t = 1080 ms
+
+N = 100.000, M = 32
+t = 1130 ms
+
+N = 100.000, M = 64
+t = 1190 ms
+
+N = 100.000, M = 128
+t = 360 ms
+
+3)
+N = 200.000, M = 1
+t = 32500 ms
+
+N = 200.000, M = 8
+t = 5160 ms
+
+N = 200.000, M = 16
+t = 3140 ms
+
+N = 200.000, M = 32
+t = 2410 ms
+
+N = 200.000, M = 64
+t = 2330 ms
+
+N = 200.000, M = 128
+t = 840 ms
+
+4)
+N = 400.000, M = 1
+t = 132480 ms
+
+N = 400.000, M = 8
+t = 18430 ms
+
+N = 400.000, M = 16
+t = 10020 ms
+
+N = 400.000, M = 32
+t = 8060 ms
+
+N = 400.000, M = 64
+t = 6720 ms
+
+N = 400.000, M = 128
+t = 3450 ms
+
diff --git a/omp_bucketsort b/omp_bucketsort
new file mode 100755
index 0000000000000000000000000000000000000000..3283b4940a935f5759e9c704190e085f2d24b541
GIT binary patch
literal 17058
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
Q_d|YkA=|20E6&FL8+k(Pr~m)}

literal 0
HcmV?d00001

diff --git a/omp_bucketsort.c b/omp_bucketsort.c
new file mode 100644
index 0000000..307ef2b
--- /dev/null
+++ b/omp_bucketsort.c
@@ -0,0 +1,88 @@
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <string.h>
+#include <time.h> 
+#include <math.h>
+#include <omp.h> 
+#include <assert.h> 
+
+int *create_rand_nums(int num_elements) { 
+  int *rand_nums = (int *)malloc(sizeof(int) * (num_elements)); 
+  assert(rand_nums != NULL); 
+  int i; 
+  for (i = 0; i < num_elements; i++) { 
+          rand_nums[i] = (abs((int)rand()) % num_elements); 
+  } 
+  return rand_nums; 
+}
+
+void insertionSort(int *arr, int indeksAwal, int indeksAkhir){
+	int i,j;
+    int value;
+    for(i=indeksAwal+1;i<=indeksAkhir;i++)
+    {
+        value=arr[i];
+        j=i-1;
+        while(j>=indeksAwal && value<arr[j])
+        {
+            arr[j+1]=arr[j];
+            j=j-1;
+        }
+        arr[j+1]=value;
+    }
+}
+
+int main(int argc, char** argv){
+	if(argc != 3){
+		fprintf(stderr, "Usage: avg num_elements\n");
+		exit(1);
+	}
+	
+	int i;
+	srand(time(NULL));
+	int thread_count = atoi(argv[1]);
+	int num_elements = atoi(argv[2]);
+	
+	int *rand_nums = create_rand_nums(num_elements);
+	time_t start_t;
+	start_t  = clock(); 
+	int *bucket = (int*)malloc(sizeof(int) * num_elements); // bucket utama yang berisi bucket-bucket dibagi setiap elemen
+	int *indeks = (int*)malloc(sizeof(int) * thread_count); // menandakan indeks awal setiap bucket pada bucket utama
+	int range = (num_elements + thread_count) / thread_count;
+	int* jumlahElemenBucket = NULL; // jumlah elemen setiap bucket
+	jumlahElemenBucket = (int *)malloc(sizeof(int) * thread_count);
+	memset(jumlahElemenBucket,0,sizeof(int) * thread_count);
+	for(i = 0; i < num_elements; ++i){
+		jumlahElemenBucket[rand_nums[i]/range]++;
+	}
+	for(i = 0; i < thread_count; ++i){
+		if(i == 0){
+			indeks[i] = 0;
+		} else {
+			indeks[i] = indeks[i-1] + jumlahElemenBucket[i-1];
+		}
+	}
+	memset(jumlahElemenBucket,0,sizeof(int) * thread_count);
+	for(i = 0; i < num_elements; ++i){
+		int indeksBucket = rand_nums[i]/range;
+		bucket[indeks[indeksBucket] + (jumlahElemenBucket[indeksBucket]++)] = rand_nums[i];
+	}
+	#pragma omp parallel for num_threads(thread_count)
+	for(i = 0; i < thread_count; ++i){
+		if(jumlahElemenBucket[i] != 0){
+			insertionSort(bucket,indeks[i],indeks[i]+jumlahElemenBucket[i]-1);
+		}
+	}
+	printf("\n");
+	for(i = 0; i < num_elements; ++i){
+		printf("%d\n",bucket[i]);
+	}
+	time_t finish_t = clock();
+	printf("Waktu eksekusi %d data : %d thread : %.5f ms\n", num_elements, thread_count, (double)(finish_t-start_t)*1000/CLOCKS_PER_SEC);
+
+	free(rand_nums);
+	free(bucket);
+	free(indeks);
+	free(jumlahElemenBucket);
+	return 0;
+}
-- 
GitLab