From 31ab27f8699075e3fc3430a2fd6c8b8a709734c2 Mon Sep 17 00:00:00 2001 From: Gasper Spagnolo Date: Mon, 7 Nov 2022 18:56:40 +0100 Subject: [PATCH] KONC --- dn2/Makefile | 8 ++- dn2/server | Bin 24896 -> 0 bytes dn2/{server.c => server_a.c} | 0 dn2/server_b.c | 108 ++++++++++++++++++++++++++++++++++ dn2/{server1.c => server_c.c} | 0 5 files changed, 115 insertions(+), 1 deletion(-) delete mode 100755 dn2/server rename dn2/{server.c => server_a.c} (100%) create mode 100644 dn2/server_b.c rename dn2/{server1.c => server_c.c} (100%) diff --git a/dn2/Makefile b/dn2/Makefile index 530e632..768f384 100644 --- a/dn2/Makefile +++ b/dn2/Makefile @@ -1,5 +1,6 @@ CC=gcc CFLAGS=-g -Wall -lpthread -fopenmp +DESTINATION=/ceph/grid/home/gs0104/dn/dn2 all: server @@ -7,6 +8,11 @@ server: server.c $(CC) $(CFLAGS) server.c -o server clean: - rm server + rm server +push: + rsync -a --progress . nsc:$(DESTINATION) +run_remote: + ssh nsc 'cd $(DESTINATION); make clean; make server;' + ssh nsc 'srun --reservation=fri --ntasks=1 --cpus-per-task=16 --nodes=1 $(DESTINATION)/server' diff --git a/dn2/server b/dn2/server deleted file mode 100755 index b07383f0a677eb901cf1b09eb0aa13d3d0a00bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24896 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 Py*D`e`)d?xvf{r1!4{%R diff --git a/dn2/server.c b/dn2/server_a.c similarity index 100% rename from dn2/server.c rename to dn2/server_a.c diff --git a/dn2/server_b.c b/dn2/server_b.c new file mode 100644 index 0000000..7173573 --- /dev/null +++ b/dn2/server_b.c @@ -0,0 +1,108 @@ +#include +#include +#include +#include +#include + +#define N_THREADS 16 +#define N_STEPS 100 +#define N_NUMBERS_CALCULATED 10000 + +pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; +pthread_spinlock_t alive_threads_lock; +pthread_spinlock_t produced_numbers_lock; + +int amicable_numbers[N_NUMBERS_CALCULATED]; +long produced = 0; +int threads_alive = 0; + +int calculate_amicable_number(int number) { + for(int i=1; i< number; i++){ + if(number % i == 0){ + number = number + i; + } + } + return number; +} + +void *calculate_amicable_number_invterval(void * arg) { + int start = *((int *)arg); + int calculated = 0; + int h = 0; + + for(int i = 0; i < N_STEPS; i++){ + calculated = calculate_amicable_number(start + i); + h++; + if (start + i < N_NUMBERS_CALCULATED) { + amicable_numbers[start +i] = calculated; + } else { + pthread_spin_lock(&alive_threads_lock); + threads_alive--; + pthread_spin_unlock(&alive_threads_lock); + free(arg); + return NULL; + } + } + + pthread_spin_lock(&alive_threads_lock); + threads_alive--; + pthread_spin_unlock(&alive_threads_lock); + free(arg); + return NULL; +} + +int not_all_numbers_calculated() { + int ret = 0; + pthread_spin_lock(&produced_numbers_lock); + if(produced < N_NUMBERS_CALCULATED) + ret = 1; + pthread_spin_unlock(&produced_numbers_lock); + return ret; +} + +int is_there_space_for_new_thread() { + int ret = 0; + pthread_spin_lock(&alive_threads_lock); + if (threads_alive < N_THREADS) + ret = 1; + pthread_spin_unlock(&alive_threads_lock); + return ret; +} + +int main() { + pthread_spin_init(&alive_threads_lock, PTHREAD_PROCESS_PRIVATE); + pthread_spin_init(&produced_numbers_lock, PTHREAD_PROCESS_PRIVATE); + pthread_t t[N_THREADS]; + + double dt = omp_get_wtime(); + + while(not_all_numbers_calculated()){ + + + for (int i = 0; i