From 0ac47c27ce6eca626bc8204d15bb58e7a8277c42 Mon Sep 17 00:00:00 2001
From: 13513041 <13513041@ld5-01.if.itb.ac.id>
Date: Fri, 12 Feb 2016 16:22:56 +0700
Subject: [PATCH] Bucket sort success

---
 .1.swn       | Bin 0 -> 4096 bytes
 .1.swo       | Bin 0 -> 4096 bytes
 .1.swp       | Bin 0 -> 4096 bytes
 .10.swp      | Bin 0 -> 4096 bytes
 .100.swp     | Bin 0 -> 4096 bytes
 .2.swo       | Bin 0 -> 4096 bytes
 .2.swp       | Bin 0 -> 4096 bytes
 .6.swp       | Bin 0 -> 4096 bytes
 bucket       | Bin 0 -> 13781 bytes
 bucket.c     | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++
 insertion.c  |  35 ++++++++++++++++
 mpi_hostfile |   7 ++++
 12 files changed, 154 insertions(+)
 create mode 100644 .1.swn
 create mode 100644 .1.swo
 create mode 100644 .1.swp
 create mode 100644 .10.swp
 create mode 100644 .100.swp
 create mode 100644 .2.swo
 create mode 100644 .2.swp
 create mode 100644 .6.swp
 create mode 100755 bucket
 create mode 100644 bucket.c
 create mode 100644 insertion.c
 create mode 100644 mpi_hostfile

diff --git a/.1.swn b/.1.swn
new file mode 100644
index 0000000000000000000000000000000000000000..78f154a882f594e6b5312fdcc17c2a2280cb7047
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0Raab85j(WO%06=OblUSxagb|Q(XfiT(Su9I+%g_{spOd
zz5$-`M*0K|M`#~qjfTKz2v8IPyrITMh6W%bl$8_}goQ#WGHq1zXb6mkz-S1JhQMeD
UjE2By2#kinXb6mkz|aZ-02T8NKL7v#

literal 0
HcmV?d00001

diff --git a/.1.swo b/.1.swo
new file mode 100644
index 0000000000000000000000000000000000000000..0d260d303686db7e160298b1f583a535b02dda1c
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0Ri2P3=D?GriR7_CWbIETy#!~sjh($E?I<l9n3&||AN#!
z-vG~eBYlE~BeajQMnhmU1Skpt-cVyBLj#Zz%1Vj~!a|`GnKr6<Gz3ONU^E0qLtr!n
UMnhmU1V%$(Gz3ONU}%K^0Lrfp3IG5A

literal 0
HcmV?d00001

diff --git a/.1.swp b/.1.swp
new file mode 100644
index 0000000000000000000000000000000000000000..8b5e961fa3698199d23820d34adb387a851a0b18
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0RdTN3=D?GriR7_CWbIETy#!~sjh($E?I<l9n3&||AN#!
z-vG~eBYlE~BeajQMnhmU1Skpt-cVyBLj#Zz%1Vj~!a|`GnKr6<Gz3ONU^E0qLtr!n
UMnhmU1V%$(Gz3ONU}%K^01mtj-T(jq

literal 0
HcmV?d00001

diff --git a/.10.swp b/.10.swp
new file mode 100644
index 0000000000000000000000000000000000000000..3c618d39e045be95c3a7f4758e713de879029b62
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0Rd%>3=D?GriR7_CWbIETy#!~sjh($E?I<l9n3&||AN#!
z-vG~eBYi^yg#0LLGz3ONfR-V^8)|F>$#Kd`iVDI)p|rGY)a=m^7!85Z5Eu=C(GVC7
Sfzc2c4S~@R7!83z76Jfdl@28U

literal 0
HcmV?d00001

diff --git a/.100.swp b/.100.swp
new file mode 100644
index 0000000000000000000000000000000000000000..cd25c788f433ee79b9f0c0281da828403c32c42a
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0Rcgd3=D?GriR7_CWbIETy#!~sjh($E?I<l9n3&||AN#!
z-vG~eBYi^y1B8N6)@TTfh5!vifH&0G$Pk?2l$8_}goQ$BXxFIGqaiRF0;3@?8Umvs
UFd71*Aut*OqaiRF0)s6C01u=NF#rGn

literal 0
HcmV?d00001

diff --git a/.2.swo b/.2.swo
new file mode 100644
index 0000000000000000000000000000000000000000..ba13b5fddaea103f9477e07ae9ab7eace8112faa
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0RiUD3=D?GriR7_CWbIETy#!~sjh($E?I<l9n3&||AN#!
z-vG~eBYh&YAq*I0jfTKz2v86LyrITMh6W%5l$8_}goQ#WFl$unXb6mkz-S1JhQMeD
UjE2By2#kinXb6mkz)%YT0Kt+Cxc~qF

literal 0
HcmV?d00001

diff --git a/.2.swp b/.2.swp
new file mode 100644
index 0000000000000000000000000000000000000000..4168df0d7afe19e19496412261bd88ad0f8dc78b
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0Rbl+85j(WO%06=OblUSxagb|Q(XfiT(Su9I+%g_{spOd
zz5$-`M*2i(Ll`j18V!Nb5TGCgcteei3=KdAC@U!{2n&T$VAiPC(GVC7fzc2c4S~@R
U7!85Z5Eu=C(GVC7fuR-x0JNJ9NdN!<

literal 0
HcmV?d00001

diff --git a/.6.swp b/.6.swp
new file mode 100644
index 0000000000000000000000000000000000000000..d209c805f0f1b696712e22aaa579a58877798fc4
GIT binary patch
literal 4096
zcmYc?2=nw+FxN9-00IFJ0RhKM85j(WO%06=OblUSxagb|Q(XfiT(Su9I+%g_{spOd
zz5$-`M*3z5=~32b2#kgRO+$b;)Y!<-0Az)-lA?mJP$*4p8#R111V%$(Gz3ONU^E0q
TLtr!nMnhmU1V%$(aD@N>1P=~A

literal 0
HcmV?d00001

diff --git a/bucket b/bucket
new file mode 100755
index 0000000000000000000000000000000000000000..8db9d832eff22e82836d5eba8f83963d09a66152
GIT binary patch
literal 13781
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
E0JUZe9RL6T

literal 0
HcmV?d00001

diff --git a/bucket.c b/bucket.c
new file mode 100644
index 0000000..3a6197c
--- /dev/null
+++ b/bucket.c
@@ -0,0 +1,112 @@
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <time.h> 
+#include <mpi.h> 
+#include <assert.h> 
+#include <string.h>
+
+void insertion_sort(int* array, int n)
+{
+  int c, d, t;
+  for (c = 1 ; c <= n - 1 && array[c] != -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--;
+    }
+  }
+}
+
+int *create_rand_nums(int num_elements) { 
+        int *rand_nums = (int *)malloc(sizeof(int) * (num_elements+5)); 
+        assert(rand_nums != NULL); 
+        int i; 
+        for (i = 0; i < num_elements; i++) { 
+                rand_nums[i] = (abs((int)rand()) % num_elements); 
+        } 
+        return rand_nums; 
+}
+ 
+
+ 
+int main(int argc, char** argv) { 
+  if (argc != 2) { 
+    fprintf(stderr, "Usage: avg num_elements_per_proc\n"); 
+    exit(1); 
+  }
+
+  int num_elements_per_proc = atoi(argv[1]); 
+  srand(time(NULL)); 
+  
+  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 *rand_nums = NULL; 
+  if (world_rank == 0) { 
+    rand_nums = create_rand_nums(num_elements_per_proc); 
+  }
+
+  time_t start_t;
+  if(world_rank == 0)
+     start_t  = clock(); 
+
+  int * all_bucket;
+  int * offset;
+  int range = (num_elements_per_proc+world_size)/world_size;
+  if(world_rank == 0) {
+          all_bucket = (int *) malloc(sizeof(int) * num_elements_per_proc * (world_size+5));
+          offset = (int *) malloc(sizeof(int) * (world_size+5));
+          memset(all_bucket, -1, sizeof(int)*num_elements_per_proc*world_size);
+          int i;
+          for(i = 0; i < world_size; i++) {
+              offset[i] = i*num_elements_per_proc;
+          }
+          for(i = 0; i < num_elements_per_proc; i++) {
+              int no_group = rand_nums[i]/range;
+              all_bucket[offset[no_group]++] = rand_nums[i];
+          }
+  }
+
+
+
+  int *sub_rand_nums = (int *)malloc(sizeof(int) * 
+num_elements_per_proc); 
+  assert(sub_rand_nums != NULL); 
+
+  MPI_Scatter(all_bucket, num_elements_per_proc, MPI_INT, sub_rand_nums, 
+num_elements_per_proc, MPI_INT, 0, MPI_COMM_WORLD); 
+ 
+  insertion_sort(sub_rand_nums,num_elements_per_proc);
+  MPI_Gather(sub_rand_nums, num_elements_per_proc, MPI_INT, all_bucket, num_elements_per_proc, MPI_INT, 0, 
+MPI_COMM_WORLD); 
+ 
+  if (world_rank == 0) {
+       int i, j;
+       j = 0;
+       for(i = 0; i<num_elements_per_proc*world_size; i++)
+         if(all_bucket[i] != -1)
+	   rand_nums[j++] = all_bucket[i];
+       time_t finish_t = clock();
+       for(i = 0; i<num_elements_per_proc; i++)
+         printf("%d\n", rand_nums[i]);
+       
+       printf("Running time %d data of %d process : %.5f ms\n", num_elements_per_proc, world_size, (double)(finish_t-start_t)*1000/CLOCKS_PER_SEC);
+       free(rand_nums); 
+       free(all_bucket);
+       free(offset);
+  } 
+  free(sub_rand_nums); 
+ 
+  MPI_Barrier(MPI_COMM_WORLD); 
+  MPI_Finalize(); 
+}
+
diff --git a/insertion.c b/insertion.c
new file mode 100644
index 0000000..e9c893f
--- /dev/null
+++ b/insertion.c
@@ -0,0 +1,35 @@
+#include <stdio.h>
+ 
+int main()
+{
+  int n, array[1000], c, d, t;
+ 
+  printf("Enter number of elements\n");
+  scanf("%d", &n);
+ 
+  printf("Enter %d integers\n", n);
+ 
+  for (c = 0; c < n; c++) {
+    scanf("%d", &array[c]);
+  }
+ 
+  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--;
+    }
+  }
+ 
+  printf("Sorted list in ascending order:\n");
+ 
+  for (c = 0; c <= n - 1; c++) {
+    printf("%d\n", array[c]);
+  }
+ 
+  return 0;
+}
diff --git a/mpi_hostfile b/mpi_hostfile
new file mode 100644
index 0000000..d19b4b1
--- /dev/null
+++ b/mpi_hostfile
@@ -0,0 +1,7 @@
+localhost
+167.205.35.25
+167.205.35.26
+167.205.35.28
+167.205.35.29
+167.205.35.30
+167.205.35.31
-- 
GitLab