Search anything:

Install and use NNVM Compiler

Binary Tree book by OpenGenus

Open-Source Internship opportunity by OpenGenus for programmers. Apply now.

Reading time: 20 minutes

NNVM compiler is a graph compiler for the TVM Stack that takes in models in NNVM Intermediate Representation format and compiles them for various backends such as LLVM, METAL, CUDA and others.

Install/ Build NNVM

  • Step 1: Clone the source
git clone --recursive https://github.com/dmlc/nnvm.git
cd nnvm
  • Step 2: Build NNVM
make -j4
  • Step 3: Build the Python Library
cd python
python setup.py install --user
cd ..

Build Graph to Runtime Library

Using NNVM Compiler, you can build the model graph in NNVM Intermediate Representation to a runtime library.

# Compile Model on NNVM compiler
import nnvm.compiler
target = 'llvm'
input_name = sym.list_input_names()[0]
shape_dict = {input_name: x.shape}
with nnvm.compiler.build_config(opt_level=3, 
          add_pass=['AlterOpLayout', 'FoldScaleAxis', 'OpFusion', 
          'PrecomputePrune', 'SimplifyInference']):
    graph, lib, params = nnvm.compiler.build(graph = sym, 
             target_host = 'llvm', target = target, 
             shape = shape_dict, 
             dtype={"int64": "int64", "float32": "float32"}, 
             params = params, layout = "NCHW")

Details/ Configurations

NNVM Compiler supports the following targets:

  • LLVM
  • CUDA
  • OpenCL

NNVM Compiler has four optimization levels:

  • 0
  • 1
  • 2 (default optimization level)
  • 3

NNVM Compiler has several pass optimizations that you may apply such as:

  • AlterOpLayout
  • FoldScaleAxis
  • OpFusion
  • PrecomputePrune
  • SimplifyInference


NNVM Compiler takes the model as two inputs:

  • Graph in NNVM Intermediate Representation
  • Params: parameters of the graph such as weights and bias


NNVM Compiler gives three outputs which we can save for later use and run:

  • graph: Compiler NNVM Graph
  • lib: defines the target environment such as LLVM
  • params: parameters of the compiler NNVM Graph such as weights and bias
OpenGenus Tech Review Team

OpenGenus Tech Review Team

The official account of OpenGenus's Technical Review Team. This team review all technical articles and incorporates peer feedback. The team consist of experts in the leading domains of Computing.

Read More

Improved & Reviewed by:

Install and use NNVM Compiler
Share this