WSL环境安装TVM
本文是在WSL安装TVM。主要还是将踩过的坑及遇到的问题进行归纳总结。官方教程:https://tvm.apache.org/docs/install/from_source.
本文是在WSL安装TVM。主要还是将踩过的坑及遇到的问题进行归纳总结。
官方教程:
感觉官方文档有门槛,需要多搜相关资料,多读。
一、安装依赖库
sudo apt-get updatensudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev
可通过以下命令,查看安装版本号及所在目录
which gcc t// python3、cmake只需更换变量名ngcc -v
二、安装LLVM
- 使用 LLVM 构建需要 LLVM 4.0 或更高版本
- 由于从源代码构建 LLVM 需要很长时间,可以从 LLVM 官方下载Pre-Built版本
本文采用pre-build版本,所以避免了自己编译过程,参考博客。
(1)官网下载LLVM,链接为:https://releases.llvm.org/download.html
(2)下载并解压该文件
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xzntar -xf clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz
进入clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04bin
目录,找到llvm-config
文件,记录该文件的绝对路径。
三、安装TVM
(1) 获取源码
git clone --recursive https://github.com/apache/tvm tvm
采用 --recursive
选项是因为TVM
有些子模块,在 3rdparty
目录里实现,clone
结束后可以看到 dlpack
、dmlc-core
、libbacktrace
、rang
、vta-hw
为重要的子模块。
Submodule path '3rdparty/dlpack': checked out 'ddeb264880a1fa7e7be238ab3901a810324fbe5f'nSubmodule path '3rdparty/dmlc-core': checked out '21cc7de0dc9fd6acb796e1be6181fa8e6b6c8f41'nSubmodule path '3rdparty/libbacktrace': checked out '08f7c7e69f8ea61a0c4151359bc8023be8e9217b'nSubmodule path '3rdparty/rang': checked out 'cabe04d6d6b05356fa8f9741704924788f0dd762'nSubmodule path '3rdparty/vta-hw': checked out 'dfe9f572a43d41e0c1ecdf036cea97042a0febfe'
(2)源码编译
开始安装前,需要检查CMake 版本>=
3.5、g++版本 >=
5、LLVM 版本>=
4.0、CUDA版本>=
8.0。
①切换目录
cd tvmnmkdir build
②将cmake/config.cmake
文件复制到build
目录里
cp cmake/config.cmake build
.cmake
文件作用,参考博客
③ 更改config.cmake
的属性,该操作主要是绑定LLVM
后端 ,主要是将llvm-config 文件的绝对路径,添加至 USE_LLVM 属性。
// 原始属性nset(USE_LLVM OFF)n// 修改属性n#set(USE_LLVM OFF)nset(USE_LLVM /mnt/e/TVM/clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04/bin/llvm-config)
注意:
- 可根据硬件结构,进行个性化设置,如果使用CUDA,找到
set(USE_CUDA OFF)
这条,将OFF改成ON - 可根据需求,进行
Debug
设置,找到set(USE_GRAPH_RUNTIME OFF)
和set(USE_GRAPH_RUNTIME_DEBUG OFF)
这两条,把OFF改成ON - LLVM后端指定有两种方法:1、找到
set(USE_LLVM OFF)
,将OFF改成ON,编译时候会自动找到LLVM的位置;2、采用的的绝对路径指定的方式,set(USE_LLVM /path/to/llvm-config)
④ 编译安装
在build
文件夹下执行命令:
cmake ..nmake -j4
三、安装Python环境
(1)下载Linux版Anaconda
(2)开始安装
bash Anaconda3-2021.05-Linux-x86_64.sh
安装过程,根据提示输入yes或者持续回车,直至安装结束。注意:安装至最后有个yes提示,会显示anaconda的安装路径。
anaconda 添加至环境变量,可能遇到的问题:Ubuntu安装Anaconda3及系统环境变量配置详细版、关于profile和bashrc需要知道的知识点
(3)环境测试
四、环境变量配置及依赖包安装
(1)Python
和tvm
环境变量配置
- 修改
~/.bashrc
文件
sudo vi ~/.bashrc
- 文件末尾添加绝对路径
export TVM_HOME=/path/to/tvmnexport PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
- 重新激活环境变量
source ~/.bashrc
(2)依赖包安装
- 创建虚拟工作空间
conda create -n tvm-build python=3.6
- 激活虚拟工作空间
conda activate tvm-build
- 安装依赖包
conda install numpy decorator attrs # 必须安装
如果需要自动微调模,需要安装
conda install tornado psutil xgboost cloudpickle # 可选
五、环境测试
打开Python
解释器,运行如下指令:
如无报错,TVM 安装成功。
个人思考
(1)TVM和LLVM的安装建议从源码开始,了解每一步指令的操作内容含义及作用。
(2)开发环境的有效管理,尽可能避免多个环境的相关污染。
(3)编译过程发生了很多事情,比如动静态库的生成过程、框架主体部分的依赖关系
(4)CMake是一个庞大的体系,编译有很多技巧,尽可能查清楚
参考链接
[1] LLVM Download Page
[2] Install from Source
[3] 编译、安装 TVM
上一篇:OU2562S型显微维氏硬度计
下一篇:R.STAHL插头