Skip to content
Snippets Groups Projects
Commit 6717b072 authored by Rafael Ravedutti's avatar Rafael Ravedutti
Browse files

Update Makefile

parent bf2bdf24
Branches
No related tags found
No related merge requests found
.PHONY: all build clean .PHONY: all build clean
# General settings
TESTCASE=dem TESTCASE=dem
PYCMD=python3 PYCMD=python3
# C/C++ compiler settings
CC=mpicc CC=mpicc
#CC=mpiicpx #CC=mpiicpx
#CC=mpiicpc #CC=mpiicpc
CFLAGS=-Ofast -march=core-avx2 ${MPI_FLAGS} ${LIKWID_FLAGS}
#CFLAGS=-Ofast -xHost -qopt-zmm-usage=high ${MPI_FLAGS} ${LIKWID_FLAGS}
#CFLAGS=-Ofast -xCORE-AVX512 -qopt-zmm-usage=high ${MPI_FLAGS} ${LIKWID_FLAGS}
DEBUG_FLAGS=
#DEBUG_FLAGS=-DDEBUG
# CUDA settings
NVCC=nvcc NVCC=nvcc
NVCC_FLAGS=-O3
NVCC_PATH:="$(shell which ${NVCC})" NVCC_PATH:="$(shell which ${NVCC})"
CUDA_FLAGS=-DENABLE_CUDA_AWARE_MPI
CUDA_BIN_PATH:="$(shell dirname ${NVCC_PATH})"
CUDA_PATH:="$(shell dirname ${CUDA_BIN_PATH})"
# MPI settings
MPI_PATH=/apps/SPACK/0.19.1/opt/linux-almalinux8-zen/intel-2021.10.0/openmpi-4.1.6-ijsnjhq77rjc256wlrp52m37rsq6miff MPI_PATH=/apps/SPACK/0.19.1/opt/linux-almalinux8-zen/intel-2021.10.0/openmpi-4.1.6-ijsnjhq77rjc256wlrp52m37rsq6miff
MPI_FLAGS=-I${MPI_PATH}/include MPI_FLAGS=-I${MPI_PATH}/include
# Likwid settings
LIKWID_INC ?= -I/usr/local/include LIKWID_INC ?= -I/usr/local/include
LIKWID_DEFINES ?= -DLIKWID_PERFMON LIKWID_DEFINES ?= -DLIKWID_PERFMON
LIKWID_LIB ?= -L/usr/local/lib LIKWID_LIB ?= -L/usr/local/lib
LIKWID_FLAGS = -llikwid ${LIKWID_INC} ${LIKWID_DEFINES} ${LIKWID_LIB} LIKWID_FLAGS = -llikwid ${LIKWID_INC} ${LIKWID_DEFINES} ${LIKWID_LIB}
#CUDA_FLAGS=
CUDA_FLAGS=-DENABLE_CUDA_AWARE_MPI # Other
CFLAGS=-Ofast -march=core-avx2 ${MPI_FLAGS} ${LIKWID_FLAGS} CPU_OBJ_PATH=obj_cpu
#CFLAGS=-Ofast -xHost -qopt-zmm-usage=high ${MPI_FLAGS} ${LIKWID_FLAGS}
#CFLAGS=-Ofast -xCORE-AVX512 -qopt-zmm-usage=high ${MPI_FLAGS} ${LIKWID_FLAGS}
CUDA_BIN_PATH:="$(shell dirname ${NVCC_PATH})"
CUDA_PATH:="$(shell dirname ${CUDA_BIN_PATH})"
OBJ_PATH=obj
CPU_SRC="$(TESTCASE).cpp" CPU_SRC="$(TESTCASE).cpp"
CPU_BIN="$(TESTCASE)_cpu" CPU_BIN="$(TESTCASE)_cpu"
GPU_OBJ_PATH=obj_gpu
GPU_SRC="$(TESTCASE).cu" GPU_SRC="$(TESTCASE).cu"
GPU_BIN="$(TESTCASE)_gpu" GPU_BIN="$(TESTCASE)_gpu"
DEBUG_FLAGS=
#DEBUG_FLAGS=-DDEBUG
all: clean build $(CPU_BIN) $(GPU_BIN) all: clean build $(CPU_BIN) $(GPU_BIN)
@echo "Everything was done!" @echo "Everything was done!"
...@@ -37,32 +49,40 @@ build: ...@@ -37,32 +49,40 @@ build:
$(CPU_SRC): $(CPU_SRC):
@echo "Generating and compiling $(TESTCASE) example for CPU..." @echo "Generating and compiling $(TESTCASE) example for CPU..."
@mkdir -p $(OBJ_PATH) @mkdir -p $(CPU_OBJ_PATH)
$(PYCMD) examples/$(TESTCASE).py cpu $(PYCMD) examples/$(TESTCASE).py cpu
$(GPU_SRC): $(GPU_SRC):
@echo "Generating and compiling $(TESTCASE) example for GPU..." @echo "Generating and compiling $(TESTCASE) example for GPU..."
@mkdir -p $(OBJ_PATH) @mkdir -p $(GPU_OBJ_PATH)
$(PYCMD) examples/$(TESTCASE).py gpu $(PYCMD) examples/$(TESTCASE).py gpu
$(OBJ_PATH)/pairs.o: runtime/pairs.cpp $(CPU_OBJ_PATH)/pairs.o: runtime/pairs.cpp
$(CC) -c -o $@ $< $(DEBUG_FLAGS) $(CUDA_FLAGS) $(CFLAGS) $(CC) -c -o $@ $< $(DEBUG_FLAGS) $(CFLAGS)
$(CPU_OBJ_PATH)/regular_6d_stencil.o: runtime/domain/regular_6d_stencil.cpp
$(CC) -c -o $@ $< $(DEBUG_FLAGS) $(CFLAGS)
$(CPU_OBJ_PATH)/dummy.o: runtime/devices/dummy.cpp
$(CC) -c -o $@ $< $(DEBUG_FLAGS) $(CFLAGS)
$(GPU_OBJ_PATH)/pairs.o: runtime/pairs.cpp
$(CC) -c -o $@ $< $(DEBUG_FLAGS) $(MPI_FLAGS) $(CFLAGS) $(CUDA_FLAGS)
$(OBJ_PATH)/regular_6d_stencil.o: runtime/domain/regular_6d_stencil.cpp $(GPU_OBJ_PATH)/regular_6d_stencil.o: runtime/domain/regular_6d_stencil.cpp
$(CC) -c -o $@ $< $(DEBUG_FLAGS) $(CUDA_FLAGS) $(CFLAGS) $(CC) -c -o $@ $< $(DEBUG_FLAGS) $(MPI_FLAGS) $(CFLAGS) $(CUDA_FLAGS)
$(OBJ_PATH)/dummy.o: runtime/devices/dummy.cpp $(GPU_OBJ_PATH)/cuda_runtime.o: runtime/devices/cuda.cu
$(CC) -c -o $@ $< $(DEBUG_FLAGS) $(NVCC) -c -o $@ $< $(DEBUG_FLAGS) $(MPI_FLAGS) $(NVCC_FLAGS) $(CUDA_FLAGS)
# Targets # Targets
$(CPU_BIN): $(CPU_SRC) $(OBJ_PATH)/pairs.o $(OBJ_PATH)/regular_6d_stencil.o $(OBJ_PATH)/dummy.o $(CPU_BIN): $(CPU_SRC) $(CPU_OBJ_PATH)/pairs.o $(CPU_OBJ_PATH)/regular_6d_stencil.o $(CPU_OBJ_PATH)/dummy.o
$(CC) $(CFLAGS) -o $(CPU_BIN) $(CPU_SRC) $(OBJ_PATH)/pairs.o $(OBJ_PATH)/regular_6d_stencil.o $(OBJ_PATH)/dummy.o $(DEBUG_FLAGS) $(CC) $(CFLAGS) -o $(CPU_BIN) $(CPU_SRC) $(CPU_OBJ_PATH)/pairs.o $(CPU_OBJ_PATH)/regular_6d_stencil.o $(CPU_OBJ_PATH)/dummy.o $(DEBUG_FLAGS)
$(GPU_BIN): $(GPU_SRC) $(OBJ_PATH)/pairs.o $(OBJ_PATH)/regular_6d_stencil.o $(GPU_BIN): $(GPU_SRC) $(GPU_OBJ_PATH)/pairs.o $(GPU_OBJ_PATH)/regular_6d_stencil.o $(GPU_OBJ_PATH)/cuda_runtime.o
$(NVCC) -c -o $(OBJ_PATH)/cuda_runtime.o runtime/devices/cuda.cu $(DEBUG_FLAGS) $(MPI_FLAGS) $(CUDA_FLAGS) $(NVCC) -c -o $(GPU_OBJ_PATH)/$(GPU_BIN).o $(GPU_SRC) $(DEBUG_FLAGS) $(MPI_FLAGS) $(NVCC_FLAGS) $(CUDA_FLAGS)
$(NVCC) -c -o $(OBJ_PATH)/$(GPU_BIN).o $(GPU_SRC) $(DEBUG_FLAGS) $(MPI_FLAGS) $(CUDA_FLAGS) $(CC) -o $(GPU_BIN) $(GPU_OBJ_PATH)/$(GPU_BIN).o $(GPU_OBJ_PATH)/cuda_runtime.o $(GPU_OBJ_PATH)/pairs.o $(GPU_OBJ_PATH)/regular_6d_stencil.o -lcudart -L$(CUDA_PATH)/lib64 $(CUDA_FLAGS) $(CFLAGS)
$(CC) -o $(GPU_BIN) $(OBJ_PATH)/$(GPU_BIN).o $(OBJ_PATH)/cuda_runtime.o $(OBJ_PATH)/pairs.o $(OBJ_PATH)/regular_6d_stencil.o -lcudart -L$(CUDA_PATH)/lib64 $(CUDA_FLAGS) $(CFLAGS)
clean: clean:
@echo "Cleaning..." @echo "Cleaning..."
rm -rf build $(CPU_BIN) $(GPU_BIN) lj.o $(CPU_SRC) $(GPU_SRC) dist pairs.egg-info functions functions.pdf $(OBJ_PATH)/pairs.o $(OBJ_PATH)/regular_6d_stencil.o $(OBJ_PATH)/cuda_runtime.o $(OBJ_PATH)/$(GPU_BIN).o rm -rf build $(CPU_BIN) $(GPU_BIN) lj.o $(CPU_SRC) $(GPU_SRC) dist pairs.egg-info functions functions.pdf $(CPU_OBJ_PATH) $(GPU_OBJ_PATH)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment