TVM安装(一):Ubuntu下配置环境

官方安装方法:https://tvm.apache.org/docs/install/from_source.html

1. 安装Anaconda

https://www.anaconda.com/products/individual

2. 安装Git

sudo apt update
sudo apt install git

3. 从GitHub上下载tvm源代码

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

4. 安装必要的依赖

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

5. 修改TVM编译配置文件

cd tvm

如果没有vim,请先安装vim,再对配置文件进行修改

sudo apt install vim 

5.1、新建一个build文件夹用于存放make后的文件

mkdir build
cp cmake/config.cmake build

5.2、修改配置文件

主要修改如下几项:(vim使用/关键字可以高亮关键字)

  1. 如果使用CUDA进行编译:set(USE_CUDA ON)或者set(USE_CUDA /path/to/your/cuda/)
  2. 如果使用CUDNN:set(USE_CUDNN ON)或者set(USE_CUDA /path/to/your/cudnn.so/)
  3. 如果使用CUBLAS:set(USE_CUDNN ON)或者set(USE_CUDA /path/to/your/cublas.so/)
  4. 如果要对IR进行debug:set(USE_RELAY_DEBUG ON)并在环境变量中加入TVM_LOG_DEBUG的路径
  5. 如果要对编译过程进行debug:set(USE_GRAPH_EXECUTOR ON)(USE_PROFILER ON)

其余功能可按照配置文件中的详细说明进行修改

每一次修改配置文件之后都需要把build文件夹中的除编译文件外的文件清空,重新编译!

5.3. 搭建环境

傻瓜式搭建环境:也可以自行通过apt安装llvm等环境

conda env create --file conda/build-environment.yaml
conda activate tvm-build

注意!因为傻瓜式安装会安装最新版本的python,可能会导致一系列不可控因素!因此请在虚拟环境建立之后使用conda install python=3.x对python版本进行降级,降级完成后再编译!

5.4、编译

cd build
cmake ..
make -j16  (数字代表使用多少个进程进行编译,可根据自己的cpu参数酌情选择)

6. 安装必要的包

conda build --output-folder=conda/pkg  conda/recipe
conda install tvm -c ./conda/pkg
pip install numpy decorator attrs tornado psutil xgboost cloudpickle tensorboard

安装时请使用default源,清华源或者其他源可能会报错
查看conda源:conda config --show-source
增加conda源:conda config --add channels http://.....
删除conda源:conda config --remove channels http://.....

7. 把TVM和CUDA加入到环境变量~/.bashrc文件中

export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
export PATH=/path/to/cuda:$PATH
export LD_LIBRARY_PATH=/path/to/cuda/lib64:$LD_LIBRARY_PATH

8. 坑

8.1 如果出现GLIBCXX_3.4.29' not found

tvm-build/lib/./libstdc++.so.6: version `GLIBCXX_3.4.29' not found

说明tvm环境内的GCC版本过高,但动态库版本不够,只需要把新版本的libstdc++.so.6文件覆盖此文件即可

检查libstdc++.so.6文件版本:
strings libstdc++.so.6 | grep GLIBC

解决方法:
通常可以使用sudo find / -name "libstdc++.so.6"来全盘搜索本机内的所有libstdc++.so.6文件,并逐一检查其版本是否包含GLIBCXX_3.4.29,通常anaconda已经包含,我的最新版文件在anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6内,anaconda通常已经包含gcc11.2.0及gcc9.1.0的动态运行库。

如果不能解决只能从网上寻找新版本的libstdc++.so.6文件或更新gcc后再重新覆盖。

8.2 编译时出现GTest问题

解决方法

git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cd build
cmake ..
make
sudo make install

你可能感兴趣的:(TVM安装(一):Ubuntu下配置环境)