Install TVM from Source
类别: AI Compiler 标签: TVM Install目录
Ubuntu 下安装依赖包
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev
获取源代码
git clone --recursive https://github.com/apache/tvm tvm
安装 LLVM
TVM 需要 LLVM 用于 CPU 代码生成,使用 LLVM 构建需要 LLVM 4.0 或更高版本。
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
tar xvf clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
mv clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04 llvm
构建共享库
创建 build 目录,将 cmake/config.cmake 复制到该目录下。
mkdir build
cp cmake/config.cmake build
编辑 build/config.cmake 以自定义编译选项。
- 将 set(USE_CUDA OFF) 更改为
set(USE_CUDA ON)
以启用 CUDA 后端。 对您要为其构建的其他后端和库(OpenCL、RCOM、METAL、VULKAN ……)执行相同的操作。 - 为了帮助调试,请确保使用
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"
- 修改build/config.cmake添加set(USE_LLVM /path/to/your/llvm/bin/llvm-config)
编译
cd build
cmake ..
make -j64
最终编译出两个动态库:libtvm_runtime.so
, libtvm.so
安装 Python 包
方法1
编辑 ~/.bashrc 文件,配置环境变量。(对于 TVM 的开发者推荐使用)
export TVM_HOME=/home/wjj/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
方法2
# install tvm package for the current user
# NOTE: if you installed python via homebrew, --user is not needed during installaiton
# it will be automatically installed to your user directory.
# providing --user flag may trigger error during installation in such case.
export MACOSX_DEPLOYMENT_TARGET=10.9 # This is required for mac to avoid symbol conflicts with libstdc++
cd python; python setup.py install --user; cd ..
依赖的安装包
必要的依赖
pip3 install --user numpy decorator attrs
想要使用 RPC Tracker
pip3 install --user tornado
想要使用 auto-tuning module
pip3 install --user tornado psutil xgboost cloudpickle
验证安装成功
python -c "import tvm"
参考资料
- TVM GitHub
- Apache TVM Documentation
- Apache TVM Documentation 中文
- Install TVM from Source
- The Deep Learning Compiler: A Comprehensive Survey
- 深度学习编译器整理
- 一篇关于深度学习编译器架构的综述论文
- Getting Starting using TVMC Python: a high-level API for TVM
- Compile ONNX Models
- Discuss TVM
- Check failed: pval != nullptr == false: Cannot allocate memory symbolic tensor shape [? ? ?]
- How to Deploy TVM Modules
- TVM编译遇到的那些坑
- ubuntu18.04 TVM编译安装