近一年来尝试过TVM在ubuntu16.04 、ubuntu18.04、 ubuntu20.04 以及windows上的安装,也看了官方教程和网上各种博客,踩坑无数,现在总结在Ubuntu上踩坑几率最小的安装流程如下。
(建议学习TVM一开始就在ubuntu上进行,windows上TVM从安装到运行都会有意想不到的bug,我曾经遇到过同样的代码在windows上报奇怪的错而在Ubuntu上就不会)
以TVM0.9 在 ubuntu16.04 的安装为例。
TVM官网
Install from Source — tvm 0.9.dev0 documentation
1. TVM官网提供的github下载地址:
git clone --recursive https://github.com/apache/tvm tvm
注1:从github上clone到本地后的代码可能不太完整,3rdparty/ 目录下可能会是空的
这时候就需要手动下载里面的包然后放到3rdparty/ 目录下,这部分我已上传压缩包至csdn大家可免费下载。
3rdparty/下所需包压缩文件
注2:上次我从官网下载的TVM源码在编译时遇到了C++变量重复定义的情况,大概是TVM本身源码与第三方包的变量名有重名,不知道目前这个bug解决没有,如果遇到此情况,可下载下面连接的TVM源码压缩包。
2. TVM完整源码压缩包
TVM,0.9.dev0包含第三方库的代码-深度学习文档类资源-CSDN下载
这是另一个博主上传的,亲测可用
参照官网教程命令,安装TVM所需依赖库,终端运行以下命令即可。
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
Ubuntu 安装LLVM的坑特别多,加上TVM坑就更多了,但如果要在cpu上用TVM进行优化加速,是一定需要LLVM的。
这里只推荐在LLVM官网下载预编译好的源码这一种方式,亲测这是踩坑几率最小的。
TVM在不同版本ubuntu上的安装流程,其实也只有这里下载的LLVM版本不一样,需要下载ubuntu版本对应的LLVM版本,除此之外,TVM安装过程中其他操作在不同版本ubuntu上都是一样的。
LLVM官方下载页:
http://releases.llvm.org/download.html
进入下载页面后选择与自己ubuntu版本所对应的LLVM预编译版本
点击连接下载压缩包(记得是点击图上紫色部分而不是(sig))
注:TVM要求LLVM版本大于0.4就行,因此你在某个LLVM版本下找不到对应的ubuntu版本的预编译包下载时,换一个即可,只要LLVM大于0.4就行。我现在是以ubuntu16.04安装为例,因此我就下载的是图上的 LLVM9.0.0 预编译包。
下载到本地后解压。
1. 进入TVM/根目录,创建 build 文件夹,将 cmake/ 下的文件 config.cmake 复制到 build文件夹下
mkdir build
cp cmake/config.cmake build/
2. 然后对 build/ 下的 config.cmake 文件里参数进行修改。
注:这里主要是根据自己对TVM使用需求来对TVM进行一些编译时的设置,其实就是选择开启TVM的哪些功能。
例如我需要TVM编译在CUDA上可执行的代码则将 “set(USE_CUDA OFF)” 改为 “set(USE_CUDA ON)”,其他等类似。
下面是重点:把 build/config.cmake 文件中的 “set(USE_LLVM OFF)” 中的“OFF” 改为 前面下载的LLVM预编译包 解压后的文件里的 bin文件夹下的“llvm-config”的路径
这里的路径一定要正确,可以先进入到 llvm/bin/ 下使用 pwd 命令查看绝对路径,然后加上“llvm-config”复制到 config.cmake 里去。
在 tvm/build/ 下分别运行以下命令,进行编译
cmake ..
make -j4 #几个核就j几
等待编译完成
如果一直没报错则表示安装成功。
TVM安装成功后,需要把TVM路径添加到python环境变量中,这样python在import tvm时才能成功导入。
终端运行 vim ~/.bashrc
在环境变量中添加以下两行,其中 “/path/to/tvm” 为tvm的根路径,即前面解压后的“tvm/”的绝对路径。
export TVM_HOME=/path/to/tvm #/path/to/tvm 为tvm的根路径,即前面解压后的“tvm/”的绝对路径
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
修改好后保存退出
再在终端运行 source ~/.bashrc
使环境变量生效
至此,TVM就全部安装成功了!
终端运行以下命令
>> python
>> import tvm
>> print(tvm.__version__)
如输出无误则安装成功!
参考资料:
【KAWAKO】TVM-在ubuntu服务器上的安装_KKK_KAWAKO的博客-CSDN博客_tvm ubuntu
TVM学习(一)安装TVM Ubuntu16.04安装TVM0.8+clang-llvm12.0_!学习使我快乐!的博客-CSDN博客_tvm安装