From e5d0250a7dcbfced3b34794d1491e2a187f88057 Mon Sep 17 00:00:00 2001
From: tamadamanik <tama.damanik@gmail.com>
Date: Fri, 12 Feb 2016 18:24:42 +0700
Subject: [PATCH] sort finish + laporan

---
 Laporan Praktikum 2.docx | Bin 0 -> 5935 bytes
 P_BucketSort2            | Bin 0 -> 13797 bytes
 Parallel_BucketSort2.c   | 150 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 150 insertions(+)
 create mode 100644 Laporan Praktikum 2.docx
 create mode 100755 P_BucketSort2
 create mode 100644 Parallel_BucketSort2.c

diff --git a/Laporan Praktikum 2.docx b/Laporan Praktikum 2.docx
new file mode 100644
index 0000000000000000000000000000000000000000..85ad63d42fcc08b8262fb535f75b43cc9b4a3f69
GIT binary patch
literal 5935
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
O;U6D(GDsr69sLjN4H-}X

literal 0
HcmV?d00001

diff --git a/P_BucketSort2 b/P_BucketSort2
new file mode 100755
index 0000000000000000000000000000000000000000..c41ed56a5807fa8b19c141a75a7db4ace1b5b31d
GIT binary patch
literal 13797
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
IGCuyl0VL-@#{d8T

literal 0
HcmV?d00001

diff --git a/Parallel_BucketSort2.c b/Parallel_BucketSort2.c
new file mode 100644
index 0000000..db1c2a6
--- /dev/null
+++ b/Parallel_BucketSort2.c
@@ -0,0 +1,150 @@
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <time.h> 
+#include <mpi.h> 
+#include <assert.h> 
+
+#define tag_size 1
+#define tag_array 2
+#define main_process 0
+
+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] = (rand() % num_elements); 
+	} 
+	return rand_nums; 
+} 
+
+void print_array(int *array, int count) {
+	int i;
+	for (i=0;i<count;i++) {
+		printf("%d  ",array[i]);
+	}
+	printf("\n");
+}
+ 
+void *make_bucket(int *array,int *ar_result,int *num_res,int num_elements, int num_process,int total_process) {
+	int modr = num_elements % (total_process-1) ;
+	int bagi = num_elements / total_process ;
+	int batas_bawah = (num_process-1)*bagi ;
+	int batas_atas = batas_bawah + bagi - 1 ;
+	if (num_process==total_process-1) batas_atas = num_elements-1 ;
+	
+	int *array_temp=(int *)malloc(sizeof(int) * num_elements); 
+	int i,num=0 ;
+	for (i=0;i<num_elements;i++) {
+		if (array[i]>=batas_bawah && array[i]<=batas_atas) {
+			ar_result[num] = array[i];
+			num++;
+		}
+	}
+	*num_res = num;
+}
+
+int *sort_array(int *array, int num_elements) {
+	int i,j ;
+	int temp_;
+	int *result = NULL ;
+	result = array ;
+	for (i=i;i<num_elements;i++) {
+		j=i;
+		while (j>0 && result[j] < result[j-1]) {
+			temp_ = result[j] ;
+			result[j] = result[j-1];
+			result[j-1 ] = temp_;
+			j--;
+		}
+	}
+	return result;
+}
+
+
+int main(int argc, char** argv) { 
+	int counter,counter2=0,rc ;
+	MPI_Status Stat; 
+	double start,end ;
+	clock_t sc,ec ;
+	if (argc != 2) { 
+		fprintf(stderr, "Usage: avg num_elements_per_proc\n"); 
+		exit(1); 
+	} 
+	
+	int num_element = atoi(argv[1]); 
+	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 *sorted_array = NULL;
+	int *rand_nums = NULL; 
+	if (world_rank == 0) { 
+		rand_nums = create_rand_nums(num_element); 
+		//printf("Array : ") ; 
+		//print_array(rand_nums,num_element);
+	} 
+	int *final_array = (int *)malloc(sizeof(int) * num_element);
+	//sc = clock();
+	start = MPI_Wtime(); 
+	//Pengiriman dari proses utama
+	if (world_rank == main_process) {
+		for (counter = 1;counter<world_size;counter++) {
+			int *send_array =(int *)malloc(sizeof(int) * num_element); 
+			int size_send ;		
+			make_bucket(rand_nums,send_array,&size_send,num_element,counter,world_size);
+			printf("(MAIN) Send size %d and array to proc %d . . . \n",size_send,counter);
+			rc = MPI_Send(&size_send,1,MPI_INT,counter,tag_size,MPI_COMM_WORLD); //send num element
+			//print_array(send_array,size_send);
+			rc = MPI_Send(&send_array[0], size_send, MPI_FLOAT, counter, tag_array, MPI_COMM_WORLD); //send array
+			printf("(MAIN) Send to %d done \n",counter);
+		}
+		for (counter = 1;counter<world_size;counter++) {
+			int size_receive;
+			printf("(MAIN) Receiving size and array from proc %d. \n",counter);
+			MPI_Recv(&size_receive,1,MPI_INT,counter,tag_size,MPI_COMM_WORLD,&Stat);
+			
+			int *receive_array = (int *)malloc(sizeof(int) *size_receive); 
+			MPI_Recv(receive_array,size_receive,MPI_INT,counter,tag_array,MPI_COMM_WORLD,&Stat);
+			printf("(MAIN) Received size %d and array from proc %d. \n",size_receive,counter);
+			int i=0;
+			for (i=0;i<size_receive;i++) {
+				final_array[counter2] = receive_array[i];
+				counter2++;
+			}			
+		}
+		
+	} else if (world_rank != main_process) {
+		int size_receive ;
+		MPI_Recv(&size_receive,1,MPI_INT,0,tag_size,MPI_COMM_WORLD,&Stat);
+		int *receive_array = (int *)malloc(sizeof(int) *size_receive); 
+		printf("(Proc %d) Got size %d, now waiting for array . .  \n",world_rank,size_receive);
+		MPI_Recv(receive_array,size_receive,MPI_INT,0,tag_array,MPI_COMM_WORLD,&Stat);
+		printf("(Proc %d) Got array. Now sorting the array . . \n",world_rank);
+		//print_array(receive_array,size_receive);
+		sorted_array = sort_array(receive_array,size_receive);
+		printf("(Proc %d) Sort finish. Now send it to main process . . \n ",world_rank);
+		//print_array(sorted_array,size_receive);
+		rc = MPI_Send(&size_receive,1,MPI_INT,0,tag_size,MPI_COMM_WORLD); //send num element			
+		rc = MPI_Send(&sorted_array[0], size_receive, MPI_FLOAT, 0, tag_array, MPI_COMM_WORLD); //send array
+		printf("(Proc %d) Send finish \n",world_rank);		
+	}
+	
+	
+	if (world_rank == 0) { 
+			printf("Sorting array finished  \n");
+		//print_array(final_array,num_element);
+		end = MPI_Wtime();
+		//ec = clock();
+		//double cpu_time_used = ((double) (ec - sc)) / CLOCKS_PER_SEC;
+		printf("Time taken with MPI_TIme %.2f  second\n",end-start);
+		free(rand_nums); 
+		free(final_array);
+	} 
+	
+	MPI_Barrier(MPI_COMM_WORLD); 
+	MPI_Finalize(); 
+}  
-- 
GitLab