encodump

encodump is a dumper for coco IR generated by enco

How to use

Sources for encodump are:

  1. enco frontend library *.so file
  2. model description file for matching to enco frontend
$ path/to/encodump \
         --frontend [enco frontend library .so file]
         --frontend-arg [model file] ...

Currently supported enco frontends are Caffe and tensorflow lite. For Caffe, both *.prototxt and *.caffemodel are required, and for TFlite, *.tflite flatbuffers file is required.

Output is dumped into terminal.

Example

nncc$ ./build/compiler/encodump/encodump \
         --frontend ./build/compiler/enco/frontend/tflite/libenco_tflite_frontend.so \
         --frontend-arg ./build/compiler/enco/test/tflite/Conv2D_000.tflite

Output:

<Module>
  <Block> (index: 0)
    <Inst>:
      Eval (0x10cfa90)
        out: 0x10cf960
        <op>: 
          Load(0x10cf600, obj: 0x10cd670)
          Conv2D(0x10cf8a0, ker obj: 0x10cf2d0, padding [T/B/L/R=0,0,0,0], stride [V/H = 1,1])
    <Inst>:
      Eval (0x10cff80)
        out: 0x10cfb20
        <op>: 
          Load(0x10cfe70, obj: 0x10cfcc0)
          Load(0x10cfdd0, obj: 0x10cf960)
          Add
    <Inst>:
      Copy (0x10d0120)
        from: 0x10cfb20
        into: 0x10cfff0
    <Inst>:
      Copy (0x10d01f0)
        from: 0x10cfff0
        into: 0x10cf210
  <Input>: bag 0x10ce650, name=ifm
  <Output>: bag 0x10ce9c0, name=ofm
  <Bag>:
    0x10ce650, obj: [0x10cd670], size: 18, input, const, reader: [x], updater: [x], 
    0x10ce770, obj: [0x10cf2d0], size: 2, const, reader: [x], updater: [x], 
    0x10ce890, obj: [0x10cfcc0], size: 1, const, reader: [x], updater: [x], 
    0x10ce9c0, obj: [0x10cf210], size: 9, output, const, reader: [x], updater: [x], 
    0x10cf9d0, obj: [0x10cf960], size: 9, const, reader: [x], updater: [x], 
    0x10cfbe0, obj: [0x10cfb20], size: 9, const, reader: [x], updater: [x], 
    0x10d0060, obj: [0x10cfff0], size: 9, const, reader: [x], updater: [x], 
  <Object>:
    0x10cd670, bag: 0x10ce650, kind: Feature, Shape [H/W/D=3,3,2], producer: x, comsumer: [op: 0x10cf600]
    0x10cf210, bag: 0x10ce9c0, kind: Feature, Shape [H/W/D=3,3,1], producer: instr: 0x10d01f0, comsumer: [x]
    0x10cf2d0, bag: 0x10ce770, kind: Kernel, Shape [N/H/W/D=1,1,1,2], producer: x, comsumer: [op: 0x10cf8a0]
    0x10cf960, bag: 0x10cf9d0, kind: Feature, Shape [H/W/D=3,3,1], producer: instr: 0x10cfa90, comsumer: [op: 0x10cfdd0]
    0x10cfb20, bag: 0x10cfbe0, kind: Feature, Shape [H/W/D=3,3,1], producer: instr: 0x10cff80, comsumer: [inst: 0x10d0120]
    0x10cfcc0, bag: 0x10ce890, kind: Feature, Shape [H/W/D=3,3,1], producer: x, comsumer: [op: 0x10cfe70]
    0x10cfff0, bag: 0x10d0060, kind: Feature, Shape [H/W/D=3,3,1], producer: instr: 0x10d0120, comsumer: [inst: 0x10d01f0]