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插頭








