tvm优化模型

Ubuntu:

          1.先下载TVM:   git clone --recursive https://github.com/dmlc/tvm

          2.安装LLVM:

                    如果需要模型在CPU上运行,则必须安装LLVM。对于Ubuntu,TVM已经提供了编译好的库,直接下载link.

也可源码编译(方法下面给出), 但是没必要。

           3.配置:

              ① cd tvm      ②mkdir build      ③cp cmake/config.cmake  build    

              ④set(USE_LLVM /path/to/your/llvm/bin/llvm-config)

              ⑤set(USE_CUDA ON)....(需要GPU的话)

 

         4.编译:

               ①cd build         ②cmake ..         ③make -j4

 

         5.设置python路径:

              export TVM_HOME=/path/to/tvm export                                                                   PYTHONPATH=$TVM_HOME/python:$TVM_HOME/topi/python:$TVM_HOME/nnvm/python:${PYTHONPATH}

 

         能 import  tvm 说明安装成功

 

Centos:

         由于官方并没有给出llvm已经编译好的库,所以需要我们从头编译llvm,这里是6.0.0版本。编译完成后会占很大的内存,一定要确保空间足够。并且这里是源码编译(某些原因不能联网)。

源码编译llvm,其他步骤与Ubuntu相似。

 

1.下载llvm源码

wget http://llvm.org/releases/6.0.0/llvm-6.0.0.src.tar.xz
tar xf llvm-6.0.0.src.tar.xz
mv llvm-6.0.0.src llvm

2.下载clang源码

cd llvm/tools
wget http://llvm.org/releases/6.0.0/cfe-6.0.0.src.tar.xz
tar xf cfe-6.0.0.src.tar.xz
mv cfe-6.0.0.src clang
cd ../..

3. 下载clang-tools-extra源码

cd llvm/tools/clang/tools
wget http://llvm.org/releases/6.0.0/clang-tools-extra-6.0.0.src.tar.xz
tar xf clang-tools-extra-6.0.0.src.tar.xz
mv clang-tools-extra-6.0.0.src  extra
cd ../../../..

4. 下载compiler-rt源码

cd llvm/projects
wget http://llvm.org/releases/6.0.0/compiler-rt-6.0.0.src.tar.xz
tar xf compiler-rt-6.0.0.src.tar.xz
mv compiler-rt-6.0.0.src compiler-rt
cd ../..

这样之后 clang,clang-tool-extra 和 compiler-rt 就可以和 llvm 一起编译了。

下载后,接下来就开始编译了。

 

①mkdir build  ②cd build    ③cmake path/to/llvm/source/root          ④cmake --build .   

这里到第4步就可以了,不需要继续往下编,因为我们只需要它生成的文件。

 

 

编译模型的时候:

1.target=’cuda':

      找到出错的地方 把一个向量改成[1024,1024,1024]只要  乘积大于2048就行,但是不能太大。

 

2.target='llvm -target=aarch64-linux-gnu'

   保存.so的时候不能用

libpath = "../tvm_output_lib/mobilenet.so"
lib.export_library(libpath)

因为这时候的编译器是linux下的gcc,目标确是arm板上的文件。

所以要用:

lib.export_library("xxxxx.so", ndk.create_shared)

 

对于生成直接在目标平台上运行的文件。

①:可以直接生成.o文件然后在arm上编译。

②:lib.export_library("depress_deploy.so", tvm.contrib.cc.create_shared, cc="/usr/bin/arm-linux-gnueabihf-g++")

在cc后面写上交叉编译器的g++路径。

 

实验记录:

 

检测模型(pytorch训练),利用TVM在

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值