Lancelot / Makefile
Makefile
Raw
CUDALIBS = -lcudart -lcupti -lcuda

CUDA_PATH       ?= /usr/local/cuda
CUDA_INC_PATH   ?= $(CUDA_PATH)/include
CUDA_BIN_PATH   ?= $(CUDA_PATH)/bin

NVCC = nvcc

#SM_TARGETS   = -gencode=arch=compute_52,code=\"sm_52,compute_52\" 
SM_DEF     = -DSM520

SM_TARGETS   = -gencode=arch=compute_70,code=\"sm_70,compute_70\" 
#SM_DEF     = -DSM700

#GENCODE_SM50    := -gencode arch=compute_52,code=sm_52
GENCODE_SM70    := -gencode arch=compute_70,code=sm_70
GENCODE_FLAGS   := $(GENCODE_SM70)

#NVCCFLAGS += --std=c++11 $(SM_DEF) -Xptxas="-dlcm=cg -v" -lineinfo -Xcudafe -\# 
NVCCFLAGS += --std=c++14 $(SM_DEF) -Xptxas="-dlcm=cg -v" -lineinfo -Xcudafe -\# 
OPENMPFLAGS = -Xcompiler -fopenmp -lgomp

SRC = src
BIN = bin
OBJ = obj
INC = includes

CUB_DIR = cub/
INCLUDES = -I$(CUB_DIR) -I$(CUB_DIR)test -I. -I$(INC)

CFLAGS = -O3 -march=native -std=c++14 -ffast-math
LDFLAGS = -ltbb
CINCLUDES = -I$(INC)
CXX = clang++

$(OBJ)/%.o: $(SRC)/%.cu
	$(NVCC) -lcurand -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(BIN)/%: $(OBJ)/%.o
	$(NVCC) $(CUDALIBS) -ltbb -lnccl $(SM_TARGETS) -lcurand $^ -o $@

$(OBJ)/cpu/%.o: $(SRC)/cpu/%.cpp
	$(NVCC) -lcurand $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(BIN)/cpu/%: $(OBJ)/cpu/%.o
	$(NVCC) -ltbb $(SM_TARGETS) -lcurand $^ -o $@

$(OBJ)/%.o: $(SRC)/%.cpp
	$(NVCC) -lcurand $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/CostModel.o: $(SRC)/gpudb/CostModel.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/QueryOptimizer.o: $(SRC)/gpudb/QueryOptimizer.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/QueryProcessing.o: $(SRC)/gpudb/QueryProcessing.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/CPUGPUProcessing.o: $(SRC)/gpudb/CPUGPUProcessing.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/MultiGPUProcessing.o: $(SRC)/gpudb/MultiGPUProcessing.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/KernelLaunch.o: $(SRC)/gpudb/KernelLaunch.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/CPUProcessing.o: $(SRC)/gpudb/CPUProcessing.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(OBJ)/gpudb/main_multi_gpu.o: $(SRC)/gpudb/main_multi_gpu.cu
	$(NVCC) -lcurand -ltbb -lnccl $(SM_TARGETS) $(NVCCFLAGS) $(CPU_ARCH) $(INCLUDES) -O3 -dc $< -o $@

$(BIN)/gpudb/main_multi_gpu: $(OBJ)/gpudb/main_multi_gpu.o $(OBJ)/gpudb/CacheManager.o $(OBJ)/gpudb/QueryOptimizer.o $(OBJ)/gpudb/CPUProcessing.o $(OBJ)/gpudb/MultiGPUProcessing.o $(OBJ)/gpudb/QueryProcessing.o $(OBJ)/gpudb/CostModel.o $(OBJ)/gpudb/KernelLaunch.o
	$(NVCC) $(CUDALIBS) $(SM_TARGETS) -ltbb -lnccl -lcurand $^ -o $@

$(BIN)/gpudb/gen_synthetic_bench: src/gpudb/gen_synthetic_bench.cu src/gpudb/minmax.cpp src/gpudb/minmax_newbench.cpp src/gpudb/minmaxsort.cpp src/gpudb/sort_column_fast.cu
	$(NVCC) src/gpudb/gen_synthetic_bench.cu -lcurand -ltbb -o bin/gpudb/gen_synthetic_bench
	$(NVCC) src/gpudb/minmax.cpp -lcurand -ltbb -o bin/gpudb/minmax
	$(NVCC) src/gpudb/minmaxsort.cpp -lcurand -ltbb -o bin/gpudb/minmaxsort
	$(NVCC) src/gpudb/sort_column_fast.cu -lcurand -ltbb -o bin/gpudb/sort_column_fast

minmax: src/gpudb/minmax.cpp src/gpudb/minmax_newbench.cpp src/gpudb/minmaxsort.cpp
	$(NVCC) src/gpudb/minmax.cpp -lcurand -ltbb -o bin/gpudb/minmax
	$(NVCC) src/gpudb/minmaxsort.cpp -lcurand -ltbb -o bin/gpudb/minmaxsort

sort: test/ssb/sort.c
	gcc -o sort $< -std=c99 

NVCC_VER=11.5
CUB_VER=1.8.0

ifeq ($(NVCC_VER),11.5)
setup:
	mkdir -p bin/ssb obj/ssb
	mkdir -p bin/ops obj/ops
	mkdir -p bin/cpu/ssb obj/cpu/ssb
	mkdir -p bin/gpudb obj/gpudb
else
setup:
	if [ ! -d "cub"  ]; then \
     wget https://github.com/NVlabs/cub/archive/$(CUB_VER).zip; \
     unzip $(CUB_VER).zip; \
     mv cub-$(CUB_VER) cub; \
     rm $(CUB_VER).zip; \
	fi
	mkdir -p bin/ssb obj/ssb
	mkdir -p bin/ops obj/ops
	mkdir -p bin/cpu/ssb obj/cpu/ssb
	mkdir -p bin/gpudb obj/gpudb
endif

clean:
	rm -rf bin/gpudb/* obj/gpudb/*