From c758d3c143bc28d985a82cf32b33fa22c1ad33bb Mon Sep 17 00:00:00 2001 From: Gasper Spagnolo Date: Wed, 7 Dec 2022 13:28:41 -0500 Subject: [PATCH] To je blo naporno :) --- dn5/Makefile | 2 +- dn5/mpi | Bin 0 -> 21440 bytes dn5/server.c | 6 +- dn6/Makefile | 18 +++++ dn6/mpi | Bin 0 -> 21440 bytes dn6/server | Bin 0 -> 30064 bytes dn6/server.c | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 219 insertions(+), 4 deletions(-) create mode 100644 dn5/mpi create mode 100644 dn6/Makefile create mode 100644 dn6/mpi create mode 100755 dn6/server create mode 100644 dn6/server.c diff --git a/dn5/Makefile b/dn5/Makefile index 5d37328..29a85fd 100644 --- a/dn5/Makefile +++ b/dn5/Makefile @@ -15,4 +15,4 @@ push: run_remote: ssh nsc 'cd $(DESTINATION); make clean;module load OpenMPI/4.0.5-GCC-10.2.0; make server;' - ssh nsc 'module load OpenMPI/4.0.5-GCC-10.2.0; mpirun -N 2 $(DESTINATION)/server' + ssh nsc 'module load OpenMPI/4.0.5-GCC-10.2.0; srun --reservation=fri --nodes=2 --mpi=pmix mpirun -N 2 $(DESTINATION)/server' diff --git a/dn5/mpi b/dn5/mpi new file mode 100644 index 0000000000000000000000000000000000000000..e739af637dcf00808e22b349153ec4d47ebcefe9 GIT binary patch literal 21440 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 literal 0 HcmV?d00001 diff --git a/dn6/server.c b/dn6/server.c new file mode 100644 index 0000000..33566f4 --- /dev/null +++ b/dn6/server.c @@ -0,0 +1,197 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define ARRAY_SIZE 50000000 +#define DEBUG 0 + +void segfault_handler(int sig) { + void *array[10]; + size_t size; + + size = backtrace(array, 10); + + fprintf(stderr, "[-] Error: signal %d:\n", sig); + backtrace_symbols_fd(array, size, STDERR_FILENO); + exit(1); +} + +double* setup_send_array(int size) { + double *arr = (double *)malloc(size * sizeof(double)); + + if(arr == NULL) { + printf("[-] Error: malloc failed!\n"); + exit(1); + } + + for (int i = 0; i < size; i++) { + arr[i] = (double)rand() / (double)RAND_MAX; + } + return arr; +} + +double* setup_recv_array(int n_elements) { + double *recv_arr = (double *)malloc(n_elements * sizeof(double)); + + if(recv_arr == NULL) { + printf("[-] Error: malloc failed!\n"); + exit(1); + } + + for (int i = 0; i < n_elements; i++) { + recv_arr[i] = 0.0; + } + return recv_arr; +} + +void setup_displacements_and_counts(int *displacements, int *counts, int ntasks) { + for(int i = 0; i < ntasks; i++) { + displacements[i] = (int) (ARRAY_SIZE / ntasks * i); // my_start + counts[i] = (int) (ARRAY_SIZE / ntasks * (i + 1)) - displacements[i]; // my_end - my_start + } +} + +int compare_doubles(const void *a, const void *b) { + const double *da = (const double *) a; + const double *db = (const double *) b; + + return (*da > *db) - (*da < *db); +} + +double *finalize_sort(double* arr, int arr_size, int *displacements, int n_tasks) { + double *temp_arr = (double *)malloc(arr_size * sizeof(double)); + int *temp_displacements = (int *)malloc(n_tasks * sizeof(int)); + + if(temp_arr == NULL || temp_displacements == NULL) { + printf("[-] Error: malloc failed!\n"); + exit(1); + } + + for(int i = 0; i < n_tasks; i++) + temp_displacements[i] = displacements[i]; + + for(int i = 0; i < arr_size; i++) { + + int min_displacement_task_ix = 0; + for(int j = 0; j < n_tasks; j++) { + if(j != n_tasks -1 && temp_displacements[j] == displacements[j+1]) + continue; + else if(j == n_tasks && temp_displacements[j] == arr_size -1) + continue; + + if(arr[temp_displacements[min_displacement_task_ix]] > arr[temp_displacements[j]]) + min_displacement_task_ix = j; + } + temp_arr[i] = arr[temp_displacements[min_displacement_task_ix]]; + temp_displacements[min_displacement_task_ix]++; + } + + return temp_arr; +} + +void throw_err(int line, int err_code) { + char err_buf[256]; + + sprintf(err_buf, "[-] Error: %s -> %d", __FILE__, line); + perror(err_buf); + exit(err_code); +} + +int main(int argc, char* argv[]) +{ + int taskid, ntasks; + double *send_arr, *recv_arr; + int *displacements, *counts; + + double start_time = MPI_Wtime(); + + MPI_Init(&argc, &argv); + signal(SIGSEGV, segfault_handler); + + MPI_Comm_rank(MPI_COMM_WORLD, &taskid); + MPI_Comm_size(MPI_COMM_WORLD, &ntasks); + + if(DEBUG) { + printf("[+] Task %d has started...\n", taskid); + fflush(stdout); + } + + if (taskid == 0) { + //Setup array that we need to sort + send_arr = setup_send_array(ARRAY_SIZE); + } + + // Allocate memory for send_displacements and send_counts + displacements = (int *)malloc(ntasks * sizeof(int)); + counts = (int *)malloc(ntasks * sizeof(int)); + + if(displacements == NULL || counts == NULL) { + printf("[-] Error: malloc failed!\n"); + exit(1); + } + + // Setup displacements and counts + setup_displacements_and_counts(displacements, counts, ntasks); + + if(DEBUG) { + printf("[+] Setup displacements and counts done!\n"); + fflush(stdout); + } + + // Setup recv array + recv_arr = setup_recv_array(counts[taskid]); + + if(DEBUG) { + printf("[+] Setup done!\n"); + fflush(stdout); + } + + if(MPI_Barrier(MPI_COMM_WORLD) != MPI_SUCCESS) + throw_err(__LINE__, errno); + + // Scatterv array to all processes + if(MPI_Scatterv(send_arr, counts, displacements , MPI_DOUBLE, recv_arr, ARRAY_SIZE, MPI_DOUBLE, 0, MPI_COMM_WORLD) != MPI_SUCCESS) + throw_err(__LINE__, errno); + + // Sort the array + qsort(recv_arr, counts[taskid], sizeof(double), compare_doubles); + + + if(DEBUG) { + for(int i =0; i < counts[taskid]; i++) { + printf("%f ", recv_arr[i]); + } + printf("---> tid: %d \n", taskid); + fflush(stdout); + } + + if(MPI_Barrier(MPI_COMM_WORLD) != MPI_SUCCESS) + throw_err(__LINE__, errno); + + // Gather the array + if(MPI_Gatherv(recv_arr, counts[taskid], MPI_DOUBLE, send_arr, counts, displacements, MPI_DOUBLE, 0, MPI_COMM_WORLD)) + throw_err(__LINE__, errno); + + + if (taskid == 0) { + send_arr = finalize_sort(send_arr, ARRAY_SIZE, displacements, ntasks); + if(DEBUG) { + for(int i = 0; i < ARRAY_SIZE; i++) { + printf("%f ", send_arr[i]); + } + } + + double total_time = MPI_Wtime() - start_time; + + printf("\nTotal time: %f\n", total_time); + } + + + MPI_Finalize(); + return 0; +}