NNVM 编译安装

安装方式通过官方链接来完成整个 nnvm 的编译安装工作。在这次调研工作中,目前我们用到的是 nnvm 需要 llvm 支持。具体编译步骤如下:

  • 下载源码:
    $ git clone --recursive https://github.com/dmlc/nnvm
    
  • 首先在编译 nnvm 前需要对 tvm 进行编译安装。上面克隆下来的源码目录下已经有完整的 tvm 源码,无需手动再下载 tvm 源码。为了获得利用 llvm 版本的 tvm,可以按照如下方式进行编译:(默认在 nnvm/ 下)
    $ cd tvm
    $ cp make/config.mk ./
    $ 编辑 config.mk 中的内容,指定 llvm-config (在 llvm 完成编译后的 bin 目录下, 如果 bin 在 PATH 环境变量中,可不带路径) 的路径:LLVM_CONFIG = /path/to/llvm/bin/llvm-config
    $ make -j8
    

此时在 tvm 目录下将出现 build 和 lib 文件夹,正常编译后在 lib 中能够生成两个动态库文件,libtvm_runtime.solibtvm.so. 需要将 lib 内容中的动态库导入到系统动态库环境变量中(Linux 下为 LD_LIBRARY_PATH, MacOS 下为 DYLD_LIBRARY_PATH), 在执行下面命令前更新当前终端的环境变量。

下面安装 tvm 的 python 支持:(默认开始为 tvm 目录下)

$ cd python
$ python setup.py install --user
$ cd ../topi/python
$ python setup.py install --user

此后需要更新环境变量中的 PYTHONPATH: PYTHONPATH=/path/to/nnvm/tvm/topi/python:${PYTHONPATH}

下面开始安装 nnvm : (默认开始为 nnvm 目录下)

$ make

此时目录下将出现 build 和 lib 文件夹,正常编译后在 lib 中能够生成一个动态库文件和静态库文件 libnnvm-compiler.solibnnvm.a. 需要将 lib 内容中的动态库导入到系统动态库环境变量中(Linux 下为 LD_LIBRARY_PATH, MacOS 下为 DYLD_LIBRARY_PATH), 在执行下面命令前更新当前终端的环境变量。静态库不需要考虑。

下面安装 nnvm 的 python 支持:(默认开始为 nnvm 目录下)

$ cd python
$ python setup.py install --user

此后需要更新环境变量中的 PYTHONPATH: PYTHONPATH=/path/to/nnvm/python:${PYTHONPATH}

对完成编译后的 nnvm 进行简单测试:(使用 python 2.7)

$ python
>> import nnvm.compiler
>> import nnvm.symbol as sym
>> x = sym.Variable("x")
>> y = sym.Variable("y")
>> z = sym.elemwise_add(x, sym.sqrt(y))
>> compute_graph = nnvm.graph.create(z)
>> print(compute_graph.ir())
Graph(%x, %y) {
  %2 = sqrt(%y)
  %3 = elemwise_add(%x, %2)
  ret %3
}
>> deploy_graph, lib, params = nnvm.compiler.build(compute_graph, target="llvm")

没有出现报错信息即编译正常。

results matching ""

    No results matching ""