linux(ubuntu20.04)安装tvm

您所在的位置:网站首页 源码编译安装anaconda linux(ubuntu20.04)安装tvm

linux(ubuntu20.04)安装tvm

2024-06-09 20:57| 来源: 网络整理| 查看: 265

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

文章目录 零:究极大招版一:环境准备1.1.安装gcc、cmake等必要的依赖1.2.python环境 二:安装编译工具:llvm+cuda2.1 安装LLVM2.2 安装cuda+cudnn(可选) 三:下载并编译tvm3.1 下载tvm3.2 编译tvm3.2.1 build文件夹3.2.2 配置build/config.cmake文件3.2.3 编译tvm3.2.4 tvm依赖报错处理(可选) 3.3 将编译成功的tvm放入环境变量 四:将tvm导入python五:测试tvm5.1 终端命令行测试5.2 pycharm测试

零:究极大招版

直接选择以下安装:

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都可以用了。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3