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
  1. 为了帮助调试,请确保使用和启用嵌入式图形执行器和调试功能set(USE_GRAPH_EXECUTOR ON)set(USE_PROFILER ON)

  2. 使用 IR 进行调试,设置set(USE_RELAY_DEBUG ON),并设置环境变量TVM_LOG_DEBUG

export TVM_LOG_DEBUG="ir/transform.cc=1;relay/ir/transform.cc=1"
  1. 设置set(USE_LLVM /path/to/your/llvm/bin/llvm-config)set(USE_CUDA ON)

  2. 如果是 PyTorch 用户,建议设置(USE_LLVM "/path/to/llvm-config --link-static")set(HIDE_PRIVATE_SYMBOLS ON)避免 TVM 和 PyTorch 使用的不同版本 LLVM 之间潜在的符号冲突。

  3. 性能应用程序编程接口 (PAPI) 是一个库,可在各种平台上提供性能计数器。性能计数器在给定的执行运行期间提供有关处理器行为的准确低级信息,设置set(USE_PAPI path/to/papi.pc)

  4. 设置支持 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}
posted @ 2022-03-24 13:23  nanmi  阅读(260)  评论(0编辑  收藏  举报