TVM:源码编译安装
TVM:Linux源碼編譯安裝
筆者環(huán)境:
OS:Ubuntu 18.04
CMake:3.10.2
gcc:7.5.0
cuda:11.1
編譯安裝過程總覽
本文將簡介 tvm 的編譯安裝過程,包含兩個(gè)步驟:
源碼獲取
官網(wǎng)教程提供了兩種源碼獲取方式:
通過下載頁面直接下載
通過 github 倉庫來下載
git clone --recursive https://github.com/apache/tvm tvm注意一定要有 --recursive 參數(shù),保證子模塊正常下載。
構(gòu)建共享庫
構(gòu)建 tvm 共享庫,在我們 Linux 系統(tǒng)上即 libtvm.so 和 libtvmruntime.so 。也可以只構(gòu)建運(yùn)行時(shí)庫 libtvmruntime.so ,在要被部署的遠(yuǎn)程邊緣設(shè)備(如樹莓派、移動手機(jī)等)上,我們通常只需要安裝運(yùn)行時(shí)庫。這也會在后面介紹遠(yuǎn)程邊緣部署時(shí)提到。總之現(xiàn)在,在我們的主機(jī)上,我們先完全安裝 tvm。
準(zhǔn)備工作
官方給出的安裝 tvm 的最小要求如下:
- 一個(gè)支持C++ 14 的編譯器 (如g+±5 or higher)
- CMake 3.5 or higher
- 強(qiáng)烈建議安裝 llvm
- Python 3.7 / 3.8 (Python 3.9 暫不支持)
- 如果要使用CUDA,CUDA toolkit version >= 8.0
安裝最小依賴
安裝上述最小要求的命令(ubuntu / debian):
sudo apt-get update sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev檢查一下CMake,如果沒有的話,到該下載頁面下載。
llvm
llvm 雖然不是強(qiáng)制要求,但我們通常都是需要的,強(qiáng)烈建議大家安裝。過程也很簡單,從這個(gè)下載頁面選擇適合我們設(shè)備和系統(tǒng)的 pre-built 版本(壓縮文件 .xz)下載并解壓即可:
wget http://releases.llvm.org/x.x.x/clang+llvm-x.x.x-x86_64-linux-gnu-ubuntu-xx.xx.tar.xztar -xf clang+llvm-x.x.x-x86_64-linux-gnu-ubuntu-xx.xx.tar.xz解壓完成后進(jìn)入解壓目錄,找到 bin 目錄下的 llvm-config 文件,記下其路徑,一會兒要用。
開始編譯構(gòu)建
準(zhǔn)備工作完成之后我們開始編譯構(gòu)建。
首先進(jìn)入到我們剛才下載的 tvm 源碼目錄下,新建 build 目錄,將 cmake 目錄下的 config.cmake 拷貝的 build 目錄下:
cd tvm mkdir build cp cmake/config.cmake build/然后按需修改 config.cmake 文件:
-
如果要時(shí)候用某些后端和庫(如CUDA, OpenCL, RCOM, METAL, VULKAN,等)。這里以CUDA為例,將 set(USE_CUDA OFF) 修改為 set(USE_CUDA ON),其他庫同理。
-
為了幫助調(diào)試,需要啟用嵌入式圖形執(zhí)行器和調(diào)試功能 set(USE_GRAPH_DEBUG ON) 、 set(USE_PROFILER ON)
-
如果要調(diào)試 IR,要啟用 set(USE_RELAY_DEBUG ON) ,并設(shè)置環(huán)境變量:
export TVM_LOG_DEBUG="ir/transform.cc=1;relay/ir/transform.cc=1" -
使用 LLVM,這里要使用到我們剛才記下的 LLVM 路徑了,設(shè)置 set(USE_LLVM /path/to/your/llvm/bin/llvm-config)
config.cmake 修改完成后,我們開始構(gòu)建 tvm 及相關(guān)庫:
cd build cmake .. make -j4Python 包
Python 會根據(jù)環(huán)境變量 PYTHONPATH 尋找?guī)煳募?#xff0c;在 ~/.bashrc中設(shè)置這個(gè)環(huán)境變量,其中 /path/to/tvm 是上文 tvm 目錄的絕對路徑。
export TVM_HOME=/path/to/tvm export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}python 依賴安裝
-
必需依賴
pip3 install --user numpy decorator attrs -
如果要使用 RPC 追蹤器
pip3 install --user tornado -
如果要使用 auto-tuning 模塊
pip3 install --user tornado psutil xgboost cloudpickle
測試
這里我們用 Google Test 來進(jìn)行測試,首先先安裝 GTest(不要和 tvm 裝在一起,建議另找一個(gè)目錄):
git clone https://github.com/google/googletest cd googletest mkdir build cd build cmake -DBUILD_SHARED_LIBS=ON .. make sudo make install安裝完成后,在 tvm 安裝目錄下執(zhí)行測試:
./tests/scripts/task_cpp_unittest.sh順利完成無報(bào)錯(cuò)的話,即告 tvm 安裝完成。
Ref:
https://tvm.apache.org/docs/install/from_source.html#developers-get-source-from-github
總結(jié)
以上是生活随笔為你收集整理的TVM:源码编译安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泰来小区成都北改会拆吗五块石泰来小区在北
- 下一篇: 海阳育才中学附近有公寓卖吗?