TVM Monthly - April 2021

As discussed by the TVM PMC, our goal is to provide a monthly summary of the project so users and developers can get a better understanding of the goings on of the TVM community.

Feedback and suggestions are welcomed so that we can further improve these updates.

Community

During April of 2021 we welcomed many new contributors to the project. Importantly we welcomed @kevinthesun as a PMC member, @Meteorix, @Hzfengsy, @spectrometerHBH, and @giuseros as reviewers.

Thanks to everyone for their hardwork and contributions!

On the technical side we kept working on improving operator and frontend support, especially a large set of ONNX support has been landed. As have been discussed in TensorIR: A schedulable IR for TVM, we are incrementally adding features to this new type of tensor-level IR in TVM. The entire progress is tracked in TensorIR Scheduling Tracking Issue. MicroTVM has been enhanced and supports Zephyr on RISC-V QEMU. Moreover, we further improved the passes in Relay and provided a unified interface for profiling between the graph runtime and Relay VM. The community has also improved documents and tutorials a lot.

This forum got 122k pageviews, 3.0k user visits in the last month.

Relay

  • [PatternMatcher] Support matching tuples, call nodes, and functions with variable numbers of inputs #7754
  • RelayTextPrinter is now non-recursive. ExpandDataflow refactored #7817
  • [Relay] Recursive destructor call replaced with non-recursive for Call nodes. #7832
  • [Relay][Pass] Avoid stack overflow when using PostOrderRewrite #7588
  • [Relay][Pass] SimplifyCastLike/Cast and ConcretizeFullLikeRewrite rewrites for SimplifyExpr #7827
  • [Relay] Add support for relay expressions as pad value for static pad #7860
  • [ConvertLayout] Keep span in ConvertLayout #7895
  • [ConvertLayout] Squeeze and reduce ops #7835
  • [Topi & Relay] Add quantization support for the vision transform model in GPU #7814
  • [Relay][Op] Logical Not Shape Function #7820

Tensor-level IR and Arithmetics

  • [TIR] Add a new intrinsic count leading zeros for LLVM and SPIR-V #7825
  • [TIR][TRANSFORM] Return value support in tir.tvm_call_packed #7932
  • [TensorIR][PASS][M1c] PlanUpdateBufferAllocationLocation #7873
  • [TensorIR][M1c] LCA detector #7848
  • [TensorIR][M1c] LowerInitBlock #7806
  • [TensorIR][PASS][M1c] CompactBufferAllocation #7923
  • [TensorIR] [Script] adding support for opaque block #7829
  • [TensorIR][M1b] Scaffolding ScheduleState data structure #7765
  • [TensorIR][M1b] Schedule class #7847
  • [TIR] An analysis pass to calculate workspace size for primfuncs #7859
  • [ARITH] Subspace division #7760

Language Bindings

  • [Rust] Make TVM Rust bindings installable via Cargo. #7503

Frontend

ONNX

  • [ONNX] Support optional outputs for ONNX nodes #7818
  • [ONNX] Initial work to import pre-quantized ONNX Models #7802
  • [ONNX] Dynamic Gather #7787
  • [ONNX][TOPI][RELAY] Resize refactor #7883
  • [ONNX] Fix more upstream tests #7842
  • [ONNX] Support importing Conv with missing attributes #7899
  • [ONNX] Support NMS Center Box #7900
  • [ONNX] Bitshift Operator #7800
  • [TOPI][RELAY][ONNX] Scatter ND #7927
  • [TOPI, Relay] A new NMS op variant for ONNX NMS / TF Combined NMS #7796
  • [Relay][ONNX] 1-D global and adaptive pooling. #7906
  • [Relay]Frontend][Onnx] Remove pop that interferes with nested loops. #7781
  • [ONNX] Collect quant params of pre-quantized ONNX and generate qnn op #7937
  • [ONNX] Make input shape immutable #7844

Tensorflow and TFLite

  • [Frontend][Tensorflow] Support SAME padding for dynamic h, w when stride == 1 #7885
  • [QNN][TFLite] TFLite rounding mode support #7456
  • [frontend][tflite] float16 quant support #7736
  • Quantized RESIZE_BILINEAR operator support in TF Lite Frontend #7866

Backend

  • [TOPI][SPIRV] Cast to float32 not float64 before log2 in sort/scan #7669
  • [Vulkan] Support uniform buffer object for passing many scalar arguments (Take 2) #7833
  • [Hexagon] Reenable compilation of TVM runtime for Hexagon #7784
  • [CodeGen][OpenCL] Limit OpenCL built-in vector lanes to 2, 3, 4, 8, 16. #7777

Compilation Flow and API

  • [TVMC] --disable-pass option added to compile mode #7816
  • [Target] Add support for target object with host field compatible with previous api #7534
  • [Target][Lowering] Update Op Intrinsic Lowering Mechanism And Intrinsic Lowering Pass #7809
  • [TVMC] Separate model loading from model compilation in TVMC. #7739
  • [TVMC] Allow direct numpy inputs to run_module #7788
  • [TVMC] Autotuning - Hardware configs not default #7792

Ansor, Autoscheduler and AutoTVM

  • Protect child process enumeration in AutoTVM #7887
  • Enable StackVM in AutoTVM #7897
  • [AutoScheduler] Add task.desc for its function name #7794

MicroTVM

  • [microTVM] Add error reporting module to microTVM runtime #7671
  • [microTVM] Update nrfjprog on reference virtual machine #7723
  • [microTVM] Zephyr: RISCV support for Zephyr QEMU RISCV-32/64 #7804
  • [µTVM] Zephyr: Add STM32F746 disco board as a test platform #7863
  • [µTVM] Clone Zephyr 2.5.0 from maintenance branch #7891
  • [µTVM] Add support for mps2_an521 board #7813
  • [µTMV] apps: Fix Zephyr code example for STM32F746 boards #7772
  • [µTVM] Zephyr: Add MPS2-AN521 board as a test platform #7864
  • Allow microTVM Reference VM to be launched when TVM is a submodule. #7854

Runtime

  • [Profiling,VM] Profiling interface for VM and Graph Runtime #7624
  • [PROFILER] Add CSV output to profiler #7797
  • [Runtime] Driver version + consistent clock speed units #7867
  • [Refactor][VM] Port memory_alloc to c++ #7369
  • [RUNTIME] Add clear() function in tvm::Map class #7826

Build and CI

  • [CI] v0.7 CI updates #7947
  • Rev ci-qemu container to v0.04 #7946
  • [µTVM] Try to fix qemu hangs in the CI #7590 #7769
  • [CI] Rust CI Changes #7773
  • Disable Rust CI #7793
  • [CI] add the --net=host cmd line arg to the docker/bash.it script #7780
  • [CI] docker images build script cmd line args optional #7776
  • Use new SBT Debian Repo before bintray is shutdown #7926

Doc

  • [docs] Getting Started With TVM: Tensor Expressions #7768
  • [docs] Getting Started with TVM: Auto Tuning with Python #7767
  • [DOCS] Remove stale Auto TensorCore CodeGen tutorial #7924
  • [DOCS][BUILD] Small improvements to documentation/build setup for first-time builds #7840
  • [Docs] Update Dev. Doc. on how to add a new relay operator #7893
  • [RELEASE] Update NEWS.md for v0.7 #6613
  • Update ICHECK error message with link to documentation page. #7869
  • [DOC] Grammar fix #7824

Improvement and Bugfix

  • [TIR][SPIR-V] Fix computing clz on int64 input for vulkan #7913
  • [Relay] Shape func fix for all_class_nms and where op #7910
  • [Hotfix] Typo in Vulkan runtime change causing severe perf regression for dGPU #7871
  • [RUNTIME][BUGFIX] Fix DSO module problem when its parent get destructed. #7918
  • [RPC][REFACTOR] Use PopenWorker to handle RPC Server. #7889
  • [VTA] Update vta-hw dependency #7874
  • fix compiling warning in simplify_expr.h #7828
  • [RPC] microtvm: fix RPC large transfer size issue #7838
  • [microTVM] Update Zephyr 2.5 #7786
  • [microTVM] Refactor zephyr installation + Update Zephyr RVM doc #7915
  • [microTVM] Fix RVM onnx dependency and Zephyr document update #7774
  • [FIX] Fix howto_deploy #7841
  • [FIX] tvm.testing.parametrize_targets documentation for arguments does not match what it is acutally using #7778
  • [FIX] Make HashCombine stable across platforms #7801
  • [FIX] Fix RPC for the VM #7810
  • [Tophub] Race condition fixed in folder creation #7940
  • [BYOC][TVMC] bugfix: disabled_pass → disable_pass #7850
  • [BYOC][ACL] ACL migrated to v21.02 #7649
  • Fix typos in comments #7862
  • Bring back GraphRuntimeFactory loader for now. #7868
  • Fix Zephyr flashing on physical hardware, busted in #7813 #7853
  • [Target] Update tags with minor fix #7448
  • [Target] Fix empty target and host for autotvm task #7791
  • [TE] Fix bug if find a loop in compute_at attach path #7898
  • [TE] Bugfix for reduction that involves multi-outs with where cond #7692
  • [CodeGenC] Fix bugs when calling extern functions #7911
  • [Tensorize] Fix compute reusing #7920
  • [TVMC] Runner.py Updates #7779
  • [autodiff] change truncdiv to div in EliminateDivModMutator #7943
  • Remove pointer arithmetic in StorageObj::AllocNDArray #7890
  • Fix compilation errors with clang 11 #7783
  • [ROCM][Bugfix] Thread local handle for rocblas #7851
  • [TF frontend][bugfix]Avoid making a new node when already has span info #7789
  • [BugFix] Print doubles with precision 17 in SaveJSON and TVM script printer #7846
  • Remove unnecessary bracket around make_int #7907
  • Fix PyTorch matmul conversion when given (2-dim, N-dim) input pair #7845
  • Added missing include file #7808
  • Fix Metal accuracy problem caused by 3 vectors usage #7830
  • [BugFix]: Convert tuple to int #7880
  • [FIX] skip_conv_layers will affect quantization of nn.dense #7795

People Whose Pull Requests are Updated

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.

mbrookhart (10), masahi (9), tqchen (8), Hzfengsy (8), mehrdadh (7), tkonolige (6), d-smirnov (6), gromero (6), areusch (5), zxybazh (5), leeexyz (4), CircleSpin (4), jroesch (3), jwfromm (3), hgt312 (3), Lunderberg (3), AndrewZhaoLuo (3), merrymercy (2), zhiics (2), tmoreau89 (2), lixiaoquan (2), junrushao1994 (2), kparzysz-quic (2), altanh (2), csullivan (2), hogepodge (2), PENGUINLIONG (2), jtuyls (2), huochaitiantang (2), mherkazandjian (2), ZihengJiang (1), comaniac (1), trevor-m (1), FrozenGene (1), ANSHUMAN87 (1), ajtulloch (1), huajsj (1), giuseros (1), rkimball (1), codeislife99 (1), xqdan (1), spectrometerHBH (1), manupa-arm (1), euntaik (1), ymwangg (1), tristan-arm (1), mdw-octoml (1), Beya2019 (1), haojin2 (1), NicolaLancellotti (1), domin1985 (1), MasterJH5574 (1), Wheest (1), ghostplant (1), yuchaoli (1), llehtahw (1), xndcn (1), alopez1327 (1), akmaru (1), elvin-nnov (1), Mousius (1), chunit-quic (1), CaptainDuke (1), AD1024 (1)

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 (64), comaniac (32), jwfromm (21), areusch (20), junrushao1994 (19), jcf94 (17), mbrookhart (13), tmoreau89 (13), masahi (11), leandron (11), jroesch (9), tkonolige (7), Hzfengsy (5), yzhliu (4), FrozenGene (4), altanh (4), mehrdadh (4), MasterJH5574 (4), icemelon9 (3), kevinthesun (3), trevor-m (3), mbaret (3), giuseros (3), u99127 (3), electriclilies (3), mdw-octoml (3), zhiics (2), anijain2305 (2), vinx13 (2), wweic (2), huajsj (2), xqdan (2), gromero (2), csullivan (2), hogepodge (2), zxybazh (2), michalpiszczek (2), ZihengJiang (1), Laurawly (1), lixiaoquan (1), hlu1 (1), slyubomirsky (1), ANSHUMAN87 (1), lhutton1 (1), rkimball (1), yidawang (1), leeexyz (1), echuraev (1), hzfan (1), Meteorix (1), rohanmukh (1), elvin-nnov (1), LuukOddity (1)