TVM 学习 Ubuntu 18.04 TVM安装教程

1.安装组件说明 (以本人安装为例,适配版本)

ubuntu 18.04
LLVM version 10.0.0
TVM 0.7dev (最新0.8版本会在cmake ..步骤有错误,0.7版本比较成熟,建议安装0.7dev)
cmake version 3.10.2
python 3.8
conda 4.10.3
以及pycharm安装包,LLVM安装包,本人会附在文后

2.TVM源码

因为tvm版本变化较大,v5.0-v6.0目录结构都不一样,所以安装要参照官方文档

TVM官方文档
2.1 从GitHub获取tvm源码下载

git clone --recursive https://github.com/apache/tvm tvm

注意加上recursive

因为网络关系,我一直下不到tvm官网的安装包,所以我采用了手动下载的方式,具体来说,就是进入到github(www.github.com),然后搜索TVM的开源项目,找到第一个就是啦。因为我们要下载0.7dev,所以在tags找到0.7的版本进行下载.zip格式的文件。如图1:

图1 0.7 版本tvm图示下载

2.构建共享库

2.1 更新一下源,必须更新,不然安装依赖时会出错,打开终端,输入

sudo apt-get update

安装必要的依赖,这一步已经对cmake进行了安装。

sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev

2.2 建立build选项
进行tvm目录文件夹,首先创建一个build目录,复制 cmake/config.cmake到目录 **

cd tvm
mkdir build
cp cmake/config.cmake build

此时,我们可以看到,在tvm文件夹下面出现了build的文件夹,中存在config.cmake的文件。

3. LLVM下载

由于 LLVM 从源代码构建需要很长时间,您可以从以下位置下载 LLVM 的预构建版本 LLVM 下载页面

图2 llvm下载示意图

注解:因为LLVM下载也是比较费事的,所以我直接把下载好的LLVM解压后的文件夹和TVM0.7的源文件放在阿里云盘中,只需要下载到本地,放到需要安装的目录,需要的自取。有兴趣自己一步一步安装的,参考下面安装方法ubuntu 安装LLVM

注意配置llvm的全局环境,配置方法如下,终端输入:

sudo vim ~/.bashrc
export PATH=$PATH:/home/xu/llvm/bin(输入自己llvm的bin路径)
source ~/.bashrc (让环境生效)
llvm-config --version

xu@xu:~$ llvm-config --version
10.0.0
这样说明LLVM配置好了。

4. 自定义编译选项

编辑 build/config.cmake自定义编译选项 ,打开config.cmake文件

  1. (GPU配置,可选)如果,您想使用(OpenCL、RCOM、METAL、VULKAN 等)构建。找到 set(USE_CUDA OFF)改为(USE_CUDA ON),即为启用 CUDA 后端。 对其他后端和库执行相同操作。

  2. (方便debug)为了帮助调试,请确保已启用嵌入式图形执行器和调试功能 set(USE_GRAPH_EXECUTOR ON)set(USE_PROFILER ON)

  3. (配置LLVM,必选)TVM 需要 LLVM 用于 CPU 代码生成。 强烈建议您使用 LLVM 支持进行构建。

  • 解压到某个位置,修改 build/config.cmake添加 set(USE_LLVM /path/to/your/llvm/bin/llvm-config)(自己llvm的存放绝对路径,也是LLVM编译通不过,路径查找不到问题解决方法)

  • 也可以直接设置 set(USE_LLVM ON)并让 cmake 搜索可用版本的 LLVM

5.编译

我们进入到tvm文件夹下

cd build
cmake ..
make -j4(线程数,也可以设置8)

**注释:这一步会是大多数人出问题的地方,我当时困了好久在这,百度好多教程也找不到原因,最后在对编译问题log检查时,发现TVM本身下载的文件,会出现文件夹缺失的情况,我进入github找到缺失文件的目录,下载了缺失的文件夹,再次重新编译,完美通过!!!
缺失文件及LLVM安装包等

  • 文件目录 TVM0.7dev tvm/3rdparty 缺少4个文件夹


    图3 问题小结

出现这个,说明我们编译成功,亲测0.8dev的tvm会卡在cmake ..这一步,所以我选择0.7dev的原因便在这。

图3 编译成功图示

6. Python包安装

tvm提供了两种方法,个人推荐第一种配置系统环境,比较简单,亲测可行。

方法一、此方法对于开发人员建议使用可能更改代码的 。

设置环境变量 PYTHONPATH 告诉 python 去哪里找 。 例如,假设我们克隆了 tvm 在目录中 /path/to/tvm 然后我们可以在添加以下行 ~/.bashrc 中 。 拉取代码并重建项目后,更改将立即反映出来。

export TVM_HOME=/path/to/tvm(自己tvm的路径)                    
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH} 
方法二、(未测试)通过 安装 TVM python 绑定 setup.py :
# install tvm package for the current user
# NOTE: if you installed python via homebrew, --user is not needed during installaiton
#       it will be automatically installed to your user directory.
#       providing --user flag may trigger error during installation in such case.
export MACOSX_DEPLOYMENT_TARGET=10.9  # This is required for mac to avoid symbol conflicts with libstdc++
cd python; python setup.py install --user; cd ..

7.安装Python依赖

请注意, --user如果您要安装到托管的本地环境,则不需要标志, 像 virtualenv.

必要的依赖(必选):

pip3 install --user numpy decorator attrs

如果你想使用 RPC Tracker(可选)

pip3 install --user tornado

如果要使用自动调整模块(可选,建议选择)

pip3 install --user tornado psutil xgboost cloudpickle

到此,tvm安装部分结束,我们也可以选择安装anaconda(清华源)ubuntu 18.04安装anaconda3和pycharm编辑器(可以在ubuntu软件商店进行下载),相关的包我已经放在文中的链接中,有安装需求的可以自取。

8.测试

在pycharm或者终端输入import tvm,然后打印版本号

import tvm
print(tvm.--version)


输出

0.7.0

至此,TVM安装完成,由于我没有安装CUDA,所以安装过程比较简单,如果你有TVM安装方面的任何问题,欢迎致信。下面将不定期更新有关TVM的相关内容,有兴趣的小伙伴也可以一起交流学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容