1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
#-------------------------------------------------------------------------------
# GraphBLAS/CUDA/Makefile
#-------------------------------------------------------------------------------
# cuda 10.1+ is assumed
all: cudaTest
LIBS = -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64/stubs -lpthreads -lcudadevrt -lcudart -lnvrtc
INC += -I$(CUDA_DIR)/include -I../ -I../../Source -I../../Include -I../../Source/Template -I$(TEMPLATE_DIR) -Igoogletest/include
CUDA_OPTS = -O2 --cudart=shared --gpu-architecture=compute_75\
--relocatable-device-code true --device-c\
--std=c++11 -Xcompiler -fPIC
%.o: %.cu
nvcc -c $(I) $(CUDA_OPTS) $(INC) -o $@ $<
config:
nvidia-smi
nvcc --version
@echo " "
@echo "SO_NAME: " $(SO_NAME)
@echo "SO_OPTS: " $(SO_OPTS)
@echo "LIBS: " $(LIBS)
@echo "CUDA_OPTS: " $(CUDA_OPTS)
@echo "SRC: " $(SRC)
@echo "OBJ: " $(OBJ)
@echo "I: " $(I)
@echo " "
gcc --version
icc --version
clean:
rm -f *.o
rm -f stringify
rm -f cudaTest
rm -f testJit
.PHONY: clean
distclean: clean
rm -f *.so *.a
purge: distclean
################################################################################
GXX ?= g++
GCC ?= gcc
DOXYGEN ?= doxygen
CXXFLAGS ?= -O3 -Wall -g -fmessage-length=80
CFLAGS ?= -O2 -g -std=c11
CXX11 ?= 1
CUDA_DIR ?= /usr/local/cuda
CXXFLAGS += -pthread
ifeq ($(CXX11),1)
CXXFLAGS += -std=c++14
endif
EMBED_BEGIN = -rdynamic -Wl,-b,binary,
EMBED_END = ,-b,default
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
CXXFLAGS += -D LINUX
CUDA_LIB_DIR = $(CUDA_DIR)/lib64
else ifeq ($(UNAME_S),Darwin)
CUDA_LIB_DIR = $(CUDA_DIR)/lib
endif
TEMPLATE_DIR ?= ../templates
LIB += -ldl -L$(CUDA_LIB_DIR) -L$(CUDA_LIB_DIR)/stubs -lcuda -lcudadevrt -lcudart -lnvrtc
HEADERS = jitify.hpp dataFactory.hpp jitFactory.hpp jitTestFactory.hpp semiringFactory.hpp \
../type_name.hpp
TEMPLATES := $(wildcard $(TEMPLATE_DIR)/*.cu)
CU_OBJS := ../GB_jit_cache.o ../GB_jit_launcher.o
CFILES := $(wildcard ../*.c)
COBJS := $(patsubst %.c, %.o, $(CFILES) )
JIT_TEMP := $(patsubst %.cu, %.cu.jit, $(TEMPLATES))
GTEST_LIB := googletest/build/lib/libgtest.a googletest/build/lib/libgtest_main.a
%.cu.jit: %.cu
../stringify $? > $@
stringify: stringify.cpp
$(GXX) -o $@ $< -O3 -Wall
%.o: %.c
$(GXX) -c -o $@ $< $(CFLAGS) $(INC)
%.o: %.cpp
$(GXX) -c -o $@ $< $(CXXFLAGS) $(INC)
cu_link.o: $(CU_OBJS)
nvcc --gpu-architecture=compute_75 --device-link $(CU_OBJS) --output-file cu_link.o
testJit: ../tofix/testJit.cpp $(OBJS) $(HEADERS) $(JIT_TEMP)
$(GXX) -o $@ $< $(CXXFLAGS) $(INC) $(OBJS) $(LIB)
AxB_dot3_test_instances.hpp: testGen.py
python3 testGen.py
instances := AxB_dot3_test_instances.hpp
cudaTest: cudaTest.cpp.bak $(COBJS) $(OBJS) $(HEADERS) $(JIT_TEMP) cu_link.o AxB_dot3_cuda_tests.hpp.bak $(instances)
$(GXX) -o $@ $< $(CXXFLAGS) $(INC) $(COBJS) $(CU_OBJS) cu_link.o $(LIB) $(GTEST_LIB)
%.cu: %.cutmp
cp $? $@
doc: jitify.hpp Doxyfile
$(DOXYGEN) Doxyfile
.PHONY: doc
|