From 5162e8e20951b56d76eec18bdd4b446efc87b307 Mon Sep 17 00:00:00 2001
From: 13513011 <13513011@hpc.if.itb.ac.id>
Date: Fri, 19 Feb 2016 15:02:58 +0700
Subject: [PATCH] bucketsort.cpp

---
 .bucketsort.cpp.swp | Bin 0 -> 4096 bytes
 a                   | Bin 0 -> 78188 bytes
 bucketsort.c        |  75 ++++++++++++++++++++++++++++++++++++++++++++
 bucketsort.cpp      |  69 ++++++++++++++++++++++++++++++++++++++++
 laporan.txt         |  31 ++++++++++++++++++
 5 files changed, 175 insertions(+)
 create mode 100644 .bucketsort.cpp.swp
 create mode 100755 a
 create mode 100644 bucketsort.c
 create mode 100644 bucketsort.cpp
 create mode 100644 laporan.txt

diff --git a/.bucketsort.cpp.swp b/.bucketsort.cpp.swp
new file mode 100644
index 0000000000000000000000000000000000000000..b828b4773b3f54e385b27438f22a5793557f5b17
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IF9h7-q+g`Hz{VX1w=z+h->YG`a=Xb6(R2Qmth^)l1+GE0*5
z5`nA~Tx#oJ2I~74q~`es=qHsXXQ!4F=NFaeB^MOn(l#nS8UmvsKxqh+mZa%g@P-;2
w85)3$QdUw_5Ecrh)YMV^qaiRF0;3@?8UmvsFd71*Aut*OqaiRF0z)VS0I6#n!2kdN

literal 0
HcmV?d00001

diff --git a/a b/a
new file mode 100755
index 0000000000000000000000000000000000000000..2975acab392005f434add98478c91027396f60e1
GIT binary patch
literal 78188
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
a<2e*k>;48wduPsAoJP&oEA4g!&i?^>KmN}E

literal 0
HcmV?d00001

diff --git a/bucketsort.c b/bucketsort.c
new file mode 100644
index 0000000..1439976
--- /dev/null
+++ b/bucketsort.c
@@ -0,0 +1,75 @@
+for (int i=0; i<SIZE; i++){
+            if (array[i] < min){
+            	min = array[i];
+            }
+            if (array[i] > max){
+            	max = array[i];
+            }
+	    } 
+
+	    int *num_bucket = malloc (sizeof(int) *num_process);
+	    for(d=1; d < num_process; d++){
+	        num_bucket[d] = 0;
+	    }
+	    if (num_process != 1){
+	    	for(d=0; d < SIZE; d++){
+		        int increaseOf = max/(num_process-1);
+		        int iteration = 1;
+		        int annexed = 0;
+		        for(j=increaseOf; j<=max; j=j+increaseOf){
+		            if(array[d] <= j){
+		                num_bucket[iteration]++;
+		                annexed = 1;
+		                break;
+		            }
+		            iteration++;
+		        }
+		        if (annexed == 0){
+		            num_bucket[iteration-1]++;
+		        }
+		    }
+		    for(i=1; i<num_process; i++){
+		        MPI_Send(&num_bucket[i], 1, MPI_INT, i, 0, MPI_COMM_WORLD);
+		    }
+	        for(d=0; d < SIZE; d++){
+	            int increaseOf = max/(num_process-1);
+	            int iteration = 1;
+	            int message = 0;
+	            for (j = increaseOf; j <= max; j = j + increaseOf) {
+	                if(array[d] <= j) {
+	                    MPI_Send(&array[d], 1, MPI_UNSIGNED, iteration, 1, MPI_COMM_WORLD);
+	                    message = 1;
+	                    break;
+	                }
+	                iteration++;
+	         	}
+	            if (message == 0)
+	                MPI_Send(&array[d], 1, MPI_UNSIGNED, iteration-1, 1, MPI_COMM_WORLD);
+	        }
+
+	        int lastIndex = 0;
+	        int current_index = 0;
+	        for(i=1; i<num_process; i++){
+	            unsigned int * recvArray = malloc(sizeof(unsigned int)*num_bucket[i]);
+	            MPI_Recv(&recvArray[0], num_bucket[i], MPI_UNSIGNED, i, 2, MPI_COMM_WORLD, &stat);
+	            if(lastIndex == 0){
+	                lastIndex = num_bucket[i];
+	            }
+	            for(j=0; j<num_bucket[i]; j++){             
+	            	array[current_index] = recvArray[j];
+	                current_index++;
+	            }
+	       	}
+	    }
+	    
+        endtime   = MPI_Wtime();
+
+        int c;
+        for(c=0; c<SIZE; c++){
+        	printf("%d, ", array[c]);
+        }
+
+        printf("\nIt took %f seconds \n", endtime-starttime);
+        printf("Numbers: %d \n", SIZE);
+        printf("Processes:  %d \n", num_process);
+
diff --git a/bucketsort.cpp b/bucketsort.cpp
new file mode 100644
index 0000000..dd79272
--- /dev/null
+++ b/bucketsort.cpp
@@ -0,0 +1,69 @@
+#include <omp.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <omp.h>
+#include <assert.h>
+#include <vector>
+#include <algorithm>
+using namespace std;
+
+int n, maxn;
+int m[1000100];
+vector<int> init[100];
+vector<int> sorted;
+int d,i,j,t;
+int numberThread;
+
+void bucketSort(){
+    int currentThread = omp_get_thread_num();
+    int buck_size = init[currentThread].size();
+    sort(init[currentThread].begin(), init[currentThread].end());
+}
+
+int main(int argc, char *argv[]){
+        numberThread = strtol(argv[1], NULL, 10);
+        srand(time(NULL));
+        scanf("%d", &n);
+	int width = n / numberThread;
+
+        for (int i = 0; i < n; i++) {
+                m[i] = rand() % n;
+        }
+
+        for (int i = 0; i < n; i++) {
+                if (m[i]!= 0) {
+                        m[i]--;
+                }
+                init[m[i]/width].push_back(m[i]);
+        }
+
+	double start;
+	double end;
+	start = omp_get_wtime();
+	for (int i = 0;i<numberThread;i++){
+		int currBuckSize = init[i].size();
+		for(int j = 0;j<currBuckSize;j++){
+			printf("%d ",init[i][j]);
+		}
+		printf("\n");
+	}
+        #pragma omp parallel num_threads(numberThread) shared(init)
+	bucketSort();
+        #pragma omp barrier
+        for (int i = 0;i<numberThread;i++){
+                int currBuckSize = init[i].size();
+                for (int j = 0;j<currBuckSize;j++){
+                        sorted.push_back(init[i][j]);
+                }
+        }
+	end = omp_get_wtime();
+        for (int i = 0;i<numberThread;i++){
+                int currBuckSize = init[i].size();
+                for(int j = 0;j<currBuckSize;j++){
+                        printf("%d ",init[i][j]);
+                }
+		printf("\n");
+        }
+	printf("Work took %f sec. time.\n", end-start);
+}
diff --git a/laporan.txt b/laporan.txt
new file mode 100644
index 0000000..c7b961f
--- /dev/null
+++ b/laporan.txt
@@ -0,0 +1,31 @@
+ta 50.000
+Thread 1 : 0.066235
+Thread 8 : 0.025905
+Thread 16 : 0.016285
+Thread 32 : 0.027269
+Thread 64 : 0.035011
+Thread 128 : 
+
+Data 100.000
+Thread 1 : 0.068898
+Thread 8 : 0.045690
+Thread 16 : 0.040743
+Thread 32 : 0.042587
+Thread 64 : 0.050379
+Thread 128 : 
+
+Data 200.000
+Thread 1 : 0.250969
+Thread 8 : 0.202466
+Thread 16 : 0.137942
+Thread 32 : 0.119361
+Thread 64 : 0.133145
+Thread 128 : 
+
+Data 400.000
+Thread 1 : 0.582148
+Thread 8 : 0.420642
+Thread 16 : 0.584418
+Thread 32 : 0.390922
+Thread 64 : 0.480704
+Thread 128 : 
-- 
GitLab