From fae46c7af44e1f90b887d1ce006da87acb6341e9 Mon Sep 17 00:00:00 2001 From: 13513044 <13513044@ld5-01.if.itb.ac.id> Date: Fri, 12 Feb 2016 18:01:45 +0700 Subject: [PATCH] Final + laporan --- a | Bin 13684 -> 0 bytes bucket.c | 162 ----------------------------------------------- insertion_sort.c | 38 ----------- laporan.txt | 50 +++++++++++++++ scattergather.c | 80 ----------------------- 5 files changed, 50 insertions(+), 280 deletions(-) delete mode 100755 a delete mode 100644 bucket.c delete mode 100644 insertion_sort.c create mode 100644 laporan.txt delete mode 100644 scattergather.c diff --git a/a b/a deleted file mode 100755 index 051132f2e423803a08736493c09679c59d6ef85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13684 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 diff --git a/bucket.c b/bucket.c deleted file mode 100644 index e5448eb..0000000 --- a/bucket.c +++ /dev/null @@ -1,162 +0,0 @@ -/* Copyrights http://www.programmingsimplified.com/c/source-code/c-program-insertion-sort */ -/* insertion sort ascending order */ - -#include <stdio.h> -// Copyright 2012 www.mpitutorial.com - -// Program yang menghitung rataÂrata dari array secara paralel menggunakan Scatter dan Gather. -#include <stdio.h> -#include <stdlib.h> -#include <time.h> -#include <mpi.h> -#include <assert.h> - -float *create_rand_nums(int num_elements) { - float *rand_nums = (float *)malloc(sizeof(float) * num_elements); - assert(rand_nums != NULL); - int i; - for (i = 0; i < num_elements; i++) { - rand_nums[i] = (rand() / (float)RAND_MAX); - } - return rand_nums; -} - -float compute_avg(float *array, int num_elements) { - float sum = 0.f; - int i; - for (i = 0; i < num_elements; i++) { - sum += array[i]; - } - return sum / num_elements; -} - -int* bucketSort(int array[], int n, int argc) { - int i, j; - int data[1000][1000]; - int size[1000]; - for (i=0;i<n;i++) { - size[i] = 0; - } - for (i=0;i<n;i++) { - if (array[i] < 10) - data[0][size[i]] = array[i]; - size[i]++; - } - - 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); - - MPI_Scatter(data, num_elements_per_proc, MPI_FLOAT, sub_rand_nums, - num_elements_per_proc, MPI_FLOAT, 0, MPI_COMM_WORLD); - - MPI_Gather(&sub_avg, 1, MPI_FLOAT, sub_avgs, 1, MPI_FLOAT, 0, - MPI_COMM_WORLD); - - if (world_rank == 0) { - float avg = compute_avg(sub_avgs, world_size); - printf("Avg of all elements is %f\n", avg); - } - - if (world_rank == 0) { - free(rand_nums); - free(sub_avgs); - } - free(sub_rand_nums); - - MPI_Barrier(MPI_COMM_WORLD); - MPI_Finalize(); - - - 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); - - float *rand_nums = NULL; - if (world_rank == 0) { - rand_nums = create_rand_nums(num_elements_per_proc * world_size); - } - - float *sub_rand_nums = (float *)malloc(sizeof(float) * - num_elements_per_proc); - assert(sub_rand_nums != NULL); - - MPI_Scatter(rand_nums, num_elements_per_proc, MPI_FLOAT, sub_rand_nums, - num_elements_per_proc, MPI_FLOAT, 0, MPI_COMM_WORLD); - - float sub_avg = compute_avg(sub_rand_nums, num_elements_per_proc); - - float *sub_avgs = NULL; - if (world_rank == 0) { - sub_avgs = (float *)malloc(sizeof(float) * world_size); - assert(sub_avgs != NULL); - } - MPI_Gather(&sub_avg, 1, MPI_FLOAT, sub_avgs, 1, MPI_FLOAT, 0, - MPI_COMM_WORLD); - - if (world_rank == 0) { - float avg = compute_avg(sub_avgs, world_size); - printf("Avg of all elements is %f\n", avg); - } - - if (world_rank == 0) { - free(rand_nums); - free(sub_avgs); - } - free(sub_rand_nums); - - MPI_Barrier(MPI_COMM_WORLD); - MPI_Finalize(); -} - - -int main(int argc, char** argv) -{ - - int n, array[1000], c, d, t; - int array1[1000]; - - if (argc != 2) { - fprintf(stderr, "Usage: avg num_elements_per_proc\n"); - exit(1); - } - - 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]); - } - array1 = bucketSort(array[1000], n, argc); - /* - 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", array1[c]); - } - - return 0; -} diff --git a/insertion_sort.c b/insertion_sort.c deleted file mode 100644 index 42d8677..0000000 --- a/insertion_sort.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyrights http://www.programmingsimplified.com/c/source-code/c-program-insertion-sort */ -/* insertion sort ascending order */ - -#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; -} \ No newline at end of file diff --git a/laporan.txt b/laporan.txt new file mode 100644 index 0000000..39a8a8d --- /dev/null +++ b/laporan.txt @@ -0,0 +1,50 @@ +N = Element array +M = Banyak proses + +1) N = 50.000 +______________________ +| M | Waktu (seconds)| +|____|________________| +| 1 | 6.856739 | +| 4 | 0.672057 | +| 8 | 0.185040 | +| 16 | 0.391889 | +| 32 | 0.390784 | +|____|________________| + + +2) N = 100.000 +______________________ +| M | Waktu (seconds)| +|____|________________| +| 1 | 14.909016 | +| 4 | 2.744831 | +| 8 | 0.440783 | +| 16 | 0.294712 | +| 32 | 0.686711 | +|____|________________| + + +3) N = 200.000 +______________________ +| M | Waktu (seconds)| +|____|________________| +| 1 | 54.440212 | +| 4 | 6.701494 | +| 8 | 1.613141 | +| 16 | 0.631648 | +| 32 | 2.975302 | +|____|________________| + + +4) N = 400.000 +______________________ +| M | Waktu (seconds)| +|____|________________| +| 1 | 219.474459 | +| 4 | 25.008242 | +| 8 | 7.521053 | +| 16 | 3.224539 | +| 32 | 3.344244 | +|____|________________| + diff --git a/scattergather.c b/scattergather.c deleted file mode 100644 index 533d221..0000000 --- a/scattergather.c +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2012 www.mpitutorial.com - -#include <stdio.h> -#include <stdlib.h> -#include <time.h> -#include <mpi.h> -#include <assert.h> - -float *create_rand_nums(int num_elements) { -float *rand_nums = (float *)malloc(sizeof(float) * num_elements); -assert(rand_nums != NULL); -int i; -for (i = 0; i < num_elements; i++) { -rand_nums[i] = (rand() / (float)RAND_MAX); -} -return rand_nums; -} - -float compute_avg(float *array, int num_elements) { -float sum = 0.f; -int i; -for (i = 0; i < num_elements; i++) { -sum += array[i]; -} -return sum / num_elements; -} - -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); - -float *rand_nums = NULL; -if (world_rank == 0) { -rand_nums = create_rand_nums(num_elements_per_proc * world_size); -} - -float *sub_rand_nums = (float *)malloc(sizeof(float) * -num_elements_per_proc); -assert(sub_rand_nums != NULL); - -MPI_Scatter(rand_nums, num_elements_per_proc, MPI_FLOAT, sub_rand_nums, -num_elements_per_proc, MPI_FLOAT, 0, MPI_COMM_WORLD); - -float sub_avg = compute_avg(sub_rand_nums, num_elements_per_proc); - -float *sub_avgs = NULL; -if (world_rank == 0) { -sub_avgs = (float *)malloc(sizeof(float) * world_size); -assert(sub_avgs != NULL); -} -MPI_Gather(&sub_avg, 1, MPI_FLOAT, sub_avgs, 1, MPI_FLOAT, 0, -MPI_COMM_WORLD); - -if (world_rank == 0) { -float avg = compute_avg(sub_avgs, world_size); -printf("Avg of all elements is %f\n", avg); -} - -if (world_rank == 0) { -free(rand_nums); -free(sub_avgs); -} -free(sub_rand_nums); - -MPI_Barrier(MPI_COMM_WORLD); -MPI_Finalize(); -} - -- GitLab