TVM安装
在Linux上从源码安装tvm
1. 拉取源码
先把源代码拉下来,注意使用--recursive
可用来获取TVM的依赖(会下载到tvm/3rdparty
目录下):
如果第三方依赖下载过慢,可以在git clone
后,进入tvm目录执行下述命令:
2.构建准备
我们的目标是从源码编译得到libtvm.so
和 libtvm_runtime.so
。
2.1 安装依赖
为保证构建过程顺利完成,我们还需要完成如下依赖的安装:
请确保CMake version >= 3.10
。
2.2 选择构建工具
为了更快地增量编译,我们选择使用ninja
来进行构建,apt仓库的ninja
已完全可用,安装可通过如下命令进行:
安装完成后可通过ninja --version
查看。
2.3 解决python环境
由于官方文档(0.9.dev0)指出tvm的Python目前仅支持3.8.X+ 和3.7.X+,因此,我们选择使用conda
来创建tvm的python环境(conda安装请自行解决)。
3.构建配置
3.1自定义构建选项
在tvm
下创建好build
目录,构建所需的配置文件可从tvm/cmake/config.cmake
中拷贝。
编辑build/config.cmake
来自定义构建选项:
set(USE_CUDA ON)
启用CUDA后端(需要本地安装CUDA>=8.0)- 启用
set(USE_GRAPH_EXECUTOR ON)
、set(USE_PROFILER ON)
来帮助debug。 - 如果需要debug IRS,则需要
set(USE_RELAY_DEBUG ON)
并设置环境变量TVM_LOG_DEBUG。
3.2 安装并启用llvm
TVM 依赖 LLVM 用于 CPU 代码生成,官方强烈建议在进行构建的时候启用LLVM,且需要 llvm version >= 4.0
,而使用apt
默认安装的会低于4.0,我们选择前往llvm官页下载编译好的llvm包(Pre-Built Binaries)。
编辑build/config.cmake
,修改set(USE_LLVM <your_llvm_path>/bin/llvm-config)
。
为了后续调试方便,您可以将llvm加入环境变量:
4.编译构建
TVM 的默认配置是构建 RELEASE 版本的共享库。如果要构建 DEBUG 版本的,可以使用选项-DCMAKE_BUILD_TYPE=Debug
:
编译成功后,生成的共享库libtvm.so
和libtvm_runtime.so
位于build
目录下。
查看生成的共享库是否是DEBUG
版本,可在构建目录中执行如下命令,看是否有with debug_info
:
5. 安装tvmc (TVM命令行工具)
5.1 安装依赖
TVM命令行工具tvmc
以python包形式存在于克隆的仓库目录tvm/python/tvm/driver
下,我们需要安装如下依赖确保tvmc
正常运行:
5.2 环境变量配置
为了能使tvmc
可以被正确加载,我们需要添加如下环境变量(可写入~/.bashrc
等,请依shell类型确定):
注:
- 修改
PYTHONPATH
是为了python
能找到tvm.driver.tvmc
。 - 添加环境变量
TVM_LIBRARY_PATH
是为了tvmc
能找到所需的共享库libtvm.so
和libtvm_runtime.so
。
我们可以重启shell或source ~/.bashrc
使上述修改立即生效。
5.3运行与别名
您可以通过下述命令来运行tvmc并查看帮助:
为了使用方便,我们可以为shell执行构建命令别名,您可将下述内容写入~/.bashrc
:
生效后,我们就可以直接执行tvmc
。