Page MenuHomec4science

Makefile
No OneTemporary

File Metadata

Created
Sun, Dec 1, 12:00

Makefile

PROGRAM_NAME := ChiBenchmark
#CXX=g++ -lm -ffast-math -ftree-loop-vectorize
CXX=icpc
program_CXX_SRCS := $(wildcard *.cpp)
program_CXX_OBJS := ${program_CXX_SRCS:.cpp=.o}
#program_CXX_SRCS += $(wildcard ../../*.c) #Find C source files from additonal directories
program_C_OBJS := ${program_C_SRCS:.c=.o}
#
program_CU_SRCS := $(wildcard *.cu)
#program_CU_SRCS += $(wildcard ../../*.cu) #Find CUDA source files from additional directories
#program_CU_HEADERS := $(wildcard *.cuh) #Optional: Include .cuh files as dependencies
#program_CU_HEADERS += $(wildcard ../../*.cuh) #Find .cuh files from additional directories
program_CU_OBJS := ${program_CU_SRCS:.cu=.cuo}
#
program_INCLUDE_DIRS := . /usr/local/cuda/include/ #C++ Include directories
program_INCLUDE_DIRS += /usr/include/cfitsio/
program_INCLUDE_DIRS += /users/fgilles/Projects/Libs/cfitsio/include
program_INCLUDE_DIRS += /users/fgilles/bin/iaca-lin32/include
program_INCLUDE_DIRS += /users/fgilles/GPU-Projects/lenstool-master/src
program_INCLUDE_DIRS += /home/epfl/cerschae/lenstool-hpc/src
#program_CU_INCLUDE_DIRS := /home/users/amclaugh/CUB/cub-1.3.2/ #CUDA Include directories
#
program_INCLUDE_LIBS := /usr/lib64/ #Include libraries
program_INCLUDE_LIBS += /users/fgilles/Projects/Libs/cfitsio/lib #Include libraries
program_INCLUDE_LIBS += /users/fgilles/GPU-Projects/lenstool-master/src
program_INCLUDE_LIBS += /home/epfl/cerschae/lenstool-hpc/src
program_INCLUDE_LIBS += /home/epfl/cerschae/LENSTOOL/lenstool-6.8.1/src
#
# Compiler flags
CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
CPPFLAGS += $(foreach includelib,$(program_INCLUDE_LIBS),-L$(includelib) -lcfitsio)
#CPPFLAGS += -qopenmp -march=core-avx2 -g -O3 -std=c++0x -Wall -pedantic
#CPPFLAGS += -llenstoolhpc -qopenmp -xHost -g -O3 -std=c++0x -Wall -pedantic
CPPFLAGS += -llenstoolhpc -qopenmp -axMIC-AVX512 -g -O3 -std=c++0x -Wall -pedantic
#CPPFLAGS += -qopt-prefetch-distance=64,8 -qopt-streaming-cache-evict=0 -llenstoolhpc -qopenmp -xMIC-AVX512 -g -O3 -std=c++0x -Wall -pedantic
#CPPFLAGS += -llenstoolhpc -qopenmp -xHost -g -O3 -std=c++0x -Wall -pedantic
GEN_SM35 := -gencode=arch=compute_35,code=\"sm_35,compute_35\" #Target CC 3.5, for example
NVFLAGS := -O3 -g -G -arch sm_20 -Xptxas="-v" -rdc=true -ccbin=icpc -Xcompiler -fopenmp #rdc=true needed for separable compilation
#NVFLAGS += --maxrregcount=16
NV2FLAGS := -O3 -g -G -arch sm_20 -Xptxas="-v" -rdc=true -Xcompiler -fopenmp #rdc=true needed for separable compilation
#NV2FLAGS += --maxrregcount=16
NV2FLAGS += -ccbin=icpc -Xcompiler "$(CPPFLAGS)"
CUO_O_OBJECTS := ${program_CU_OBJS:.cuo=.cuo.o}
OBJECTS = $(program_CU_OBJS) $(program_CXX_OBJS) $(program_C_OBJS)
.PHONY: all clean distclean
#
all: $(PROGRAM_NAME)
#
debug: CXXFLAGS = -g -O0 -std=c++0x -Wall -pedantic -DDEBUG $(EXTRA_FLAGS)
debug: $(PROGRAM_NAME)
# Rule for compilation of CUDA source (C++ source can be handled automatically)
%.cuo: %.cu %.cuh
nvcc $(NVFLAGS) -o $@ -dc $<
$(PROGRAM_NAME): $(OBJECTS)
#nvcc $(NV2FLAGS) -o $@ $(program_CXX_OBJS) $(program_C_OBJS) $(program_CU_OBJS)
@ for cu_obj in $(program_CU_OBJS); \
do \
mv $$cu_obj $$cu_obj.o; \
done #append a .o suffix for nvcc
nvcc $(NV2FLAGS) -o $@ $(program_CXX_OBJS) $(program_C_OBJS) $(CUO_O_OBJECTS)
@ for cu_obj in $(CUO_O_OBJECTS); \
do \
mv $$cu_obj $${cu_obj%.*}; \
done #remove the .o for make
clean:
@- $(RM) $(PROGRAM_NAME) $(OBJECTS) *~ *.o *.optrpt chi
distclean: clean

Event Timeline