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/*