TVM Monthly - March 2019


As discussed with TVM PMC, we would like to give a summary of the project per month, so people can get a better sense of what is going on in the community.

Feedback and suggestion are welcomed so that we can further improve the report.


In March, TVM joined Apache Software Foundation as an incubating project. (News blog).

We sincerely welcome Apache incubator mentors Markus Weimer (@markusweimer), Sebastian Schelter (@sscdotopen), Byung-Gon Chun (@bgchun), Henry Saputra (@hsaputra), Timothy Chen (@tnachen), Furkan KAMACI (@kamaci). They are members of Apache incubator and will help us go through the incubation process.
The community also welcomes new committers Morita Kazutaka (@kazum) and Yao Wang (@kevinthesun), new reviewers Xingjian Shi (@sxjscience), Wei Chen (@wweic), and Sergei Grechanik (@sgrechanik-h).

This forum grew healthily and got 48k pageviews, 1.7k user visits in the last month.

Features and Improvements

The community made progress on pushing the new differentiable IR Relay by delivering higher order auto-differentiation, pass manager, more language feature, and broader operator/frontend coverage. We also had a hot debate on the virtual machine design (#2810 #2915) and an implementation draft (#2889). Besides, the documentation for frontend users is almost transited from the old IR NNVM to Relay.

The effort on refactoring arithmetic analysis system in TVM compiler (#2588) brings unified and formalized const integer bound analyzer, modular set analyzer and rewrite simplifier.

Other improvements include increasing the robustness of CI/build, better codegen/schedule/NNPACK integration for CPU, more optimization passes, and a bunch bug fixes. Their details are listed below.

Operator Support

  • Deformable conv2d (#2908)
  • Faster-RCNN Proposal OP (#2725)
  • ROI Pool operator (#2811)
  • Gluoncv SSD support on CPU (#2353)
  • shape, reverse, and sign op (#2749, #2800, #2775)
  • tile and repeat op (#2720)
  • logical operators (#2743, #2453)
  • stack op (#2729)
  • NCHWc upsampling (#2806)
  • clip and wrap mode support in take (#2858)
  • AlterLayout support for intel_graphics conv2d , depthwise conv2d (#2729, #2806)

User Interface and Frontend

Language, Runtime and Hardware Support

  • Define more standard global functions in the preclue of relay program, includes foldr1, hd, tl, nth, list update (#2928, #2917, #2771, #2866)
  • Refactor text printer to add stream-like API and FunctionType support (#2605, #2882)
  • Improvements for NNPACK integratation, includes ci test, winograd (#2846, #2868, #2856, #2721)
  • Build a scaffold for structured error handling (#2838). The new mechanism detects and rewrites error messages so that c++ and python stack trace are unified and not redundant. Guideslines and conventions for error handling is also discussed.
  • Improvements for OpenCL runtime (#2741, #2737)

Documents, Test, and Build

Perfromance Improvement

  • Better intrinsic matching for x86 CPU and ARM CPU, includes variants of vcvtph2ps and vmlal.s16 (#2925, #2748).
  • Improve injective schedule for ARM CPU(#2801)

Compiler Improvement

  • Higher order reverse mode automatic differentiation that work with control flow (#2496)
  • Integer arithmetic analyzers, includes modular set analysis, const integer bound analysis and rewrite simplifier (#2904, #2851, #2768, #2722, #2668, #2860)
  • Pass manager for Relay (#2546)
  • Improve operator fusion for TupleGetItem in relay (#2914, #2929,
  • Compute FLOP of autotvm template for int8 models (#2776)
  • Common subexpression elimination pass in Relay (#2639)
  • Improve quantization in Relay (#2723)
  • Refactor build_func in measure module of autotvm to better support cross compiler (#2927)

People Who Reviewed Pull Requests

Note: The format is name(number of activities) Disclaimer: number of activities do not directly correspond to the community’s view about the significance of contributions

tqchen (153), MarisaKirisame (30), icemelon9 (20), srkreddy1238 (18), jroesch (17), wweic (17), yzhliu (16), Laurawly (16), kazum (12), ajtulloch (12), merrymercy (11), kevinthesun (11), masahi (10), zhiics (9), vinx13 (8), yongwww (8), slyubomirsky (7), hlu1 (7), sgrechanik-h (7), junrushao1994 (7), FrozenGene (7), ZihengJiang (6), nhynes (6), eqy (6), yidawang (6), ashutoshparkhi (6), joshpoll (5), zhreshold (4), lixiaoquan (4), apivovarov (4), abergeron (3), xqdan (3), weberlo (3), Huyuwei (2), ruslo (2), liangfu (2), antinucleon (2), haojin2 (2), KoinFlyp (2), Hzfengsy (2), tmoreau89 (1), were (1), mjs-arm (1), sxjscience (1), grwlf (1), derisavi (1), alexeyr (1), ehsanmok (1), Rasterer (1), reminisce (1), szha (1), gemfield (1), kazimuth (1), jdavies-huawei (1), jhonyguan (1), mnboos (1), zenogantner (1)

People Whose Pull Requests are Updated in the Last Month

Note: The format is name(number of activities, area list)

MarisaKirisame (25, Relay), tqchen (20, Arithmetic Simplification, AutoTVM, CI, Runtime), Laurawly (12, Relay, Metal, TOPI), icemelon9 (10, Relay, TOPI), mjs-arm (10, CI), hlu1 (9, NNPACK, TOPI), apivovarov (9, Docs, TOPI), ajtulloch (8, Codegen, TOPI), vinx13 (7, Relay, TOPI), nhynes (6, Relay, SGX), ruslo (6, iOS), ashutoshparkhi (6, Tensorflow, TOPI), kevinthesun (5, AutoTVM, TOPI), srkreddy1238 (4, Tensorflow, ONNX), kazum (4, OpenCL), eqy (4, AutoTVM), joshpoll (4, Relay), liangfu (4, VTA, Relay), yongwww (4, Tensorflow), masahi (3, Relay), abergeron (3, Relay), lixiaoquan (3, OpenCL), derisavi (3, Arithmetic Simplification), antinucleon (3, AutoTVM, TOPI), haojin2 (3, Relay, Mxnet), ZihengJiang (2, Community), jroesch (2, Relay), slyubomirsky (2, Relay), wweic (2, Relay), zhiics (2, Relay), gemfield (2, ONNX), jhonyguan (2, TOPI), XiaolongMeng (2, TOPI), merrymercy (1, Arithmetic Simplification), yzhliu (1, Java), sgrechanik-h (1, Arithmetic Simplification), imorinaga (1, Docs), FrozenGene (1, TOPI, Relay), makihiro (1, Doc), weberlo (1, Relay), vegaluisjose (1, Docs), szha (1, CI), leeexyz (1, Windows), cbalint13 (1, Tensor Expression), kazimuth (1, Rust), jdavies-huawei (1, Tensor Expression), lhelontra (1, Relay, Keras), KoinFlyp (1, Relay), mnboos (1, Linker), GalAster (1, Relay), Hzfengsy (1, Arithmetic Simplification), yTakatsukasa (1, Tensor Expression), zenogantner (1, Docs), kparzysz (1, Docs)

Bug Fixes

Click me to expand

Fix compute_inline with multiple outputs (#2934)
[TEXPR][PASS] Fix thread all reduce to avoid write after read hazzard (#2937)
[FRONTEND][TENSORFLOW] bug fix for tensorflow official slim models. (#2864)
[FRONTEND][ONNX] Some bug fixes and Shape operator fixed for relay. (#2850)
Turn on USE_SORT by default (#2916)
[DOCKER] Upgrade ci-cpu to latest v0.50 (#2901)
[TESTS] Import script robustness (set -u) (#2896)
[Relay] Fix name of bias in testing.mlp (#2892)
[TESTS] Improve script robustness (#2893)
Add dense schedules to init for cpu (#2855)
[Apps] [howto_deploy] fix cxx-flags order and build directory (#2888)
[Relay] Add TVM_DLL for ANF/GNF conversion #2883
[Relay] Fix Relay ARM CPU depthwise spatial pack schedule alter op layout issue. (#2861)
Fix setting up hints for getaddrinfo (#2872)
Add missing sgx includes (#2878)
Fix error reporting for missing axis (#2835)
Fix an OrderDict initilization bug. (#2862)
Fix Xcode 10 metal compile error (#2836)
tvmrpc: Fix includes (#2825)
Fix Team ID expected (#2824)
[DOCKER] Fix git clone failure. (#2816)
upgrade java style-check due to CVE-2019-9658 (#2817)
[Relay][Quantization] Fix duplicated simulated quantization (#2803)
[Bugfix] Repeat and tile bug fixed, relay tests added (#2804)
Fix caffe2 relay frontend (#2733)
Fix a bug in nnvm to relay converter. (#2756)
Ensure loop count is a constant before trying to unroll. (#2797) Decode bytes before output #2833
[WIN] Fix a bug in find_llvm when specify llvm-config (#2758)
[DLPACK] fix flaky ctypes support (#2759)
[Bugfix][Relay][Frontend] Fix bug in mxnet converter for slick_like (#2744)
[DOCS] Fix tutorial (#2724)
[TOPI][Relay] Fix default out_dtype for conv2d_NCHWc and Relay (#2702)
[Relay] fix checkwellform (#2705)
fix prelu, now can use on 2d input and add one test (#2875)
[CODEGEN][OPENCL] Fix compile error about ternary expression. (#2821)


Let us exclude typo fixes from bugfixes


The link should be ?


Thanks for the correction. Fixed.