github.com/alwaysproblem/mlserving-tutorial@v0.0.0-20221124033215-121cfddbfbf4/TFserving/CustomOp/custom-op/Makefile (about) 1 CXX := g++ 2 NVCC := nvcc 3 PYTHON_BIN_PATH = python 4 5 ADD_INDEX_SRCS = $(wildcard add_index/cc/kernels/*.cc) $(wildcard add_index/cc/ops/*.cc) 6 ZERO_OUT_SRCS = $(wildcard tensorflow_zero_out/cc/kernels/*.cc) $(wildcard tensorflow_zero_out/cc/ops/*.cc) 7 TIME_TWO_SRCS = tensorflow_time_two/cc/kernels/time_two_kernels.cc $(wildcard tensorflow_time_two/cc/kernels/*.h) $(wildcard tensorflow_time_two/cc/ops/*.cc) 8 9 TF_CFLAGS := $(shell $(PYTHON_BIN_PATH) -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))') 10 TF_LFLAGS := $(shell $(PYTHON_BIN_PATH) -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') 11 12 CFLAGS = ${TF_CFLAGS} -fPIC -O2 -std=c++17 13 LDFLAGS = -shared ${TF_LFLAGS} 14 15 ADD_INDEX_TARGET_LIB = add_index/python/ops/_add_index_ops.so 16 ZERO_OUT_TARGET_LIB = tensorflow_zero_out/python/ops/_zero_out_ops.so 17 TIME_TWO_GPU_ONLY_TARGET_LIB = tensorflow_time_two/python/ops/_time_two_ops.cu.o 18 TIME_TWO_TARGET_LIB = tensorflow_time_two/python/ops/_time_two_ops.so 19 20 # add_index op for CPU 21 add_index_op: $(ADD_INDEX_TARGET_LIB) 22 23 $(ADD_INDEX_TARGET_LIB): $(ADD_INDEX_SRCS) 24 $(CXX) $(CFLAGS) -o $@ $^ ${LDFLAGS} 25 26 add_index_test: add_index/python/ops/add_index_ops_test.py add_index/python/ops/add_index_ops.py $(ADD_INDEX_TARGET_LIB) 27 $(PYTHON_BIN_PATH) add_index/python/ops/add_index_ops_test.py 28 29 add_index_pip_pkg: $(ADD_INDEX_TARGET_LIB) 30 ./build_pip_pkg.sh make artifacts 31 32 # zero_out op for CPU 33 zero_out_op: $(ZERO_OUT_TARGET_LIB) 34 35 $(ZERO_OUT_TARGET_LIB): $(ZERO_OUT_SRCS) 36 $(CXX) $(CFLAGS) -o $@ $^ ${LDFLAGS} 37 38 zero_out_test: tensorflow_zero_out/python/ops/zero_out_ops_test.py tensorflow_zero_out/python/ops/zero_out_ops.py $(ZERO_OUT_TARGET_LIB) 39 $(PYTHON_BIN_PATH) tensorflow_zero_out/python/ops/zero_out_ops_test.py 40 41 zero_out_pip_pkg: $(ZERO_OUT_TARGET_LIB) 42 ./build_pip_pkg.sh make artifacts 43 44 45 # time_two op for GPU 46 time_two_gpu_only: $(TIME_TWO_GPU_ONLY_TARGET_LIB) 47 48 $(TIME_TWO_GPU_ONLY_TARGET_LIB): tensorflow_time_two/cc/kernels/time_two_kernels.cu.cc 49 $(NVCC) -std=c++11 -c -o $@ $^ $(TF_CFLAGS) -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -DNDEBUG --expt-relaxed-constexpr 50 51 time_two_op: $(TIME_TWO_TARGET_LIB) 52 $(TIME_TWO_TARGET_LIB): $(TIME_TWO_SRCS) $(TIME_TWO_GPU_ONLY_TARGET_LIB) 53 $(CXX) $(CFLAGS) -o $@ $^ ${LDFLAGS} -D GOOGLE_CUDA=1 -I/usr/local/cuda/targets/x86_64-linux/include -L/usr/local/cuda/targets/x86_64-linux/lib -lcudart 54 55 time_two_test: tensorflow_time_two/python/ops/time_two_ops_test.py tensorflow_time_two/python/ops/time_two_ops.py $(TIME_TWO_TARGET_LIB) 56 $(PYTHON_BIN_PATH) tensorflow_time_two/python/ops/time_two_ops_test.py 57 58 clean: 59 rm -f $(ADD_INDEX_TARGET_LIB) $(ZERO_OUT_TARGET_LIB) $(TIME_TWO_GPU_ONLY_TARGET_LIB) $(TIME_TWO_TARGET_LIB)