Skip to content
Snippets Groups Projects
Commit 24af23c5 authored by Guillaume-Helbecque's avatar Guillaume-Helbecque
Browse files

remove Auxiliary.h in favor of util.h

parent 65aa3aa5
No related branches found
No related tags found
No related merge requests found
#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) {
......
#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
......@@ -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 $@
......
#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
......@@ -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
......@@ -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
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment