TVM安装

大憨熊 提交于 2020-02-16 14:35:06

为什么选择TVM

为提升深度学习模型的推理效率,设备平台制造商针对自己的平台推出优化的推理引擎,例如NAVIDA的tensorRT,Intel的OpenVINO,Tencent针对移动端应用推出NCNN等。目前,深度学习模型应用广泛,在服务端和移动端都有应用,甚至于特殊的嵌入式场景想,它们都有加速模型推理的需求。
  TVM介是从深度学习编译器的角度来做推理引擎,目前技术领域还比较新,具体技术细节以后有机会会深入学习,这里主要想体验一下使用TVM做深度模型推理,重点是推理效率的提升,所以尝试安装下TVM测试下。

相关版本

```bash
gcc版本 6.4.0
cmake 3.16.4
llvm 我选择的版本为llvm-9.0.0
```
  • gcc 安装

    • 查看系统版本
      cat /etc/redhat-release
      
    • 查看默认的gcc版本
      gcc --version
      
    • 查看默认动态库
      strings /usr/lib64/libstdc++.so.6 | grep GLIBC
      
      GLIBCXX_3.4
      GLIBCXX_3.4.1
      GLIBCXX_3.4.2
      GLIBCXX_3.4.3
      GLIBCXX_3.4.4
      GLIBCXX_3.4.5
      GLIBCXX_3.4.6
      GLIBCXX_3.4.7
      GLIBCXX_3.4.8
      GLIBCXX_3.4.9
      GLIBCXX_3.4.10
      GLIBCXX_3.4.11
      GLIBCXX_3.4.12
      GLIBCXX_3.4.13
      GLIBCXX_3.4.14
      GLIBCXX_3.4.15
      GLIBCXX_3.4.16
      GLIBCXX_3.4.17
      GLIBCXX_3.4.18
      GLIBCXX_3.4.19
      GLIBC_2.3
      GLIBC_2.2.5
      GLIBC_2.14
      GLIBC_2.4
      GLIBC_2.3.2
      GLIBCXX_DEBUG_MESSAGE_LENGTH
      
    • 下载gcc源码
      cd /usr/local/src/
      wget http://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz
      tar -xf gcc-6.4.0.tar.xz -C /usr/src
      cd /usr/src/gcc-6.4.0
      # 自动下载mpfr-2.4.2.tar.bz2、gmp-4.3.2.tar.bz2、mpc-0.8.1.tar.gz和isl-0.15.tar.bz2软件包
      ./contrib/download_prerequisites
      ./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
      make -j4
      make install
      
    • 配置gcc
      find / -name "libstdc++.so*"
      # /usr/src/gcc-6.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22
      
      cd /usr/lib64
      cp /usr/src/gcc-6.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 libstdc++.so.6.0.22
      mv libstdc++.so.6 libstdc++.so.6.old
      ln -sv libstdc++.so.6.0.22 libstdc++.so.6
      #######
      strings /usr/lib64/libstdc++.so.6 | grep GLIBC
      
      GLIBCXX_3.4
      GLIBCXX_3.4.1
      GLIBCXX_3.4.2
      GLIBCXX_3.4.3
      GLIBCXX_3.4.4
      GLIBCXX_3.4.5
      GLIBCXX_3.4.6
      GLIBCXX_3.4.7
      GLIBCXX_3.4.8
      GLIBCXX_3.4.9
      GLIBCXX_3.4.10
      GLIBCXX_3.4.11
      GLIBCXX_3.4.12
      GLIBCXX_3.4.13
      GLIBCXX_3.4.14
      GLIBCXX_3.4.15
      GLIBCXX_3.4.16
      GLIBCXX_3.4.17
      GLIBCXX_3.4.18
      GLIBCXX_3.4.19
      GLIBCXX_3.4.20
      GLIBCXX_3.4.21
      GLIBCXX_3.4.22
      GLIBC_2.3
      GLIBC_2.2.5
      GLIBC_2.14
      GLIBC_2.17
      GLIBC_2.3.2
      GLIBCXX_DEBUG_MESSAGE_LENGTH
      
  • cmake 安装

    # 解压Cmake压缩包
    tar -zxvf cmake-3.16.4.tar.gz
    # 进入Cmake文件夹
    cd cmake-3.16.4
    # 运行bootstrap
    ./bootstrap
    # 编译gmake
    gmake
    # 进行安装Cmake
    gmake install
    

Step1 llvm安装

llvm源码下载
llvm安装教程
在这里插入图片描述
下载 Sources下除libunwind source code及LLVM Test Suite外的所有源码

  • 下载LLVM源码并重命名为llvm

    tar xvf llvm-9.0.0.src.tar.xz
    mv llvm-9.0.0.src llvm
    
  • 下载 Clang源码并重命名为clang

    tar xvf cfe-9.0.0.src.tar.xz
    mv cfe-9.0.0.src clang
    mv clang llvm/tools
    
  • 下载 Clang-extra-Tools源码并重命名为extra

    tar xvf clang-tools-extra-9.0.0.src.tar.xz
    mv clang-tools-extra-9.0.0.src extra 
    mv  extra llvm/tools/clang/tools
    
  • 下载LLD linker [可选,链接器]并重命名为lld

    tar xvf lld-9.0.0.src.tar.xz
    mv lld-9.0.0.src lld 
    mv lld llvm/tools
    
  • 下载 Polly Loop Optimizer [可选] 循环和数据优化器,并重命名polly

    tar xvf polly-9.0.0.src.tar.xz
    mv polly-9.0.0.src polly
    mv polly llvm/tools
    
  • 下载 Compiler-RT并重命名为compiler-rt

    tar xvf compiler-rt-9.0.0.src.tar.xz
    mv compiler-rt-9.0.0.src compiler-rt
    mv compiler-rt llvm/projects
    
  • 下载 Libomp [可选]支持openmp

    tar xvf openmp-9.0.0.src.tar.xz
    mv openmp-9.0.0.src openmp
    mv openmp llvm/projects
    
  • 下载 libcxx and libcxxabi:

    tar xvf libcxx-9.0.0.src.tar.xz
    mv libcxx-9.0.0.src libcxx
    mv libcxx llvm/projects
    
    tar xvf libcxxabi-9.0.0.src.tar.xz
    mv libcxxabi-9.0.0.src libcxxabi
    mv libcxxabi llvm/projects
    
  • 下载 Test Suite Source Code [可选],llvm测试

    tar xvf test-suite-9.0.0.src.tar.xz
    mv test-suite-9.0.0.src test-suite
    mv test-suite llvm/projects
    

    llvm 为了防止污染源码,不能在源码目录直接安装,在 llvm 同级目录下新建一个 build 目录,进入再安装

    cmake -G "Unix Makefiles" \
      -DLLVM_ENABLE_ASSERTIONS=On \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_CXX_COMPILER=/usr/local/bin/c++ \
      -DLIBCXXABI_LIBC_INCLUDES= /path/llvm/projects/libcxx/include \
      ../llvm
    
    make -j4
    make install
    

Step2 TVM安装

tvm Install from Source

git clone --recursive https://github.com/apache/incubator-tvm tvm
git submodule init
git submodule update

cd tvm $$ mkdir build
cp cmake/config.cmake build
# 编辑config.cmake 然后将USE_LLVM OFF 改为 set(USE_LLVM /usr/bin/llvm-config)
# set(USE_CUDA OFF)     --->set(USE_CUDA ON)  
# set(USE_LLVM OFF)     --->set(USE_LLVM ON)
# 
cd build
cmake .. //如果需要gdb跟踪源码的话需要加-DCMAKE_BUILD_TYPE=Debug
make -j4
make install

tvm系统配置

vim ~/.bashrc

export TVM_PATH=/yourpath/to/tvm  # 你自己tvm
export PYTHONPATH=$TVM_PATH/python:$TVM_PATH/topi/python:$TVM_PATH/nnvm/python:${PYTHONPATH}

source ~/.bashrc

END!!!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!