为什么选择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安装
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!!!
来源:CSDN
作者:血_影
链接:https://blog.csdn.net/xxboy61/article/details/104286913