onnxruntime-tvm/Makefile

398 строки
11 KiB
Makefile
Исходник Обычный вид История

ROOTDIR = $(CURDIR)
ifndef config
ifneq ("$(wildcard ./config.mk)","")
config ?= config.mk
else
config ?= make/config.mk
endif
endif
include $(config)
2016-10-15 04:07:37 +03:00
2018-05-26 04:08:51 +03:00
.PHONY: clean install installdev all test doc pylint cpplint lint\
verilog cython cython2 cython3 web topi nnvm runtime
2016-10-26 21:32:43 +03:00
ifndef DMLC_CORE_PATH
DMLC_CORE_PATH = $(ROOTDIR)/dmlc-core
endif
ifndef DLPACK_PATH
DLPACK_PATH = $(ROOTDIR)/dlpack
endif
UNAME_S := $(shell uname -s)
# The flags
2017-09-10 21:32:47 +03:00
LLVM_CFLAGS= -fno-rtti -DDMLC_ENABLE_RTTI=0 -DDMLC_USE_FOPEN64=0
LDFLAGS = -pthread -lm -ldl -Wl,-Bsymbolic-functions
INCLUDE_FLAGS = -Iinclude -I$(DLPACK_PATH)/include -I$(DMLC_CORE_PATH)/include -IHalideIR/src -Itopi/include
CFLAGS = -std=c++11 -Wall -O2 $(INCLUDE_FLAGS) -fPIC
PKG_LDFLAGS =
FRAMEWORKS =
OBJCFLAGS = -fno-objc-arc
EMCC_FLAGS= -std=c++11 -DDMLC_LOG_STACK_TRACE=0\
-Oz -s RESERVED_FUNCTION_POINTERS=2 -s MAIN_MODULE=1 -s NO_EXIT_RUNTIME=1\
-s TOTAL_MEMORY=1073741824\
-s EXTRA_EXPORTED_RUNTIME_METHODS="['cwrap','getValue','setValue','addFunction']"\
-s USE_GLFW=3 -s USE_WEBGL2=1 -lglfw\
$(INCLUDE_FLAGS)
2018-05-26 04:08:51 +03:00
# llvm configuration
ifdef LLVM_CONFIG
LLVM_VERSION=$(shell $(LLVM_CONFIG) --version| cut -b 1,3)
LLVM_INCLUDE=$(filter -I%, $(shell $(LLVM_CONFIG) --cxxflags))
LDFLAGS += $(shell $(LLVM_CONFIG) --ldflags --libs --system-libs)
LLVM_CFLAGS += $(LLVM_INCLUDE) -DTVM_LLVM_VERSION=$(LLVM_VERSION)
else
LLVM_VERSION=00
endif
# The source code dependencies
LIB_HALIDEIR = HalideIR/lib/libHalideIR.a
2016-10-26 21:32:43 +03:00
CC_SRC = $(filter-out src/contrib/%.cc src/runtime/%.cc src/codgen/llvm/%.cc,\
$(wildcard src/*/*.cc src/*/*/*.cc))
LLVM_SRC = $(wildcard src/codegen/llvm/*.cc src/codegen/llvm/*/*.cc)
METAL_SRC = $(wildcard src/runtime/metal/*.mm)
CUDA_SRC = $(wildcard src/runtime/cuda/*.cc)
ROCM_SRC = $(wildcard src/runtime/rocm/*.cc)
OPENCL_SRC = $(wildcard src/runtime/opencl/*.cc)
OPENGL_SRC = $(wildcard src/runtime/opengl/*.cc)
VULKAN_SRC = $(wildcard src/runtime/vulkan/*.cc)
2018-04-10 08:24:19 +03:00
SGX_SRC = $(wildcard src/runtime/sgx/untrusted/*.cc)
RPC_SRC = $(wildcard src/runtime/rpc/*.cc)
GRAPH_SRC = $(wildcard src/runtime/graph/*.cc)
RUNTIME_SRC = $(wildcard src/runtime/*.cc)
2018-05-26 04:08:51 +03:00
# TOPI
Porting schedules (except convolutions) to C++ (#763) * Ported injective schedules to C++. Added some elementwise ops. * Fix lint errors * Added reduction ops and schedules * Fix lint errors * Fix lint errors * Fix lint errors * Added transform ops * Fix lint errors * Fix lint errors * Added softmax, log_softmax, leaky_relu and flatten ops. Fixed issue where TVM_DECLARE_INTRIN_UNARY used the PureExtern flag instead of PureIntrinsic. Added softmax CUDA schedule. * Fix lint * Fix lint * Added binary_dense, batch_norm_inference, dense, dilate, scale_shift_*, global_pool and pool ops. Extended pad to allow specifying pad_value. Fixed issue where pad would throw if padding was zero in all dimensions. * Fix lint * Fix lint * Added CUDA schedules for dense, pool and global_pool * Added extern schedules for generic and CUDA * Fix lint * Added x86 binary schedules * Fix lint * Added rocm dense schedule. Added rocBLAS and cuBLAS support to dense ops * Added pow ops. Added x86 default and injective schedules * Fix lint * Fix lint * Fix lint * Fix lint * Fix lint * Fix indent * Removed schedules directory * Changed left_shift, right_shift to operators. Changed pad_value in pad() to remove pointer usage * Fixed usage of pad in nn/pooling.h. Fixed declaration of operator>> * Fixed comments for shift operators * Added comments to utility functions * Added TOPI C++ library, exporting broadcast_add op * Fix lint * Share libinfo.py with TVM * Fix lint * Add other broadcast ops * Fix lint * Fix imports in topi * Fix lib names * Fixed build issue where windows builds don't apply correct definitions * Removed TVM_EXPORTS from topi library * Attempted CI build fix * Add topi lib to tvm_multilib * Fix Jenkinsfile * Added TOPI build target to Makefile * Fix nn op namespaces. * Fix lint * Renamed TOPI lib to libtvm_topi * Removed _ffi/base.py * Remove _ffi from topi, now shared with tvm. * Make libtvm_topi loading optional * Fix compiler warnings * Fix lint * Fix lint * Fix lint * Fix build error by making new libs argument to Target optional * Added C++ Target type interop. Added registration of remaining C++ ops and schedules. Added test of broadcast ops * Fix lint * Fix lint * Fix compile error * Fix compiler warnings * Fix compiler warnings * Fixed int vector interop. Fixed argmin incorrectly invoking argmax. Fixed corner case in default schedules of attempting to fuse 0 length axes. Added tests for reduce ops. * Refactored reduce builders * Fixed typos in topi.cc. Added basic test. * Fixed padding size error. Added dense, dilate, pooling tests * Fixed issue where clip would output a different dtype to the input. Added split_sections op to cover the other mode of the python split op. Added tests. * Changed extension type numbers to avoid clash with NNVM * Fix lint * Fix compiler warnings * Removed use of std::vector from the public TOPI API * Fix lint * Add TOPI C++ tests to CI * Fixed detail namespacing. Improved comments.
2018-01-28 08:57:13 +03:00
TOPI_SRC = $(wildcard topi/src/*.cc)
# Objectives
LLVM_BUILD = build/llvm${LLVM_VERSION}
LLVM_OBJ = $(patsubst src/%.cc, ${LLVM_BUILD}/%.o, $(LLVM_SRC))
METAL_OBJ = $(patsubst src/%.mm, build/%.o, $(METAL_SRC))
CUDA_OBJ = $(patsubst src/%.cc, build/%.o, $(CUDA_SRC))
ROCM_OBJ = $(patsubst src/%.cc, build/%.o, $(ROCM_SRC))
OPENCL_OBJ = $(patsubst src/%.cc, build/%.o, $(OPENCL_SRC))
OPENGL_OBJ = $(patsubst src/%.cc, build/%.o, $(OPENGL_SRC))
VULKAN_OBJ = $(patsubst src/%.cc, build/%.o, $(VULKAN_SRC))
2018-04-10 08:24:19 +03:00
SGX_OBJ = $(patsubst src/%.cc, build/%.o, $(SGX_SRC)) build/runtime/sgx/untrusted/tvm_u.o
RPC_OBJ = $(patsubst src/%.cc, build/%.o, $(RPC_SRC))
GRAPH_OBJ = $(patsubst src/%.cc, build/%.o, $(GRAPH_SRC))
CC_OBJ = $(patsubst src/%.cc, build/%.o, $(CC_SRC)) $(LLVM_OBJ)
RUNTIME_OBJ = $(patsubst src/%.cc, build/%.o, $(RUNTIME_SRC))
2018-05-26 04:08:51 +03:00
TOPI_OBJ = $(patsubst topi/src/%.cc, build/topi/%.o, $(TOPI_SRC))
CONTRIB_OBJ =
2016-10-15 04:07:37 +03:00
# Deps
ALL_DEP = $(CC_OBJ) $(CONTRIB_OBJ) $(LIB_HALIDEIR)
RUNTIME_DEP = $(RUNTIME_OBJ)
Porting schedules (except convolutions) to C++ (#763) * Ported injective schedules to C++. Added some elementwise ops. * Fix lint errors * Added reduction ops and schedules * Fix lint errors * Fix lint errors * Fix lint errors * Added transform ops * Fix lint errors * Fix lint errors * Added softmax, log_softmax, leaky_relu and flatten ops. Fixed issue where TVM_DECLARE_INTRIN_UNARY used the PureExtern flag instead of PureIntrinsic. Added softmax CUDA schedule. * Fix lint * Fix lint * Added binary_dense, batch_norm_inference, dense, dilate, scale_shift_*, global_pool and pool ops. Extended pad to allow specifying pad_value. Fixed issue where pad would throw if padding was zero in all dimensions. * Fix lint * Fix lint * Added CUDA schedules for dense, pool and global_pool * Added extern schedules for generic and CUDA * Fix lint * Added x86 binary schedules * Fix lint * Added rocm dense schedule. Added rocBLAS and cuBLAS support to dense ops * Added pow ops. Added x86 default and injective schedules * Fix lint * Fix lint * Fix lint * Fix lint * Fix lint * Fix indent * Removed schedules directory * Changed left_shift, right_shift to operators. Changed pad_value in pad() to remove pointer usage * Fixed usage of pad in nn/pooling.h. Fixed declaration of operator>> * Fixed comments for shift operators * Added comments to utility functions * Added TOPI C++ library, exporting broadcast_add op * Fix lint * Share libinfo.py with TVM * Fix lint * Add other broadcast ops * Fix lint * Fix imports in topi * Fix lib names * Fixed build issue where windows builds don't apply correct definitions * Removed TVM_EXPORTS from topi library * Attempted CI build fix * Add topi lib to tvm_multilib * Fix Jenkinsfile * Added TOPI build target to Makefile * Fix nn op namespaces. * Fix lint * Renamed TOPI lib to libtvm_topi * Removed _ffi/base.py * Remove _ffi from topi, now shared with tvm. * Make libtvm_topi loading optional * Fix compiler warnings * Fix lint * Fix lint * Fix lint * Fix build error by making new libs argument to Target optional * Added C++ Target type interop. Added registration of remaining C++ ops and schedules. Added test of broadcast ops * Fix lint * Fix lint * Fix compile error * Fix compiler warnings * Fix compiler warnings * Fixed int vector interop. Fixed argmin incorrectly invoking argmax. Fixed corner case in default schedules of attempting to fuse 0 length axes. Added tests for reduce ops. * Refactored reduce builders * Fixed typos in topi.cc. Added basic test. * Fixed padding size error. Added dense, dilate, pooling tests * Fixed issue where clip would output a different dtype to the input. Added split_sections op to cover the other mode of the python split op. Added tests. * Changed extension type numbers to avoid clash with NNVM * Fix lint * Fix compiler warnings * Removed use of std::vector from the public TOPI API * Fix lint * Add TOPI C++ tests to CI * Fixed detail namespacing. Improved comments.
2018-01-28 08:57:13 +03:00
TOPI_DEP = $(TOPI_OBJ)
ifeq ($(UNAME_S), Darwin)
PKG_LDFLAGS += -undefined dynamic_lookup
endif
# Dependency specific rules
ifdef CUDA_PATH
NVCC=$(CUDA_PATH)/bin/nvcc
CFLAGS += -I$(CUDA_PATH)/include
ifeq ($(UNAME_S),Darwin)
LDFLAGS += -L$(CUDA_PATH)/lib
else
LDFLAGS += -L$(CUDA_PATH)/lib64
endif
endif
ifeq ($(USE_CUDA), 1)
CFLAGS += -DTVM_CUDA_RUNTIME=1
LDFLAGS += -lcuda -lcudart -lnvrtc
RUNTIME_DEP += $(CUDA_OBJ)
else
CFLAGS += -DTVM_CUDA_RUNTIME=0
endif
ifdef ROCM_PATH
CFLAGS += -I$(ROCM_PATH)/include
LDFLAGS += -L$(ROCM_PATH)/lib
endif
ifeq ($(USE_ROCM), 1)
CFLAGS += -DTVM_ROCM_RUNTIME=1 -D__HIP_PLATFORM_HCC__=1
LDFLAGS += -lhip_hcc
RUNTIME_DEP += $(ROCM_OBJ)
else
CFLAGS += -DTVM_ROCM_RUNTIME=0
endif
ifeq ($(USE_OPENCL), 1)
2017-01-18 08:13:16 +03:00
CFLAGS += -DTVM_OPENCL_RUNTIME=1
ifeq ($(UNAME_S), Darwin)
FRAMEWORKS += -framework OpenCL
else
LDFLAGS += -lOpenCL
endif
RUNTIME_DEP += $(OPENCL_OBJ)
ifdef OPENCL_PATH
CFLAGS += -I$(OPENCL_PATH)/include
LDFLAGS += -L$(OPENCL_PATH)/lib
endif
2017-01-18 08:13:16 +03:00
else
CFLAGS += -DTVM_OPENCL_RUNTIME=0
endif
ifdef VULKAN_SDK
CFLAGS += -I$(VULKAN_SDK)/include
LDFLAGS += -L$(VULKAN_SDK)/lib
LDFLAGS += -L$(VULKAN_SDK)/lib/spirv-tools
endif
ifeq ($(USE_VULKAN), 1)
CFLAGS += -DTVM_VULKAN_RUNTIME=1
LDFLAGS += -lvulkan -lSPIRV-Tools
RUNTIME_DEP += $(VULKAN_OBJ)
else
CFLAGS += -DTVM_VULKAN_RUNTIME=0
endif
ifeq ($(USE_OPENGL), 1)
CFLAGS += -DTVM_OPENGL_RUNTIME=1
EMCC_FLAGS += -DTVM_OPENGL_RUNTIME=1
ifeq ($(UNAME_S), Darwin)
FRAMEWORKS += -framework OpenGL
else
LDFLAGS += -lGL -lglfw
endif
RUNTIME_DEP += $(OPENGL_OBJ)
else
CFLAGS += -DTVM_OPENGL_RUNTIME=0
endif
ifeq ($(USE_METAL), 1)
CFLAGS += -DTVM_METAL_RUNTIME=1
LDFLAGS += -lobjc
RUNTIME_DEP += $(METAL_OBJ)
FRAMEWORKS += -framework Metal -framework Foundation
else
CFLAGS += -DTVM_METAL_RUNTIME=0
endif
2018-04-10 08:24:19 +03:00
ifeq ($(USE_SGX), 1)
EDGER8R = $(SGX_SDK)/bin/x64/sgx_edger8r
ifneq ($(SGX_MODE), HW)
sgx_sim := _sim
endif
urts_library_name := sgx_urts$(sgx_sim)
CFLAGS += -DTVM_SGX_RUNTIME=1
SGX_CFLAGS = -include "build/runtime/sgx/untrusted/tvm_u.h" -I$(SGX_SDK)/include
LDFLAGS += -L$(SGX_SDK)/lib64 -l$(urts_library_name)
RUNTIME_DEP += $(SGX_OBJ)
else
CFLAGS += -DTVM_SGX_RUNTIME=0
endif
ifeq ($(USE_RPC), 1)
RUNTIME_DEP += $(RPC_OBJ)
endif
ifeq ($(USE_GRAPH_RUNTIME), 1)
RUNTIME_DEP += $(GRAPH_OBJ)
endif
ifeq ($(USE_GRAPH_RUNTIME_DEBUG), 1)
CFLAGS += -DTVM_GRAPH_RUNTIME_DEBUG
endif
include make/contrib/cblas.mk
2018-05-12 18:56:35 +03:00
include make/contrib/sort.mk
include make/contrib/random.mk
include make/contrib/nnpack.mk
include make/contrib/cudnn.mk
include make/contrib/miopen.mk
include make/contrib/mps.mk
include make/contrib/cublas.mk
include make/contrib/rocblas.mk
2017-04-18 19:39:42 +03:00
ifdef ADD_CFLAGS
CFLAGS += $(ADD_CFLAGS)
endif
2017-04-18 19:39:42 +03:00
ifdef ADD_LDFLAGS
LDFLAGS += $(ADD_LDFLAGS)
endif
2017-01-18 08:13:16 +03:00
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
ifeq ($(OS),Windows_NT)
JVM_PKG_PROFILE := windows
SHARED_LIBRARY_SUFFIX := dll
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Darwin)
JVM_PKG_PROFILE := osx-x86_64
SHARED_LIBRARY_SUFFIX := dylib
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
else
JVM_PKG_PROFILE := linux-x86_64
SHARED_LIBRARY_SUFFIX := so
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
endif
endif
JVM_TEST_ARGS := $(if $(JVM_TEST_ARGS),$(JVM_TEST_ARGS),-DskipTests -Dcheckstyle.skip=true)
ifeq ($(USE_CUDA), 1)
JVM_PKG_PROFILE := $(JVM_PKG_PROFILE)-gpu
else ifeq ($(USE_OPENCL), 1)
JVM_PKG_PROFILE := $(JVM_PKG_PROFILE)-gpu
else ifeq ($(USE_METAL), 1)
JVM_PKG_PROFILE := $(JVM_PKG_PROFILE)-gpu
else
JVM_PKG_PROFILE := $(JVM_PKG_PROFILE)-cpu
endif
BUILD_TARGETS ?= lib/libtvm.$(SHARED_LIBRARY_SUFFIX) \
2018-05-26 04:08:51 +03:00
lib/libtvm_runtime.$(SHARED_LIBRARY_SUFFIX) \
lib/libtvm_topi.$(SHARED_LIBRARY_SUFFIX)
all: ${BUILD_TARGETS}
runtime: lib/libtvm_runtime.$(SHARED_LIBRARY_SUFFIX)
web: lib/libtvm_web_runtime.js lib/libtvm_web_runtime.bc
Porting schedules (except convolutions) to C++ (#763) * Ported injective schedules to C++. Added some elementwise ops. * Fix lint errors * Added reduction ops and schedules * Fix lint errors * Fix lint errors * Fix lint errors * Added transform ops * Fix lint errors * Fix lint errors * Added softmax, log_softmax, leaky_relu and flatten ops. Fixed issue where TVM_DECLARE_INTRIN_UNARY used the PureExtern flag instead of PureIntrinsic. Added softmax CUDA schedule. * Fix lint * Fix lint * Added binary_dense, batch_norm_inference, dense, dilate, scale_shift_*, global_pool and pool ops. Extended pad to allow specifying pad_value. Fixed issue where pad would throw if padding was zero in all dimensions. * Fix lint * Fix lint * Added CUDA schedules for dense, pool and global_pool * Added extern schedules for generic and CUDA * Fix lint * Added x86 binary schedules * Fix lint * Added rocm dense schedule. Added rocBLAS and cuBLAS support to dense ops * Added pow ops. Added x86 default and injective schedules * Fix lint * Fix lint * Fix lint * Fix lint * Fix lint * Fix indent * Removed schedules directory * Changed left_shift, right_shift to operators. Changed pad_value in pad() to remove pointer usage * Fixed usage of pad in nn/pooling.h. Fixed declaration of operator>> * Fixed comments for shift operators * Added comments to utility functions * Added TOPI C++ library, exporting broadcast_add op * Fix lint * Share libinfo.py with TVM * Fix lint * Add other broadcast ops * Fix lint * Fix imports in topi * Fix lib names * Fixed build issue where windows builds don't apply correct definitions * Removed TVM_EXPORTS from topi library * Attempted CI build fix * Add topi lib to tvm_multilib * Fix Jenkinsfile * Added TOPI build target to Makefile * Fix nn op namespaces. * Fix lint * Renamed TOPI lib to libtvm_topi * Removed _ffi/base.py * Remove _ffi from topi, now shared with tvm. * Make libtvm_topi loading optional * Fix compiler warnings * Fix lint * Fix lint * Fix lint * Fix build error by making new libs argument to Target optional * Added C++ Target type interop. Added registration of remaining C++ ops and schedules. Added test of broadcast ops * Fix lint * Fix lint * Fix compile error * Fix compiler warnings * Fix compiler warnings * Fixed int vector interop. Fixed argmin incorrectly invoking argmax. Fixed corner case in default schedules of attempting to fuse 0 length axes. Added tests for reduce ops. * Refactored reduce builders * Fixed typos in topi.cc. Added basic test. * Fixed padding size error. Added dense, dilate, pooling tests * Fixed issue where clip would output a different dtype to the input. Added split_sections op to cover the other mode of the python split op. Added tests. * Changed extension type numbers to avoid clash with NNVM * Fix lint * Fix compiler warnings * Removed use of std::vector from the public TOPI API * Fix lint * Add TOPI C++ tests to CI * Fixed detail namespacing. Improved comments.
2018-01-28 08:57:13 +03:00
topi: lib/libtvm_topi.$(SHARED_LIBRARY_SUFFIX)
2018-06-07 19:35:30 +03:00
nnvm:
$(MAKE) -C nnvm
2018-05-26 04:08:51 +03:00
2016-10-16 03:35:32 +03:00
include tests/cpp/unittest.mk
test: $(TEST)
include verilog/verilog.mk
verilog: $(VER_LIBS)
# Special rules for LLVM related modules.
${LLVM_BUILD}/codegen/llvm/%.o: src/codegen/llvm/%.cc
2016-10-15 04:07:37 +03:00
@mkdir -p $(@D)
$(CXX) $(CFLAGS) $(LLVM_CFLAGS) -MM -MT ${LLVM_BUILD}/codegen/llvm/$*.o $< >${LLVM_BUILD}/codegen/llvm/$*.d
$(CXX) -c $(CFLAGS) $(LLVM_CFLAGS) -c $< -o $@
2016-10-15 04:07:37 +03:00
build/runtime/metal/%.o: src/runtime/metal/%.mm
@mkdir -p $(@D)
2017-07-19 08:20:36 +03:00
$(CXX) $(OBJCFLAGS) $(CFLAGS) -MM -MT build/runtime/metal/$*.o $< >build/runtime/metal/$*.d
$(CXX) $(OBJCFLAGS) -c $(CFLAGS) -c $< -o $@
2018-04-10 08:24:19 +03:00
build/runtime/sgx/untrusted/tvm_u.h: src/runtime/sgx/tvm.edl
@mkdir -p $(@D)
$(EDGER8R) $< --untrusted --untrusted-dir $(@D) --search-path $(SGX_SDK)/include
mv $@ $@.in
awk 'NR==4{print "#include <tvm/runtime/c_runtime_api.h>"}1' $@.in > $@
build/runtime/sgx/untrusted/tvm_u.c: build/runtime/sgx/untrusted/tvm_u.h
build/runtime/sgx/untrusted/tvm_u.o: build/runtime/sgx/untrusted/tvm_u.c
$(CC) $(CFLAGS) $(SGX_CFLAGS) -c $< -o $@
build/runtime/sgx/untrusted/%.o: src/runtime/sgx/untrusted/%.cc build/runtime/sgx/untrusted/tvm_u.h
$(CXX) $(CFLAGS) $(SGX_CFLAGS) -MM -MT build/$*.o $< >build/$*.d
$(CXX) -c $(CFLAGS) $(SGX_CFLAGS) -c $< -o $@
build/%.o: src/%.cc
@mkdir -p $(@D)
$(CXX) $(CFLAGS) -MM -MT build/$*.o $< >build/$*.d
$(CXX) -c $(CFLAGS) -c $< -o $@
2018-05-26 04:08:51 +03:00
build/topi/%.o: topi/src/%.cc
Porting schedules (except convolutions) to C++ (#763) * Ported injective schedules to C++. Added some elementwise ops. * Fix lint errors * Added reduction ops and schedules * Fix lint errors * Fix lint errors * Fix lint errors * Added transform ops * Fix lint errors * Fix lint errors * Added softmax, log_softmax, leaky_relu and flatten ops. Fixed issue where TVM_DECLARE_INTRIN_UNARY used the PureExtern flag instead of PureIntrinsic. Added softmax CUDA schedule. * Fix lint * Fix lint * Added binary_dense, batch_norm_inference, dense, dilate, scale_shift_*, global_pool and pool ops. Extended pad to allow specifying pad_value. Fixed issue where pad would throw if padding was zero in all dimensions. * Fix lint * Fix lint * Added CUDA schedules for dense, pool and global_pool * Added extern schedules for generic and CUDA * Fix lint * Added x86 binary schedules * Fix lint * Added rocm dense schedule. Added rocBLAS and cuBLAS support to dense ops * Added pow ops. Added x86 default and injective schedules * Fix lint * Fix lint * Fix lint * Fix lint * Fix lint * Fix indent * Removed schedules directory * Changed left_shift, right_shift to operators. Changed pad_value in pad() to remove pointer usage * Fixed usage of pad in nn/pooling.h. Fixed declaration of operator>> * Fixed comments for shift operators * Added comments to utility functions * Added TOPI C++ library, exporting broadcast_add op * Fix lint * Share libinfo.py with TVM * Fix lint * Add other broadcast ops * Fix lint * Fix imports in topi * Fix lib names * Fixed build issue where windows builds don't apply correct definitions * Removed TVM_EXPORTS from topi library * Attempted CI build fix * Add topi lib to tvm_multilib * Fix Jenkinsfile * Added TOPI build target to Makefile * Fix nn op namespaces. * Fix lint * Renamed TOPI lib to libtvm_topi * Removed _ffi/base.py * Remove _ffi from topi, now shared with tvm. * Make libtvm_topi loading optional * Fix compiler warnings * Fix lint * Fix lint * Fix lint * Fix build error by making new libs argument to Target optional * Added C++ Target type interop. Added registration of remaining C++ ops and schedules. Added test of broadcast ops * Fix lint * Fix lint * Fix compile error * Fix compiler warnings * Fix compiler warnings * Fixed int vector interop. Fixed argmin incorrectly invoking argmax. Fixed corner case in default schedules of attempting to fuse 0 length axes. Added tests for reduce ops. * Refactored reduce builders * Fixed typos in topi.cc. Added basic test. * Fixed padding size error. Added dense, dilate, pooling tests * Fixed issue where clip would output a different dtype to the input. Added split_sections op to cover the other mode of the python split op. Added tests. * Changed extension type numbers to avoid clash with NNVM * Fix lint * Fix compiler warnings * Removed use of std::vector from the public TOPI API * Fix lint * Add TOPI C++ tests to CI * Fixed detail namespacing. Improved comments.
2018-01-28 08:57:13 +03:00
@mkdir -p $(@D)
$(CXX) $(CFLAGS) -MM -MT build/topi/$*.o $< >build/topi/$*.d
Porting schedules (except convolutions) to C++ (#763) * Ported injective schedules to C++. Added some elementwise ops. * Fix lint errors * Added reduction ops and schedules * Fix lint errors * Fix lint errors * Fix lint errors * Added transform ops * Fix lint errors * Fix lint errors * Added softmax, log_softmax, leaky_relu and flatten ops. Fixed issue where TVM_DECLARE_INTRIN_UNARY used the PureExtern flag instead of PureIntrinsic. Added softmax CUDA schedule. * Fix lint * Fix lint * Added binary_dense, batch_norm_inference, dense, dilate, scale_shift_*, global_pool and pool ops. Extended pad to allow specifying pad_value. Fixed issue where pad would throw if padding was zero in all dimensions. * Fix lint * Fix lint * Added CUDA schedules for dense, pool and global_pool * Added extern schedules for generic and CUDA * Fix lint * Added x86 binary schedules * Fix lint * Added rocm dense schedule. Added rocBLAS and cuBLAS support to dense ops * Added pow ops. Added x86 default and injective schedules * Fix lint * Fix lint * Fix lint * Fix lint * Fix lint * Fix indent * Removed schedules directory * Changed left_shift, right_shift to operators. Changed pad_value in pad() to remove pointer usage * Fixed usage of pad in nn/pooling.h. Fixed declaration of operator>> * Fixed comments for shift operators * Added comments to utility functions * Added TOPI C++ library, exporting broadcast_add op * Fix lint * Share libinfo.py with TVM * Fix lint * Add other broadcast ops * Fix lint * Fix imports in topi * Fix lib names * Fixed build issue where windows builds don't apply correct definitions * Removed TVM_EXPORTS from topi library * Attempted CI build fix * Add topi lib to tvm_multilib * Fix Jenkinsfile * Added TOPI build target to Makefile * Fix nn op namespaces. * Fix lint * Renamed TOPI lib to libtvm_topi * Removed _ffi/base.py * Remove _ffi from topi, now shared with tvm. * Make libtvm_topi loading optional * Fix compiler warnings * Fix lint * Fix lint * Fix lint * Fix build error by making new libs argument to Target optional * Added C++ Target type interop. Added registration of remaining C++ ops and schedules. Added test of broadcast ops * Fix lint * Fix lint * Fix compile error * Fix compiler warnings * Fix compiler warnings * Fixed int vector interop. Fixed argmin incorrectly invoking argmax. Fixed corner case in default schedules of attempting to fuse 0 length axes. Added tests for reduce ops. * Refactored reduce builders * Fixed typos in topi.cc. Added basic test. * Fixed padding size error. Added dense, dilate, pooling tests * Fixed issue where clip would output a different dtype to the input. Added split_sections op to cover the other mode of the python split op. Added tests. * Changed extension type numbers to avoid clash with NNVM * Fix lint * Fix compiler warnings * Removed use of std::vector from the public TOPI API * Fix lint * Add TOPI C++ tests to CI * Fixed detail namespacing. Improved comments.
2018-01-28 08:57:13 +03:00
$(CXX) -c $(CFLAGS) -c $< -o $@
lib/libtvm.${SHARED_LIBRARY_SUFFIX}: $(ALL_DEP) $(RUNTIME_DEP)
@mkdir -p $(@D)
$(CXX) $(CFLAGS) $(FRAMEWORKS) -shared -o $@ $(filter %.o %.a, $^) $(LDFLAGS)
lib/libtvm_topi.${SHARED_LIBRARY_SUFFIX}: $(TOPI_DEP)
@mkdir -p $(@D)
$(CXX) $(CFLAGS) $(FRAMEWORKS) -shared -o $@ $(filter %.o %.a, $^) $(LDFLAGS) $(PKG_LDFLAGS)
lib/libtvm_runtime.${SHARED_LIBRARY_SUFFIX}: $(RUNTIME_DEP)
2016-10-15 04:07:37 +03:00
@mkdir -p $(@D)
$(CXX) $(CFLAGS) $(FRAMEWORKS) -shared -o $@ $(filter %.o %.a, $^) $(LDFLAGS)
2016-10-15 04:07:37 +03:00
2016-10-17 07:33:42 +03:00
lib/libtvm_web_runtime.bc: web/web_runtime.cc
@mkdir -p build/web
@mkdir -p $(@D)
emcc $(EMCC_FLAGS) -MM -MT lib/libtvm_web_runtime.bc $< >build/web/web_runtime.d
emcc $(EMCC_FLAGS) -o $@ web/web_runtime.cc
lib/libtvm_web_runtime.js: lib/libtvm_web_runtime.bc
@mkdir -p $(@D)
emcc $(EMCC_FLAGS) -o $@ lib/libtvm_web_runtime.bc
$(LIB_HALIDEIR): LIBHALIDEIR
2016-10-26 21:32:43 +03:00
LIBHALIDEIR:
+ cd HalideIR; make lib/libHalideIR.a DMLC_CORE_PATH=../dmlc-core; cd $(ROOTDIR)
2016-10-26 21:32:43 +03:00
cpplint:
python dmlc-core/scripts/lint.py topi cpp topi/include;
2018-05-26 04:08:51 +03:00
python dmlc-core/scripts/lint.py nnvm cpp nnvm/include nnvm/src;
python dmlc-core/scripts/lint.py tvm cpp include src verilog\
examples/extension/src examples/graph_executor/src
pylint:
pylint python/tvm --rcfile=$(ROOTDIR)/tests/lint/pylintrc
pylint topi/python/topi --rcfile=$(ROOTDIR)/tests/lint/pylintrc
2018-05-26 04:08:51 +03:00
pylint nnvm/python/nnvm --rcfile=$(ROOTDIR)/tests/lint/pylintrc
jnilint:
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
python dmlc-core/scripts/lint.py tvm4j-jni cpp jvm/native/src
lint: cpplint pylint jnilint
2016-10-15 04:07:37 +03:00
2016-10-16 05:51:02 +03:00
doc:
doxygen docs/Doxyfile
install: lib/libtvm_runtime.$(SHARED_LIBRARY_SUFFIX)
mkdir -p $(DESTDIR)$(PREFIX)/include/tvm/runtime
cp -R include/tvm/runtime/. $(DESTDIR)$(PREFIX)/include/tvm/runtime
cp lib/libtvm_runtime.$(SHARED_LIBRARY_SUFFIX) $(DESTDIR)$(PREFIX)/lib
installdev: lib/libtvm.$(SHARED_LIBRARY_SUFFIX) lib/libtvm_runtime.$(SHARED_LIBRARY_SUFFIX) lib/libtvm.a
mkdir -p $(DESTDIR)$(PREFIX)/include
cp -R include/tvm $(DESTDIR)$(PREFIX)/include
cp lib/libtvm.$(SHARED_LIBRARY_SUFFIX) $(DESTDIR)$(PREFIX)/lib
cp lib/libtvm_runtime.$(SHARED_LIBRARY_SUFFIX) $(DESTDIR)$(PREFIX)/lib
cp lib/libtvm.a $(DESTDIR)$(PREFIX)/lib
# Cython build
cython:
cd python; python setup.py build_ext --inplace
cython2:
cd python; python2 setup.py build_ext --inplace
cython3:
cd python; python3 setup.py build_ext --inplace
cyclean:
rm -rf python/tvm/*/*/*.so python/tvm/*/*/*.dylib python/tvm/*/*/*.cpp
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
jvmpkg:
(cd $(ROOTDIR)/jvm; \
mvn clean package -P$(JVM_PKG_PROFILE) -Dcxx="$(CXX)" \
-Dcflags="$(CFLAGS)" -Dldflags="$(LDFLAGS)" \
-Dcurrent_libdir="$(ROOTDIR)/lib" $(JVM_TEST_ARGS))
jvminstall:
(cd $(ROOTDIR)/jvm; \
mvn install -P$(JVM_PKG_PROFILE) -Dcxx="$(CXX)" \
-Dcflags="$(CFLAGS)" -Dldflags="$(LDFLAGS)" \
-Dcurrent_libdir="$(ROOTDIR)/lib" $(JVM_TEST_ARGS))
[WIP][Frontend] Scala/Java package (#176) * JVM package skeleton * [JVM] link libtvm.so and list function names * [JVM] Function & NDArray skeleton * [JVM] TVMFuncCall in JNI * [JVM] handle string arg in TVMFuncCall * [JVM] get module function * [JVM] entry function for Module * [JVM] construct Module from function return value * [JVM] TVMContext, TVMArray attributes * [JVM] NDArray from / to java array * [JVM] load so and compute on cpu * [JVM] move PackedFunc to individual modules * [JVM] assembly package & native library loader * [JVM] unit test & codestyle check settings * [JVM] NDArray from & to different dtypes * [JVM] NDArray from native double array. Add linux-cpu profile. * [JVM] modify Makefile * [JVM] add linux-x86_64-gpu profile * [tvm4j] delay load libtvm_runtime.so * [tvm4j] refactor to pure java * [tvm4j] remove scalastyle-config.xml * [tvm4j] remove link HalideIR, remove Shape, remove scala binary versions * [tvm4j] only allow convert from/to same type array * [tvm4j] make NDArray api more readable * [tvm4j] refactor for c api * [tvm4j] add Jenkins tests * [tvm4j] fix duplicate Dockerfile cmd * [tvm4j] fix ut script filename * [tvm4j] add module load tests * [tvm4j] add javadoc, remove types package * [tvm4j] fix test script * [tvm4j] remove ut temp dir * [tvm4j] fix missing package types * [tvm4j] java code style check * [tvm4j] fix java lint * [tvm4j] downgrade checkstyle plugin for JDK7 * [tvm4j] add stylecheck in jenkins tests * [tvm4j] specify source file encoding * [tvm4j] lazy init function; add Function.call() api; allow manully release Module,NDArray,Function * [tvm4j] fix ModFree * [tvm4j] cache Function in API
2017-07-15 09:04:39 +03:00
2016-10-15 04:07:37 +03:00
clean:
2016-10-16 03:35:32 +03:00
$(RM) -rf build lib bin *~ */*~ */*/*~ */*/*/*~ */*.o */*/*.o */*/*/*.o */*.d */*/*.d */*/*/*.d
cd HalideIR; make clean; cd $(ROOTDIR)
2018-06-07 19:35:30 +03:00
$(MAKE) -C nnvm clean
2016-10-15 04:07:37 +03:00
-include build/*.d
-include build/*/*.d
-include build/*/*/*.d
2017-07-19 08:20:36 +03:00
-include build/*/*/*/*.d