当前位置: 首页 > 工具软件 > tvm > 使用案例 >

【TVM源码学习笔记】0 TVM安装

单于高逸
2023-12-01

环境:vmware 16 pro + ubuntu20.04

1. LLVM+CLANG安装

源码安装llvm比较复杂,而且在国内很难下载llvm源码以及子仓源码,所以直接使用llvm社区发布的二进制包安装。下载地址:https://github.com/llvm/llvm-project/releases/tag/llvmorg-13.0.0

下载后直接使用tar命令解压

tar vxf clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz

为了使用方便,解压后可以使用mv命令改名为llvm

mv clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04 llvm

在/etc/profile中这是llvm环境变量

export LLVM_HOME=/home/study/llvm
export PATH=$LLVM_HOME/bin:$PATH

执行命令

source /etc/profile

使配置生效。然后使用clang --version检查下是否安装成功:

study@ubuntu:~/llvm/bin$ clang --version
clang version 13.0.0 (https://github.com/llvm/llvm-project/ 24c8eaec9467b2aaf70b0db33a4e4dd415139a50)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/study/llvm/bin

2. TVM编译安装

2.1 TVM源码下载

TVM源码地址为 https://github.com/apache/tvm。我的网络从github clone代码非常慢,基本是下载一半就断链了,所以使用的是gitee的镜像源

git clone https://gitee.com/apache/tvm.git

完整的代码还需要下载子仓。同样因为网络问题,直接clone下载这些子仓几乎不可能成功。我是将这些子仓在gitee上都fork了一份,然后将tvm的子仓配置中对应的地址修改为gitee上fork的地址。

clone下来的tvm源码中.gitmodules和.git/config中有子仓的地址配置,将这些地址修改为对应的gitee fork地址,例如我的环境中的.git/config配置:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://gitee.com/apache/tvm.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main
[submodule "3rdparty/cutlass"]
        active = true
        url = https://github.com/NVIDIA/cutlass
[submodule "dlpack"]
        active = true
        url = https://gitee.com/zxros10/dlpack.git
[submodule "dmlc-core"]
        active = true
        url = https://gitee.com/zxros10/dmlc-core.git
[submodule "3rdparty/libbacktrace"]
        active = true
        url = https://gitee.com/zxros10/mirror-tlc-pack-libbacktrace.git
[submodule "3rdparty/rang"]
        active = true
        url = https://gitee.com/zxros10/mirror-rang.git
[submodule "3rdparty/vta-hw"]
        active = true
        url = https://gitee.com/zxros10/tvm-vta.git

注意.git/config和.gitmodules中都要修改。修改后下载子仓

git submodule init
git submodule update

2.2 编译环境准备

安装编译依赖包

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

2.3 tvm源码编译

mkdir build
cp cmake/config.cmake build

config.cmake中配置了需要编译的组件,因为我的环境没有GPU,虚拟机环境也用不GPU,所以确定config.cmake中set(USE_CUDA OFF)。同时set(USE_GRAPH_EXECUTOR ON)、set(USE_PROFILER ON)、set(USE_RELAY_DEBUG ON)。这些配置需要根据开发环境和需求决定打开还是关闭。特别需要注意的是,如果要使用llvm必须将set(USE_LLVM OFF)的值修改为你的llvm-config文件路径,例如我的设置是set(USE_LLVM /home/study/llvm/bin/llvm-config)

然后在build目录下执行编译命令

cd build
cmake ..
make -j4

2.4 设置TVM环境变量

在~/.bashrc中使用tvm代码路径设置TVM_HOME环境变量,并将tvm的python库路径加入PYTHONPATH。例如我的配置:

export TVM_LOG_DEBUG="ir/transform.cc=1;relay/ir/transform.cc=1"
export TVM_HOME=$HOME/tvm/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}

然后执行

source ~/.bashrc

2.5 测试安装是否成功

执行命令

study@ubuntu:~/tvm/tvm$ python3
Python 3.8.10 (default, Nov 26 2021, 20:14:08) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tvm
>>> 

如果没有错误回显,表示安装成功。如果有报错找不到某个module,可以使用pip3 install安装即可

参考

【clang+LLVM】环境配置 二进制包安装步骤(release) 基于ubuntu18.04的llvm10.0.0
https://blog.csdn.net/qq_45335399/article/details/112715897

TVM-安装说明
https://tvm.apache.org/docs/install/from_source.html
https://blog.csdn.net/zghforever/article/details/117748979

git中submodule修改子模块的git地址
https://blog.csdn.net/liaoyanyunde/article/details/114883670

 类似资料: