From b5580a849393175d37394cd4e88c7ca1b0cc5850 Mon Sep 17 00:00:00 2001
From: MarcoOrlando <13513038@std.stei.itb.ac.id>
Date: Fri, 19 Feb 2016 14:49:47 +0700
Subject: [PATCH] FINISH

---
 bucketsort_tri   | Bin 0 -> 16843 bytes
 bucketsort_tri.c | 154 +++++++++++++++++++++++++++++++++++++++++++++++
 laporan.txt      |  64 ++++++++++++++++++++
 omp_hello.c      |  23 +++++++
 4 files changed, 241 insertions(+)
 create mode 100755 bucketsort_tri
 create mode 100644 bucketsort_tri.c
 create mode 100644 laporan.txt
 create mode 100644 omp_hello.c

diff --git a/bucketsort_tri b/bucketsort_tri
new file mode 100755
index 0000000000000000000000000000000000000000..afd10b9f16185f8b91e4e9faa0a6f9911f32351f
GIT binary patch
literal 16843
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
E24zNjyZ`_I

literal 0
HcmV?d00001

diff --git a/bucketsort_tri.c b/bucketsort_tri.c
new file mode 100644
index 0000000..449539c
--- /dev/null
+++ b/bucketsort_tri.c
@@ -0,0 +1,154 @@
+ 
+#include <omp.h> 
+#include <stdlib.h>
+#include <time.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct Bucket {
+    int num;
+    int* content;
+    int size;
+} Bucket;
+
+int *intdup(int const * src, size_t len)
+{
+   int * p = malloc(len * sizeof(int));
+   memcpy(p, src, len * sizeof(int));
+   return p;
+}
+
+int *createArray (int num_elements) {
+    int *rand_nums = (int *) malloc(sizeof(int) * num_elements);
+    int i;
+
+    srand(time(NULL));
+
+    for (i = 0; i < num_elements; i++ ) {
+        rand_nums[i] = (rand() % 100);
+       // printf(":%d ", rand_nums[i]);
+    }
+    //printf("\n");
+    return rand_nums;
+}
+
+int searchMax (int *array, int size) {
+    int max = 0;
+    int i = 0;
+    for (i = 0; i < size; i++ ) {
+        if ( array[i] > max  ) {
+            max = array[i];
+        }
+    }
+    return max;
+}
+
+Bucket* createBucket (int* array, int max_num, int array_size, int process) {
+    int total_bucket = process;
+    Bucket *buckets = (Bucket *) malloc(sizeof(Bucket) * total_bucket);
+
+    int content_size = (max_num / total_bucket) + 1;
+
+    int i = 0;
+    for (i = 0; i < total_bucket; i++) {
+        int *temp_bucket = (int *) malloc(sizeof(int) * array_size);
+        int n = 0;
+        int l = 0;
+
+        for (n = 0; n < array_size; n++) {
+            if (( array[n] >= i * content_size ) &&
+                ( array[n] < (i * content_size) + content_size )) {
+                temp_bucket[l] = array[n];
+                ++l;
+            }
+        }
+
+        buckets[i].num = i;
+        buckets[i].size = l;
+        buckets[i].content = intdup(temp_bucket, l);
+        free(temp_bucket);
+    }
+
+    return buckets;
+}
+
+int *insertionSort(int *array,int n){
+    int d,c,t;
+
+    for (c = 1 ; c <= n - 1; c++) {
+        d = c;
+
+        while ( d > 0 && array[d] < array[d-1]) {
+            t          = array[d];
+            array[d]   = array[d-1];
+            array[d-1] = t;
+
+            d--;
+        }
+    }
+
+    return array;
+}
+
+void printBucket (Bucket b) {
+    int i = 0;
+    printf("print: ");
+    for (i = 0; i < b.size; i++) {
+        printf("[%d]", b.content[i]);
+    }
+}
+
+void printArray (int *array, int size) {
+    int i;
+    //printf("Array Size : %d",size );
+    for (i = 0; i < size; i++) {
+        printf("[%d]", array[i]);
+    }
+    //printf("\n");
+}
+
+Bucket *buckets =NULL;
+
+void Hello(int **array,int* size){
+	
+      int world_rank = omp_get_thread_num();
+      int *sorted = insertionSort(buckets[world_rank].content, buckets[world_rank].size);
+      array[world_rank] = sorted;
+      size[world_rank] = buckets[world_rank].size;
+ }
+
+
+int main(int argc, char *argv[]) { 
+	 clock_t start, end;
+	
+	printf("Start");
+	start = clock();
+	
+
+        int thread_count = strtol(argv[1], NULL, 10); 
+        int world_rank = omp_get_thread_num();
+
+        int array_size = atoi(argv[2]);
+        int *array = NULL;
+        array = createArray(array_size);
+
+        buckets = createBucket(array, searchMax(array,array_size), array_size, thread_count);
+        //printBucket(buckets[0]);
+
+        int i = 0;
+
+        int *sorted_all[thread_count];
+        int sorted_size[thread_count];
+ 
+	#pragma omp parallel num_threads(thread_count) 
+	Hello(&(*sorted_all),&sorted_size); 
+
+      // for (i = 0; i < thread_count; i++){
+          // printArray(sorted_all[i], sorted_size[i]);
+       //}
+
+       end = clock();	
+       printf("Ending");
+       printf("Execution time : %f mseconds",(double)(end - start) * 1000.0 / CLOCKS_PER_SEC);
+       return 0; 
+} 
diff --git a/laporan.txt b/laporan.txt
new file mode 100644
index 0000000..607ebed
--- /dev/null
+++ b/laporan.txt
@@ -0,0 +1,64 @@
+Laporan OpenMP
+Tjan Marco Orlando 13513038
+Lie Albert Tri	13513076
+
+
+
+Untuk Nilai N: 50.000
+1
+3560ms
+8
+610ms
+16
+430ms
+32
+370
+64
+430ms
+128
+60ms
+
+
+Untuk Nilai N: 100.000
+1
+14400ms
+8
+2130ms
+16
+1310ms
+32
+890ms
+64
+980ms
+128
+110ms
+
+Untuk Nilai N: 200.000
+1
+57620ms
+8
+7670ms
+16
+4350ms
+32
+2660ms
+64
+1620ms
+128
+190ms
+
+
+Untuk Nilai N: 400.000
+1
+232240ms
+8
+28620ms
+16
+15090ms
+32
+9020ms
+64
+5630ms
+128
+280ms
+
diff --git a/omp_hello.c b/omp_hello.c
new file mode 100644
index 0000000..83228d7
--- /dev/null
+++ b/omp_hello.c
@@ -0,0 +1,23 @@
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <omp.h> 
+ 
+void Hello(void); /* Thread function */ 
+ 
+	int main(int argc, char *argv[]) { 
+	int thread_count = strtol(argv[1], NULL, 10); 
+ 
+#pragma omp parallel num_threads(thread_count) 
+Hello(); 
+ 
+return 0; 
+} 
+ 
+void Hello(void) { 
+	int my_rank = omp_get_thread_num(); 
+	int thread_count = omp_get_num_threads(); 
+ 
+	printf("Hello from thread %d of %d\n", 
+	my_rank, thread_count); 
+} 
+
-- 
GitLab