linux(ubuntu20.04)安装tvm-0.9.0+llvm+cuda/cudnn(一步到胃版)

我是在双系统中linux上安装的,不是Ubuntu虚拟机,虽然两者过程基本一样,但是在双系统上会更方便。

零:究极大招版

直接选择以下安装:

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

并输入:

#cuda
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文件夹下右键选择“在终端中打开”,执行下面两行:

# (确保终端中的路径为/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都可以用了。
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只野指针.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值