From 4ac65d13673e2326e3f2d22b9235f8ba40985385 Mon Sep 17 00:00:00 2001 From: mfikrin <muhammad.fikrin1729@gmail.com> Date: Sun, 6 Mar 2022 20:07:35 +0700 Subject: [PATCH] feat : add openmp for datarange and supression_op --- src/openmp | Bin 0 -> 17080 bytes src/openmp.c | 10 +++ src/par | Bin 22016 -> 22624 bytes src/parallel.c | 230 ++++++++++++++----------------------------------- 4 files changed, 76 insertions(+), 164 deletions(-) create mode 100644 src/openmp create mode 100644 src/openmp.c diff --git a/src/openmp b/src/openmp new file mode 100644 index 0000000000000000000000000000000000000000..d5f231b0629376347e6225087d529027249e31cc GIT binary patch literal 17080 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 I1y51^6GZyx#Q*>R literal 0 HcmV?d00001 diff --git a/src/openmp.c b/src/openmp.c new file mode 100644 index 0000000..629c561 --- /dev/null +++ b/src/openmp.c @@ -0,0 +1,10 @@ +#include <stdio.h> +#include <omp.h> + +int main(int argc, char** argv){ + #pragma omp parallel + { + printf("Hello from process: %d\n", omp_get_thread_num()); + } + return 0; +} \ No newline at end of file diff --git a/src/par b/src/par index 23fe37ce47d562518349e7e07a6fd6c375d7f3ac..8eec9384443dde2f8e203fa8a24ecd396fca2479 100644 GIT binary patch literal 22624 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 delta 6476 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 V>N<_`k(rs=7Mt=L*pjxw{|DAv7YqOZ diff --git a/src/parallel.c b/src/parallel.c index d8f4649..b0ccca5 100644 --- a/src/parallel.c +++ b/src/parallel.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <stdlib.h> #include <mpi.h> +#include <omp.h> #define NMAX 100 #define DATAMAX 1000 @@ -81,17 +82,41 @@ void print_matrix(Matrix *m) { * element of a matrix * */ int get_matrix_datarange(Matrix *m) { - int max = DATAMIN; - int min = DATAMAX; - for (int i = 0; i < m->row_eff; i++) { - for (int j = 0; j < m->col_eff; j++) { - int el = m->mat[i][j]; - if (el > max) max = el; - if (el < min) min = el; - } - } + int maxLocal; + int minLocal; - return max - min; + int maxGlobal; + int minGlobal; + + maxGlobal = DATAMIN; + minGlobal = DATAMAX; + + #pragma omp parallel private(maxLocal, minLocal) shared(maxGlobal, minGlobal) + { + maxLocal = maxGlobal; + minLocal = minGlobal; + #pragma omp for collapse(2) nowait + for (int i = 0; i < m->row_eff; i++) { + for (int j = 0; j < m->col_eff; j++) { + int el = m->mat[i][j]; + if (el > maxLocal) maxLocal = el; + if (el < minLocal) minLocal = el; + } + } + #pragma omp critical + { + if (minLocal < minGlobal) { + minGlobal = minLocal; + } + + if (maxLocal > maxGlobal){ + maxGlobal = maxLocal; + } + } + } + + printf("MAXGLOBAL : %d, MIN GLOBAL : %d",maxGlobal,minGlobal); + return maxGlobal - minGlobal; } @@ -102,16 +127,37 @@ int get_matrix_datarange(Matrix *m) { * operation where kernel[0][0] corresponds to target[row][col] * */ int supression_op(Matrix *kernel, Matrix *target, int row, int col) { - int intermediate_sum = 0; - for (int i = 0; i < kernel->row_eff; i++) { - for (int j = 0; j < kernel->col_eff; j++) { - intermediate_sum += kernel->mat[i][j] * target->mat[row + i][col + j]; - } + int partial_Sum; + int total_Sum; + #pragma omp parallel private(partial_Sum) shared(total_Sum) + { + partial_Sum = 0; + total_Sum = 0; + #pragma omp for collapse(2) + for (int i = 0; i < kernel->row_eff; i++) { + for (int j = 0; j < kernel->col_eff; j++) { + partial_Sum = kernel->mat[i][j] * target->mat[row + i][col + j]; + } + } + + #pragma omp critical + // /add each threads partial sum to the total sum + total_Sum += partial_Sum; } - - return intermediate_sum; + return total_Sum; } +// int supression_op(Matrix *kernel, Matrix *target, int row, int col) { +// int intermediate_sum = 0; +// for (int i = 0; i < kernel->row_eff; i++) { +// for (int j = 0; j < kernel->col_eff; j++) { +// intermediate_sum += kernel->mat[i][j] * target->mat[row + i][col + j]; +// } +// } + +// return intermediate_sum; +// } + /* * Function convolution @@ -123,11 +169,6 @@ Matrix convolution(Matrix *kernel, Matrix *target) { Matrix out; int out_row_eff = target->row_eff - kernel->row_eff + 1; int out_col_eff = target->col_eff - kernel->col_eff + 1; - - // printf("kernel row %d",kernel->row_eff); - // printf("kernel col %d",kernel->col_eff); - - // printf("out_row_eff %d %d",out_row_eff,out_col_eff); init_matrix(&out, out_row_eff, out_col_eff); @@ -235,46 +276,6 @@ long get_floored_mean(int *n, int length) { } -void distribute(void* data, int count, MPI_Datatype datatype, int root, - MPI_Comm communicator) { - int world_rank; - MPI_Comm_rank(communicator, &world_rank); - int world_size; - MPI_Comm_size(communicator, &world_size); - - // Procecss 0 --> Kirim matriks inputan 1,2,3 ke prcess 1,2,3 - // process 1,2,3 -> receive - // prcess 0 --> kirim matriks input 4,5,6, ke process 1,2,3 - - if (world_rank == root) { - // If we are the root process, send our data to every process - int i; - for (i = 0; i < world_size; i++) { - if (i != world_rank) { - MPI_Send(data, count, datatype, i, 0, communicator); - } - } - } else { - // If we are a receiver process, receive the data from the root - MPI_Recv(data, count, datatype, root, 0, communicator, - MPI_STATUS_IGNORE); - - - // Ngitung con sama data range - } -} - -// void init_matrix_kernel() { -// m->row_eff = 2; -// m->col_eff = 2; - -// m->mat[0][0] = 1; -// m->mat[0][1] = 0; -// m->mat[1][0] = 0; -// m->mat[1][1] = -1; -// } - -// main() driver int main() { // OPEN MPI MPI_Init(NULL, NULL); @@ -283,11 +284,7 @@ int main() { MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); - - const int PING_PONG_LIMIT = 3; - printf("HELLO WORLD\n"); - // 10 / 4 = 2 2 2 (10-6) int kernel_row, kernel_col, target_row, target_col, num_targets; int counter_distribute = 0; int counter_receiver = 0; @@ -310,14 +307,6 @@ int main() { arr_mat[i] = input_matrix(target_row, target_col); } - print_matrix(&kernel); - - - - printf("HELLO OPEN MPI\n"); - - - // --------------------------- Create the datatype ----------------------------- // MPI_Datatype mat_MPI; int lengths[3] = { NMAX * NMAX, 1, 1 }; @@ -373,7 +362,6 @@ int main() { MPI_Send(&arr_mat[j], 1, mat_MPI, rank, 2+k, MPI_COMM_WORLD); j++; } - printf("Checkpoint A\n"); } } @@ -407,6 +395,9 @@ int main() { } } + + // Showing the result + // sort the data range array printf("BAWAHNYA PRINT ARRAY\n"); print_array(arr_range,num_targets); @@ -458,95 +449,6 @@ int main() { MPI_Send(&arr_range, totalData, MPI_INT, 0, 0, MPI_COMM_WORLD); } - - // if (world_rank == 0){ - // printf("BACK TO PROCESS 0"); - // // Now receive the message with the allocated buffer - // for (int i = 0; i < world_size; i++ ){ - // if (i != root){ - // MPI_Status status; - // // Probe for an incoming message from process zero - // MPI_Probe(i, 0, MPI_COMM_WORLD, &status); - - // // When probe returns, the status object has the size and other - // // attributes of the incoming message. Get the message size - // int number_amount; - // MPI_Get_count(&status, MPI_INT, &number_amount); - - // // Allocate a buffer to hold the incoming numbers - // int* number_buf = (int*)malloc(sizeof(int) * number_amount); - - - // MPI_Recv(number_buf, number_amount, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); - // printf("PROCESS 0 IN RECEIVING"); - // print_array(number_buf,number_amount); - // } - // } - // } - - - // while (counter_distribute < PING_PONG_LIMIT){ - // // distribute(arr_mat[counter_distribute],1,mat_MPI,0, MPI_COMM_WORLD) - // printf("Counter dis %d \n", counter_distribute); - // if (world_rank == root) { - // // If we are the root process, send our data to every process - // int i; - // for (i = 0; i < world_size; i++) { - // if (i != world_rank) { - // MPI_Send(&arr_mat[counter_distribute], 1, mat_MPI, i, 1, MPI_COMM_WORLD); - // MPI_Send(&kernel, 1, mat_MPI, i, 0, MPI_COMM_WORLD); - - // counter_distribute++; - - // MPI_Send(&counter_distribute, 1, MPI_INT, i, 2, MPI_COMM_WORLD); - // } - // } - - // } else { - // // If we are a receiver process, receive the data from the root - // Matrix recv_data; - // MPI_Recv(&recv_data, 1, mat_MPI, root, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); - // Matrix kernel_recv; - // MPI_Recv(&kernel_recv, 1, mat_MPI, root, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); - // print_matrix(&recv_data); - // print_matrix(&kernel_recv); - // MPI_Recv(&counter_distribute, 1, mat_MPI, root, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); - // printf("HASILLL\n"); - // arr_mat2[counter_receiver] = convolution(&kernel_recv, &recv_data); - - // print_matrix(&arr_mat2[counter_receiver]); - // arr_range[counter_receiver] = get_matrix_datarange(&arr_mat2[counter_receiver]); - // counter_distribute = counter_distribute; - // printf("Counter reciver now %d \n", counter_distribute); - // printf("Counter disribute now %d \n", counter_distribute); - - // counter_receiver++; - // } - // } - - // // sort the data range array - // printf("BAWAHNYA PRINT ARRAY\n"); - // print_array(arr_range,num_targets); - // merge_sort(arr_range, 0, num_targets - 1); - - - // printf("AFTER SORT\n"); - // print_array(arr_range,num_targets); - - // int median = get_median(arr_range, num_targets); - // int floored_mean = get_floored_mean(arr_range, num_targets); - // // int floored_mean = 10; - - // // print the min, max, median, and floored mean of data range array - // printf("HASIL FINALLLL\n"); - // printf("MIN : %d\nMAX : %d\nMedian : %d\nRata-Rata : %d\n", - // arr_range[0], - // arr_range[num_targets - 1], - // median, - // floored_mean); - - // // START OPEN MP - MPI_Finalize(); return 0; } -- GitLab