TVM源码编译
TVM源码编译
安装依赖
sudo apt-get install -y libtinfo-dev zlib1g-dev build-essential libedit-dev libxml2-dev
安装llvm
link: https://www.cnblogs.com/nanmi/p/16044444.html
安装googltest
link: https://www.cnblogs.com/nanmi/p/16049219.html
安装PAPI
link: https://www.cnblogs.com/nanmi/p/16049230.html
下载源码
git clone --recursive https://github.com/apache/tvm
编译
mkdir build
cp cmake/config.cmake build
修改config.cmake
-
为了帮助调试,请确保使用和启用嵌入式图形执行器和调试功能
set(USE_GRAPH_EXECUTOR ON)
和set(USE_PROFILER ON)
-
使用 IR 进行调试,设置
set(USE_RELAY_DEBUG ON)
,并设置环境变量TVM_LOG_DEBUG
。
export TVM_LOG_DEBUG="ir/transform.cc=1;relay/ir/transform.cc=1"
-
设置
set(USE_LLVM /path/to/your/llvm/bin/llvm-config)
和set(USE_CUDA ON)
-
如果是 PyTorch 用户,建议设置
(USE_LLVM "/path/to/llvm-config --link-static")
和set(HIDE_PRIVATE_SYMBOLS ON)
避免 TVM 和 PyTorch 使用的不同版本 LLVM 之间潜在的符号冲突。 -
性能应用程序编程接口 (PAPI) 是一个库,可在各种平台上提供性能计数器。性能计数器在给定的执行运行期间提供有关处理器行为的准确低级信息,设置
set(USE_PAPI path/to/papi.pc)
-
设置支持 TensorRT ,TVM 中的 TensorRT 集成有两个单独的构建标志。这些标志还启用交叉编译:
USE_TENSORRT_CODEGEN=ON
还将您在主机上构建具有 TensorRT 支持的模块,而USE_TENSORRT_RUNTIME=ON
将启用边缘设备上的 TVM 运行时以执行 TensorRT 模块。如果要编译并执行具有相同 TVM 构建的模型,则应启用这两者。
USE_TENSORRT_CODEGEN=ON/OFF
- 该标志将允许编译不需要任何 TensorRT 库的 TensorRT 模块。USE_TENSORRT_RUNTIME=ON/OFF/path-to-TensorRT
- 此标志将启用 TensorRT 运行时模块。这将针对已安装的 TensorRT 库构建 TVM
编译
cd build
cmake .. -G Ninja --DCMAKE_INSTALL_PREFIX=<your tvm want to install dir>
ninja
ninja install
安装 TVM 的 Python 包
安装依赖
pip install decorator attrs tornado psutil xgboost cloudpickle
安装
此安装方法不用“真正”安装,只需要设置好环境变量就可以。
cd your tvm source code dir>/python
python setup.py develop --user
弃用代码:
export TVM_HOME=<your tvm source code dir>
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}