From 24af23c55acdbc6bc648fc8d90e12666466c55cf Mon Sep 17 00:00:00 2001 From: Guillaume-Helbecque <helbecque.guillaume@gmail.com> Date: Thu, 24 Apr 2025 13:37:04 +0200 Subject: [PATCH] remove Auxiliary.h in favor of util.h --- .../{pfsp/lib/Auxiliary.c => commons/util.c} | 2 +- baselines/commons/util.h | 19 ++++++++++++ baselines/nqueens/makefile | 5 ++++ baselines/pfsp/lib/Auxiliary.h | 29 ------------------- baselines/pfsp/makefile | 15 ++++++---- baselines/pfsp/pfsp_dist_multigpu_cuda.c | 1 - baselines/pfsp/pfsp_multigpu_cuda.c | 1 - 7 files changed, 35 insertions(+), 37 deletions(-) rename baselines/{pfsp/lib/Auxiliary.c => commons/util.c} (98%) delete mode 100644 baselines/pfsp/lib/Auxiliary.h diff --git a/baselines/pfsp/lib/Auxiliary.c b/baselines/commons/util.c similarity index 98% rename from baselines/pfsp/lib/Auxiliary.c rename to baselines/commons/util.c index 8c06e3e..5ff388c 100644 --- a/baselines/pfsp/lib/Auxiliary.c +++ b/baselines/commons/util.c @@ -1,4 +1,4 @@ -#include "Auxiliary.h" +#include "util.h" // Function to check if all elements in an array of atomic bool are IDLE static bool _allIdle(_Atomic bool arr[], int size) { diff --git a/baselines/commons/util.h b/baselines/commons/util.h index 19c69d3..8e39a0c 100644 --- a/baselines/commons/util.h +++ b/baselines/commons/util.h @@ -1,8 +1,17 @@ #ifndef UTIL_H #define UTIL_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdatomic.h> +#include <stdbool.h> #include <stdint.h> +#define BUSY false +#define IDLE true + inline void swap_uint8(uint8_t* a, uint8_t* b) { uint8_t tmp = *b; @@ -17,4 +26,14 @@ inline void swap_int(int* a, int* b) *a = tmp; } +bool allIdle(_Atomic bool arr[], int size, _Atomic bool *flag); + +void permute(int* arr, int n); + +int findMin(int arr[], int size); + +#ifdef __cplusplus +} +#endif + #endif // UTIL_H diff --git a/baselines/nqueens/makefile b/baselines/nqueens/makefile index 3b06714..2aac591 100644 --- a/baselines/nqueens/makefile +++ b/baselines/nqueens/makefile @@ -12,6 +12,7 @@ CUDA_COMMON_OPTS := $(C_COMMON_OPTS) -arch=sm_70 HIP_COMMON_OPTS := $(C_COMMON_OPTS) --offload-arch=gfx906 LIBPATH := lib +COMMONS_PATH := ../commons # Platform-specific flags and libraries ifeq ($(SYSTEM), g5k) @@ -37,6 +38,10 @@ all: nqueens_c.out nqueens_gpu_cuda.out nqueens_multigpu_cuda.out nqueens_gpu_hi $(LIBPATH)/%.o: $(LIBPATH)/%.c $(C_COMPILER) $(C_COMMON_OPTS) -c $< -o $@ +# Pattern rule for C common source files +$(COMMONS_PATH)/%.o: $(COMMONS_PATH)/%.c + $(C_COMPILER) $(C_COMMON_OPTS) -c $< -o $@ + # Build executable for sequential in C nqueens_c.out: nqueens_c.c $(LIBPATH)/NQueens_node.o $(LIBPATH)/Pool.o $(C_COMPILER) $(C_COMMON_OPTS) $^ -o $@ diff --git a/baselines/pfsp/lib/Auxiliary.h b/baselines/pfsp/lib/Auxiliary.h deleted file mode 100644 index 8f18ddd..0000000 --- a/baselines/pfsp/lib/Auxiliary.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef AUXILIARY_H -#define AUXILIARY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <stdbool.h> -#include <stdatomic.h> -#include <stdlib.h> - -#define BUSY false -#define IDLE true - -/****************************************************************************** -Auxiliary functions -******************************************************************************/ - -bool allIdle(_Atomic bool arr[], int size, _Atomic bool *flag); - -void permute(int* arr, int n); - -int findMin(int arr[], int size); - -#ifdef __cplusplus -} -#endif - -#endif // AUXILIARY_H diff --git a/baselines/pfsp/makefile b/baselines/pfsp/makefile index 449c31f..a74a994 100644 --- a/baselines/pfsp/makefile +++ b/baselines/pfsp/makefile @@ -13,6 +13,7 @@ CUDA_COMMON_OPTS := -O3 -arch=sm_86 # TODO: adapt SM automatically, if possible HIP_COMMON_OPTS := $(C_COMMON_OPTS) --offload-arch=gfx906 LIBPATH := lib +COMMONS_PATH := ../commons # Platform-specific flags and libraries ifeq ($(SYSTEM), g5k) @@ -48,6 +49,10 @@ all: $(EXECUTABLES) $(LIBPATH)/%.o: $(LIBPATH)/%.c $(C_COMPILER) $(C_COMMON_OPTS) -c $< -o $@ +# Pattern rule for C common source files +$(COMMONS_PATH)/%.o: $(COMMONS_PATH)/%.c + $(C_COMPILER) $(C_COMMON_OPTS) -c $< -o $@ + # Pattern rule for CUDA library source files $(LIBPATH)/%.o: $(LIBPATH)/%.cu $(CUDA_COMPILER) $(CUDA_COMMON_OPTS) -c $< -o $@ @@ -61,11 +66,11 @@ pfsp_gpu_cuda.out: pfsp_gpu_cuda.c $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_si $(C_COMPILER) $(C_COMMON_OPTS) $^ -o $@ -lm -lcudart $(CUDA_INCLUDE) $(CUDA_LIB) # Build executable for multi-GPU in C+OpenMP+CUDA -pfsp_multigpu_cuda.out: pfsp_multigpu_cuda.c $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/evaluate.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(LIBPATH)/Auxiliary.o +pfsp_multigpu_cuda.out: pfsp_multigpu_cuda.c $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/evaluate.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(COMMONS_PATH)/util.o $(C_COMPILER) $(C_COMMON_OPTS) -fopenmp $^ -o $@ -lm -lcudart $(CUDA_INCLUDE) $(CUDA_LIB) # Build executable for distributed multi-GPU in C+MPI+OpenMP+CUDA -pfsp_dist_multigpu_cuda.out: pfsp_dist_multigpu_cuda.c $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/evaluate.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(LIBPATH)/Auxiliary.o +pfsp_dist_multigpu_cuda.out: pfsp_dist_multigpu_cuda.c $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/evaluate.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(COMMONS_PATH)/util.o $(MPI_COMPILER) $(C_COMMON_OPTS) -fopenmp $^ -o $@ -lm -lcudart $(CUDA_INCLUDE) $(CUDA_LIB) $(LIBPATH)/evaluate_hip.o: $(LIBPATH)/evaluate.cu @@ -87,7 +92,7 @@ pfsp_multigpu_hip.o: pfsp_multigpu_cuda.c hipify-perl $< > $<.hip $(HIP_COMPILER) $(HIP_COMMON_OPTS) -fopenmp -c $<.hip -o $@ -pfsp_multigpu_hip.out: pfsp_multigpu_hip.o $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(LIBPATH)/Auxiliary.o $(LIBPATH)/evaluate_hip.o +pfsp_multigpu_hip.out: pfsp_multigpu_hip.o $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(COMMONS_PATH)/util.o $(LIBPATH)/evaluate_hip.o $(HIP_COMPILER) $(HIP_COMMON_OPTS) -fopenmp $^ -o $@ # Build executable for distributed multi-GPU in C+MPI+OpenMP+HIP @@ -95,11 +100,11 @@ pfsp_dist_multigpu_hip.o: pfsp_dist_multigpu_cuda.c hipify-perl $< > $<.hip $(HIP_COMPILER) $(HIP_COMMON_OPTS) $(MPI_INCLUDE) $(MPI_LIB) -fopenmp -c $<.hip -o $@ -pfsp_dist_multigpu_hip.out: pfsp_dist_multigpu_hip.o $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(LIBPATH)/Auxiliary.o $(LIBPATH)/evaluate_hip.o +pfsp_dist_multigpu_hip.out: pfsp_dist_multigpu_hip.o $(LIBPATH)/c_taillard.o $(LIBPATH)/c_bound_simple.o $(LIBPATH)/c_bound_johnson.o $(LIBPATH)/PFSP_node.o $(LIBPATH)/Pool_ext.o $(COMMONS_PATH)/util.o $(LIBPATH)/evaluate_hip.o $(HIP_COMPILER) $(HIP_COMMON_OPTS) $(MPI_INCLUDE) $(MPI_LIB) -lmpi_cxx -lmpi -lopen-pal -fopenmp $^ -o $@ # Utilities .PHONY: clean clean: - rm -f *.out *.o *.hip $(LIBPATH)/*.o $(LIBPATH)/*.hip + rm -f *.out *.o *.hip $(LIBPATH)/*.o $(LIBPATH)/*.hip $(COMMONS_PATH)/*.o diff --git a/baselines/pfsp/pfsp_dist_multigpu_cuda.c b/baselines/pfsp/pfsp_dist_multigpu_cuda.c index 68a0c35..aebaf1e 100644 --- a/baselines/pfsp/pfsp_dist_multigpu_cuda.c +++ b/baselines/pfsp/pfsp_dist_multigpu_cuda.c @@ -23,7 +23,6 @@ #include "lib/c_taillard.h" #include "lib/evaluate.h" #include "lib/Pool_ext.h" -#include "lib/Auxiliary.h" /****************************************************************************** Create new MPI data type diff --git a/baselines/pfsp/pfsp_multigpu_cuda.c b/baselines/pfsp/pfsp_multigpu_cuda.c index 32810e2..0fbcf91 100644 --- a/baselines/pfsp/pfsp_multigpu_cuda.c +++ b/baselines/pfsp/pfsp_multigpu_cuda.c @@ -22,7 +22,6 @@ #include "lib/c_taillard.h" #include "lib/evaluate.h" #include "lib/Pool_ext.h" -#include "lib/Auxiliary.h" /****************************************************************************** CUDA error checking -- GitLab