在Jetson nano上编译安装TVM

前言

前面整理了几篇关于TVM的文章:
TVM-初识TVM
Ubuntu16.04安装Docker
TVM学习教程
接下来就是编译安装TVM了,手头有的系统也就是ubuntu了,在网上查找了一些资料后发现可以在ubuntu系统上部署TVM,于是开开心心的开搞了,然后就是…不停的失败,真的是配环境配的快吐了,直到我在知乎上找到了下面的这篇文章:
使用 TVM 在 Jetbot(Jetson Nano) 运行 Yolov3-tiny
手头正好有一块Jetson Nano的开发板,哈哈哈,于是又搞起来了,然后又又又是…不停的失败。
在仔细看了下报错后调试了一下报错处的源码去找定义终于是解决了,放一张图:
在这里插入图片描述

下面开始介绍安装教程。

参考资料

1.安装的话还是按照官方文档一步一步来就行:Install from Source
2.网上资料只找到了这篇,帮助很大。

编译流程

第一步:在Jetson nano上下载TVM源码,安装各种依赖。具体参考官方文档
第二步:下载LLVM源码并编译。

  • 在普通服务器上,可以直接下载LLVM的预编译包。
  • 但官网能下的预编译包放到Jetson nano上没用,所以要自己下载源码编译。
  • 编译流程参考这篇,编译过程花了5-6小时。

第三步:按照官方文档中写的,修改 config.cmake,设置USE_CUDA和USE_LLVM。
第四步:执行编译,即执行cmake和make命令。
第五步:添加PYTHONPATH,以及安装一些Python库。

LLVM的安装

因为TVM需要使用LLVM,所以需要事先安装好LLVM,下面是LLVM的编译指令:

git clone https://github.com/llvm/llvm-project llvm-project(这里直接去官网下载8.x版本)
cd llvm-project
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=lld -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm
make -j3  
sudo make install

出现的问题及解决办法

1.下载tvm源码的时候一定要加上–recursive,不加的花可能会下载不完整,后续编译也会下弧线问题

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

2.在下载llvm源码进行编译安装时最后一个make install前面要加sudo赋予权限,否则编译了大半天最后报出一个某个文件权限不够的错。上一步make -j3花费的时间挺长的,这里要耐心等待。
3.按照原教程下载好llvm源码编译安装llvm然后再去编译tvm,在走到make -j4这一步的时候老是报下面的错误:
在这里插入图片描述

一开始不知道为什么会这样,因为官方说只要llvm的版本大于4.0即可,而且按照下面的指令下载安装好的llvm是9.0版本的,按道理来说不应该是版本错误的才对,按照错误解决建议修改了几个函数名之后就报出了更多匪夷所思的错误,所以这里不要按照它说的替换函数名,于是我用vscode打开错误提示文件下的源码,去找错误处函数的定义,发现报错处的tvm源码在检测到安装的llvm版本大于等于9.0的时候会去调用这些函数:
在这里插入图片描述
但是通过摁F12去寻找前面两个名称空间发现Intrinstic这个名称空间下面是空的,这个时候我在想可能真的是llvm的版本不对,于是去Github下载8.0版本:
在这里插入图片描述

然后再继续按照下面的编译流程编译安装llvm:

cd llvm-project-release-8.x
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=lld -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm
make -j3  
sudo make install

编译完成之后在终端中运行:

llvm-config --version

如果正确安装会出现版本号:
在这里插入图片描述

然后再去tvm下面的build文件夹下运行:

make -j4

等到百分百不报错之后就说明tvm编译完成了
4.最后还要配置python环境,安装好依赖库以及在~/.bashrc文件中配置好tvm的python环境:
在这里插入图片描述

5.终端中验证:
在这里插入图片描述

在我看到这里的时候我是很开心的,但是打脸来的不要太快…
在这里插入图片描述

这个时候把最后一句报错信息复制百度一下发现是常见的问题,具体的原因是attrs的版本不匹配,于是先卸载原先的attrs,然后再安装19.1.0版本的attrs:
在这里插入图片描述

然后再import一下:
在这里插入图片描述

OK!大功告成!
下面就可以开始学习TVM源码了,开心!

猜你喜欢

转载自blog.csdn.net/qq_33287871/article/details/113784639