From 18e844356b0ae33cf62256114ee9db6788a0b7b9 Mon Sep 17 00:00:00 2001
From: 13513043 <13513043@ld5-01.if.itb.ac.id>
Date: Fri, 12 Feb 2016 17:41:57 +0700
Subject: [PATCH] Moved from Miftah

---
 a.out        | Bin 0 -> 14536 bytes
 bucket-sort  | Bin 0 -> 13899 bytes
 bucket.c     | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++
 mpi_hostfile |  10 +++
 performance  |   1 +
 5 files changed, 188 insertions(+)
 create mode 100755 a.out
 create mode 100755 bucket-sort
 create mode 100644 bucket.c
 create mode 100644 mpi_hostfile
 create mode 100644 performance

diff --git a/a.out b/a.out
new file mode 100755
index 0000000000000000000000000000000000000000..6ca538a12828e0c0aff855e41c2a5537dd20ea24
GIT binary patch
literal 14536
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
Uo1V{n<(F3&_DgaenB4OJ2O9FhZvX%Q

literal 0
HcmV?d00001

diff --git a/bucket-sort b/bucket-sort
new file mode 100755
index 0000000000000000000000000000000000000000..1d8380a78c46d92a12372eee7333ec7643aa54e0
GIT binary patch
literal 13899
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

literal 0
HcmV?d00001

diff --git a/bucket.c b/bucket.c
new file mode 100644
index 0000000..bdfcbd8
--- /dev/null
+++ b/bucket.c
@@ -0,0 +1,177 @@
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <mpi.h>
+#include <assert.h>
+
+#define ERR_NO_NUM -1;
+#define ERR_NO_MEM -2;
+#define MAX_PROCESS 1000
+
+int get_unique_rand_num(int max) {
+    int i, n;
+    static int numNums = 0;
+    static int *numArr = NULL;
+
+    if (max >= 0) {
+        if (numArr != NULL)
+            free(numArr);
+        if((numArr = malloc (sizeof(int) * max)) == NULL)
+            return ERR_NO_MEM;
+        for (i = 0; i < max; i++)
+            numArr[i] = i;
+        numNums = max;
+    }
+
+    if (max == 0)
+        return ERR_NO_NUM;
+
+    n = (rand() % numNums);
+    i = numArr[n];
+
+    numArr[n] = numArr[numNums - 1];
+    numNums--;
+    if (numNums == 0) {
+        free (numArr);
+        numArr = 0;
+    }
+
+    return i;
+}
+
+int *create_rand_nums(int num_elements) {
+    int *rand_nums = (int *)malloc(sizeof(int) * num_elements);
+    assert(rand_nums != NULL);
+
+    int first = get_unique_rand_num(num_elements);
+    rand_nums[0] = first;
+
+    for (int i = 1; i < num_elements; i++) {
+        rand_nums[i] = get_unique_rand_num(-1);
+    }
+
+    return rand_nums;
+}
+
+
+
+int main(int argc, char** argv) {
+    if (argc != 2) {
+        fprintf(stderr, "Usage: avg num_elements_per_proc\n");
+        exit(1);
+    }
+    int NbElmts = atoi(argv[1]); //ukuran array utama
+
+    double total_times = 0.0;
+
+    MPI_Init(NULL, NULL);
+
+    int world_rank;
+    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
+    int world_size;
+    MPI_Comm_size(MPI_COMM_WORLD, &world_size);
+    int bucket_size = NbElmts / world_size;
+
+    //ARRAY UTAMA
+    int *rand_nums = NULL;
+    int *rand_all = NULL;
+
+
+    if (world_rank == 0) {
+        srand(time(NULL));
+        rand_nums = create_rand_nums(NbElmts);
+
+        int sub_rand_nums_all[world_size][bucket_size];
+
+        //used to save last sub_rand_nums_all[] index
+        int last_idx_all[world_size];
+
+        for(int i=0; i<world_size; i++) {
+            last_idx_all[i] = 0;
+        }
+
+        //mengelompokkan rand_nums pada sub_rand_nums_all[][]
+        for(int i = 0; i < NbElmts; i++) {
+            for (int j = 0; j < world_size; j++) {
+                if (rand_nums[i] < (j + 1) * bucket_size) {
+                    sub_rand_nums_all[j][last_idx_all[j]] = rand_nums[i];
+                    last_idx_all[j] ++;
+                    break;
+                }
+            }
+        }
+
+        rand_all = malloc(NbElmts * sizeof(int));
+        for(int i=0;i<world_size;i++) {
+            memcpy(rand_all + (i * bucket_size), &sub_rand_nums_all[i], sizeof(int) * bucket_size);
+        }
+    }
+
+    int *sub_rand_nums = malloc(sizeof(int) * bucket_size);
+
+    double total_time = 0.0;
+
+    MPI_Barrier(MPI_COMM_WORLD);
+
+    /* Start timer */
+    total_time -= MPI_Wtime();
+    MPI_Scatter(rand_all, bucket_size, MPI_INT, sub_rand_nums,
+            bucket_size, MPI_INT, 0, MPI_COMM_WORLD);
+
+
+    int swap;
+
+    // Buble Sort
+    for (int c = 0 ; c < ( bucket_size - 1 ); c++)
+    {
+        for (int d = 0 ; d < bucket_size - c - 1; d++)
+        {
+            if (sub_rand_nums[d] > sub_rand_nums[d+1]) /* For decreasing order use < */
+            {
+                swap = sub_rand_nums[d];
+                sub_rand_nums[d]   = sub_rand_nums[d+1];
+                sub_rand_nums[d+1] = swap;
+            }
+        }
+    }
+
+    total_time += MPI_Wtime();
+    total_times += total_time;
+    /* End timer */
+
+    int *all_new = NULL;
+
+    if (world_rank == 0){
+        all_new = malloc(sizeof(int) * NbElmts);
+    }
+    MPI_Gather(sub_rand_nums, bucket_size, MPI_INT, all_new, bucket_size, MPI_INT, 0, MPI_COMM_WORLD);
+
+    if (world_rank == 0) {
+        assert(all_new != NULL);
+        printf("Old Array : \n");
+        for(int i=0;i<NbElmts;i++) {
+            printf("%d, ",rand_nums[i]);
+        }
+
+        printf("\n\n");
+        printf("Sorted Array : \n");
+        for(int i=0;i<NbElmts;i++) {
+            printf("%d, ",all_new[i]);
+        }
+        printf("\n\n");
+    }
+
+    MPI_Barrier(MPI_COMM_WORLD);
+
+    if (world_rank == 0) {
+        free(all_new);
+        free(rand_nums);
+    }
+
+    free(sub_rand_nums);
+
+
+    MPI_Finalize();
+    return 0;
+}
diff --git a/mpi_hostfile b/mpi_hostfile
new file mode 100644
index 0000000..7fda33e
--- /dev/null
+++ b/mpi_hostfile
@@ -0,0 +1,10 @@
+#daftar host 
+localhost 
+167.205.35.25 
+167.205.35.28 
+#167.205.35.29 
+#167.205.35.30 
+#167.205.35.31 
+#167.205.35.32 
+#167.205.35.33 
+#167.205.35.34 
diff --git a/performance b/performance
new file mode 100644
index 0000000..b81adfd
--- /dev/null
+++ b/performance
@@ -0,0 +1 @@
+0 = 0.060081 ms
-- 
GitLab