我是在双系统中linux上安装的,不是Ubuntu虚拟机,虽然两者过程基本一样,但是在双系统上会更方便。
文章目录
- 零:究极大招版
- 一:环境准备
- 1.1.安装gcc、cmake等必要的依赖
- 1.2.python环境
- 二:安装编译工具:llvm+cuda
- 2.1 安装LLVM
- 2.2 安装cuda+cudnn(可选)
- 三:下载并编译tvm
- 3.1 下载tvm
- 3.2 编译tvm
- 3.2.1 build文件夹
- 3.2.2 配置build/config.cmake文件
- 3.2.3 编译tvm
- 3.2.4 tvm依赖报错处理(可选)
- 3.3 将编译成功的tvm放入环境变量
- 四:将tvm导入python
- 五:测试tvm
-
零:究极大招版
直接选择以下安装:
pip install apache-tvm
或者
conda activate xxxxx
conda install apache-tvm
如果有人能够安装成功,那你就是天选之子!后面的步骤都与你无关,我建议你立刻去买张彩票,中了奖记得打赏我点(doge)。
不过绝大部分人应该是安装不成功的,那就按下面的步骤一步一步安装。
一:环境准备
1.1.安装gcc、cmake等必要的依赖
sudo apt install -y gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev
1.2.python环境
可以有以下几种:
1)单独的python环境
2)anaconda等创建的虚拟环境(这个环境可以是anaconda中普通的python环境,也可以是安装的pytorch、tensorflow等框架)
我们下面会把tvm安装到以上这些现有的python环境中,没必要重新为tvm创建一个新的python环境。
二:安装编译工具:llvm+cuda
2.1 安装LLVM
我使用的13.0.0,官网链接,找到自己所需的版本:
注意:这个是编译好的,不是源代码,不需要自己编译。如果下载的是名字中带src的压缩包,还需要自己编译生成LLVM。
下载之后解压,并将文件名改为llvm,将其放入到/usr/local路径下
(/usr/lib路径也可以,只要自己记住就行)
然后将其放入环境变量(不放也可以,但最好放):
命令行输入:
sudo vim ~/.bashrc
将以下两行添加进去(注意里面的路径)
export PATH=$PATH:/usr/local/llvm/bin
export LD_LIBRARY_PATH=/usr/local/llvm/lib
保存退出,然后命令行更新一下源文件:
source ~/.bashrc
2.2 安装cuda+cudnn(可选)
只安装llvm就可以用了,但是因为很多代码需要用到cuda+cudnn。如果你不想用cuda+cudnn,那你可以跳过这一步。
在这里不再展示如何安装cuda+cudnn,你可以到网上去搜索。
注意: 如果你是用命令行直接安装的cuda,那cuda的bin、include、lib64路径下是空的,不利于设置环境变量。所以我建议从官网下载cuda+cudnn,中间可能需要更换gcc的版本。
CUDA官网,CUDNN官网
安装cuda+cudnn步骤可参考:博客1,博客2
降级 GCC / G++ 步骤可参考:博客1
配置环境变量:
如果你成功安装了cuda+cudnn,那么就把cuda放到环境变量里去:
sudo vim ~/.bashrc
并输入:
export PATH=$PATH:/usr/local/cuda-11.6/bin
export CPATH=/usr/local/cuda-11.6/targets/x86_64-linux/include:$CPATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.6/lib64
注意注意注意:一定要添加第二行的CPATH,否则编译时会报找不到相关的头文件
保存退出,然后命令行更新一下源文件:
source ~/.bashrc
三:下载并编译tvm
3.1 下载tvm
可以通过git下载,如果没有git就先下载git(sudo apt-get install git)
(双系统可能需要处理一下git,我用git下载tvm一直下载不成功):
git clone --recursive https://github.com/apache/tvm tvm
也可以在官网下载:https://github.com/apache/tvm/releases
我选择的是0.9.0版本的。
下载解压到 ** /home/用户名 ** 的路径下,并将文件名称改为tvm。
3.2 编译tvm
3.2.1 build文件夹
进入tvm文件夹中,新建一个build文件夹,并将cmake文件夹下的config.cmake文件复制到build文件夹中。
3.2.2 配置build/config.cmake文件
修改文件夹build中的config.cmake文件
可以用ubuntu自带的编辑器打开,也可以用vim在终端打开。
修改以下内容:
SET(USE_LLVM OFF)
改为:
SET(USE_LLVM ON) 或者 SET(USE_LLVM /usr/local/llvm/bin/llvm-config)
SET(USE_CUDA OFF)
改为:
SET(USE_CUDA ON) 或者 SET(USE_CUDA /cuda的路径)
SET(USE_CUDNN OFF)
改为:
SET(USE_CUDNN ON)
此外:
如果要对IR进行debug:set(USE_RELAY_DEBUG ON)并在环境变量中加入TVM_LOG_DEBUG的路径
如果要对编译过程进行debug:set(USE_GRAPH_EXECUTOR ON) 和(USE_PROFILER ON)
保存退出。
这一步是为了用LLVM/cuda编译tvm。
3.2.3 编译tvm
在build文件夹下右键选择“在终端中打开”,执行下面两行:
cmake ..
make -j16 (数字代表编译的进程数,根据自己的电脑选择)
系统编译完tvm后会还会自动搜索tvm的依赖。
3.2.4 tvm依赖报错处理(可选)
注:make -j16 编译完最后自动搜索tvm的依赖可能会报下面这种错误:
(如果没有报错就跳过3.2.4直接看3.3)
usr/bin/ld: 找不到 -lz: 没有那个文件或目录
/usr/bin/ld: 找不到 -ltinfo: 没有那个文件或目录
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/tvm.dir/build.make:1370:libtvm.so] 错误 1
make[2]: 离开目录“/home/用户名/tvm/build”
make[1]: *** [CMakeFiles/Makefile2:144:CMakeFiles/tvm.dir/all] 错误 2
make[1]: 离开目录“/home/用户名/tvm/build”
make: *** [Makefile:130:all] 错误 2
注意:找不到的"-lz"和"-ltinfo"的格式都是"-lxxx",第一个字母l并不是其名称,所以两个问题是找不到"z"和"tinfo",我们安装时需要在名字前面加"lib",尾部加"-dev",即接下来我们安装的是"libz-dev"和"libtinfo-dev"。
(其实在第一步环境准备时这玩意已经被安装过了,但是这里报错,是因为版本不兼容?不满足依赖?为什么有时候报错有时候不报错!)
1)用apt尝试安装
sudo apt-get install libz-dev
sudo apt-get install libtinfo-dev
试一下看能否安装。
如果安装成功,看这一步:3)重新搜索tvm的依赖
若不能安装,有如下报错的话看下面一步:2)用aptitude安装
2)用aptitude安装
安装aptitude:
aptitude会自动识别要安装的包之间的依赖关系
sudo apt-get install aptitude
安装缺失的包:
sudo aptitude install libz-dev
sudo aptitude install libtinfo-dev
每个包安装时都会提醒你是否接受他给出的解决方案,按照它给出的方案选着“y”或者“n”。
3)重新搜索tvm的依赖
再次输入:
make -j16
因为tvm已经编译成功了,这次不会再次编译,只会搜索tvm的依赖:
3.3 将编译成功的tvm放入环境变量
和上面的将LLVM放入环境变量过程一样:
命令行输入:
sudo vim ~/.bashrc
将下面两行加进去:
export TVM_HOME=/tvm的路径 (如果你是按照上面的步骤来做的,tvm的路径应该是:/home/用户名/tvm)
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
保存退出后更新一下:
source ~/.bashrc
四:将tvm导入python
先安装一些必要的包:
pip install numpy decorator attrs tornado psutil xgboost cloudpickle tensorboard
或者:
conda activate 环境名
conda install numpy decorator attrs tornado psutil xgboost cloudpickle tensorboard
再进入/tvm/python路径下(里面有setup.py文件,用于将tvm导入python):
cd .. (从"/tvm/build"退出到"/tvm")
cd python (进入"/tvm/python"路径)
python setup.py install (将tvm导入python)
五:测试tvm
下面以anaconda中的环境为例。
5.1 终端命令行测试
命令行输入:
conda activate 环境名
python
逐行输入:
import tvm
tvm.__version__
tvm.cuda().exist (如果按照上述步骤安装了cuda)
如果输出’0.9.0 +true’证明安装成功。
5.2 pycharm测试
打开pycharm新建一个项目,并将python解释器设置为刚刚导入tvm的python。
输入:
import tvm
print(tvm.__version__)
print(tvm.cuda().exist)
如果输出0.9.0+true说明安装成功。
如下图:说明我的cuda、tvm都可以用了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)