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