TVM Monthly - March 2020

As discussed by the TVM PPMC, 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

We welcome three new reviewers in previous month, @optima2005, @abergeron, @jwfromm.

This forum got 104k pageviews, 3.1k user visits in the last month.

Features and Improvements

In the previous month, we continue to see more code refactor in the TVM project, and TVM now requires python 3.6 and C++14 by default. Meanwhile, VTA separates the hardware and software codebase where the hardware part now becomes a standalone repo and the software part remains in TVM. Relay has better support for bring your own codegen including a new graph paritition pass. At frontend side, PyTorch frontend converter starts to support control flow including if and loop. Besides, the community continues contributing performance improvement, operator coverage, and more fixes to the TVM codebase in last month.

Pull Requests

The below is high-level summary of the PRs closed in the last month grouped by area.

IR

  • Introduce tir::PrimFunc #5070
  • Update the type_keys to reflect the code-org #5074
  • Fix AttrEqual for Array and StrMap, double #5054
  • Introduce StructuralHash for the Unified IR. #5160
  • Introduce StructuralEqual Infra for the unified IR. #5154
  • Add dump and print for debugging (NFC) #5207

Relay

  • Relay pass to use fast exp/tanh #4873
  • Add inline pass #4927
  • Target annotation for external codegen #4933
  • BatchNorm support with run-time mean and variance calculation #4990
  • add operation tan to TVM #4938
  • outline and inline lifted functions for external codegen #4996
  • Reduce plevel of conv2d winograd implementation on cuda #4987
  • Remove primitive attribute from composite function #5014
  • Add submodule extraction pass #4960
  • Refactor Adaptive pool and add 3d support #5049
  • Support for Int8 schedules - CUDA/x86 #5031
  • Dilation2D operator support #5033
  • Refactor Relay Python to use new FFI #5077
  • Fix relay node registration after refactor #5083
  • Codegen_c.h should include relay.function #5093
  • Move expr.Function to function.py #5087
  • operator support NonZero #5073
  • new PR to re-add tan to TVM #5025
  • Propagate constant to subgraphs #5094
  • Adjust strategy plevel to achieve expected performance by default #5118
  • Isfinite operator #4981
  • Unravel Index operator #5082
  • add operation tan to TVM (#4938)" #5017
  • GradientCell Relay Pass #5039
  • Added a AnnotatedRegion utility class #5030
  • Register topi schedule for Relay fast_exp and fast_tanh #5131
  • Support TupleGetItem in body of pattern #5106
  • Add MergeCompilerRegions pass #5134
  • Partition graph codestyle fixes #5202
  • Re-wrote the Graph Partitioner to support multiple outputs #5143
  • Fixes to MergeCompilerRegions #5195

Torch

  • Upsampling op support and enable registering a user defined op conversion map #4961
  • fix unordered dictionary problem for python version under 3.6 #4982
  • Check graph inputs match expected #4992
  • Add support for quantized models via QNN #4977
  • Add initial control flow support #4964
  • Remove FP32 piggy back and use QNN add/mul/concatenate #5061
  • Add missing upcast to uint8 avg_pool conversion #5089
  • Add initial 3D op support and test on Resnet 3D #5075
  • Fix conv2d conversion for group conv (group > 1 but != in channels) #5132
  • Add support for max_pool1d #5142
  • Add support for split #5174

Tflite

  • FLOOR_MOD & FLOOR_DIV support #4971
  • Activation functions support #4978
  • Round op parsing support added #5022
  • DepthToSpace and SpaceToDepth support #5041
  • TOP_K op parser support #5051

Frontend

  • ReadVariableOp operator support #4952
  • support multiply outputs #4980
  • Reduce_any op parsing support #4926
  • TensorFlow Parser Control Flow Enhancement #5020
  • TensorFlow Frontend support with shared params #5042
  • Support for AddV2 in Relay Tensorflow frontend converter. #5046
  • conv3d frontend operator support #5080
  • Max_pool3d and Averagepool3d operator support #5085
  • Support for Atan/Atan2 in Relay Tensorflow frontend converter. #5104
  • Use leaky by default for LeakyReLU #5192

Topi

  • Move Dilation2d from nn to image namespace #5110
  • Use Thrust sort for argsort and topk #5097
  • Conv2d and Dense ops support on Tensor Core #5099
  • Setting workload correctly for Depthwise Spatial conv ARM. #5182

CI

  • pin xgboost dependency version to 0.90 #4965
  • Temporary disable rust test #5029
  • Change Rust version to stable in Docker #5138
  • Update rust docker #5141
  • Move build configuration to shell scripts #5164
  • Improve VTA build message and scripts. #5170

Refactor

  • refactor build module to take IRModule #4988
  • Streamline Function Attr interface. #5045
  • Separate analysis and transform passes #5035
  • Make target codegen take IRModule and PrimFunc. #5107
  • Relay Node::make to constructor #5128
  • Introduce PrimFuncPass. #5139
  • Introducing VTA_HW_PATH for easier migration #5163
  • alpha_equal to structural_equal #5161
  • relay::StructuralHash to tvm::StructuralHash #5166
  • Remove AttrsEqual and AttrsHash related code #5169
  • Migrate Low-level Passes to Pass Manager #5198
  • Introduce ExprDeepEqual, Remove IRDeepCompare #5206

Runtime

  • Export GraphRuntime in tvm_runtime.dll #5002
  • fix unused-value warning #5140
  • crt error handling #5147
  • MISRA-C compliant TVM runtime #3934
  • Bundle deployment with static linking #5158

Vta

  • Change Scala Linter scalafmt => scalastyle #4998
  • Chisel fixes and de10nano support #4986
  • VTA hardware/software codebase re-org #5037
  • HW sources refactor #5188

Qnn

  • Add support for quantized models via QNN (#4977)" #5013
  • Support 4D padding. #5036

Docs

  • Move git_howto to rst, add Stage documents to te #5055
  • Add doc for Relay op strategy #5078
  • Update relay docs #5112
  • include a tarball of docs, add a security faq #5119
  • Cleanup docs before rebuild #5127
  • Minimize necessary doc change #5129
  • Various sphinx related fix. #5168
  • Point docs to the ASF site. #5178
  • Use https link #5183
  • Reduce artifcats generated by sphinx gallery #5208

Fixes

  • fix docs errors #4973
  • Refine the example description of max/min/sum/tag_scope #4974
  • Fix gcn tutorial failure #4994
  • @huajsj -> Reviewer #4993
  • Fix stride default value None in torch.nn.functional.avg_pool #4984
  • fix ROCm strategy for winograd conv selection #5001
  • @optima2005 -> reviewer #5004
  • kill from tvm import te #5007
  • Docs and Readme updated as per new namespace change #4989
  • Fix gpu not found when running TVM docker #4975
  • typo #5008
  • Add support for quantized models via QNN #5016
  • Revive the Rust + SGX refactor #4976
  • Implemented kDLCPUPinned (cudaMallocHost) #4985
  • Early checking added and new test cases added for schedule fuse #5010
  • Tighten split's extent #4931
  • Adding a few missing math intrin #5011
  • Revert "Conditions updated to cover better user scenarios" #5032
  • Revert "Tighten split's extent" #5027
  • Conditions updated to cover better user scenarios #4951
  • Conv3D ONNX support and conv3D_ncdhw x86 schedules #4949
  • Conditions updated to cover better user scenarios #5043
  • Add String container #4628
  • Set split node's range to minimum of ext and split factor or split np… #5044
  • Fixed div by zero core dump. Fixed rounding intrinsics on int crash #5026
  • Test case modified for int type #5012
  • CI: Install apt-transport-https #5053
  • Fix autotvm customized template #5034
  • fix typo #5058
  • Add opt out operator for has_multiple_inputs for graph tuner #5000
  • Bug Fix for ARM CPUs. Lower strict assumption. #5063
  • Add support for FusedBatchNormV3 #5065
  • Triage the testcases to fit the the new namespaces #5071
  • Require python3.6 #5057
  • Require c++14 by default #5056
  • Tensorflow/lite scripts upgrade from 1.13.1 to 2.0.0 #4963
  • Change Azure pipeline badge to GH actions #5081
  • Explicitly cast min/max operands #5090
  • Description updated for pooling attributes #5091
  • Fix vta tutorial after relay function refactor #5095
  • Support QNN ops. #5066
  • Enhance CUDA codegen for SelectNode #4983
  • Replace UseDefaultCompiler with GetAttr #5088
  • Add colors to compute_at edges and thread/block indices. #5111
  • Temporary fix to the stack overflow issue in autotvm task extraction #5019
  • Fix compilation of If-Elses #5040
  • Fix CompilerAttrs #5109
  • TVM android camera demo #5005
  • Update the tarball deployment. #5120
  • Fix the existing test cases before refactoring. #5122
  • Fix typo for deploy_model_on_android.py #5123
  • Vectorization for intrinsics #5101
  • Fixed bug where shifting by out-of-bounds value results in no compute code being emitted. #5115
  • Add thrust support for nms #5116
  • Fix for issue #4831. The data_min_idx and data_max_idx were flipped. #5136
  • Return empty CSourceModule when no lowered_funcs exists in Relay mod #4847
  • Duplicate likely nodes added when loop axis split unevenly #5084
  • Fix incorrect name of calibration mode #5150
  • Remove contrib spatial pack schedule of depthwise convolution #5148
  • Handle empty LLVMModule in GetFunction #5146
  • TVM release process #5151
  • Fix annotate pass static variable #5023
  • Adding support for QNN subtract op #5153
  • Fixed ConvTranspose2D parsing #5157
  • Fix VTA build in CI #5165
  • Create a new parameter --cache-from in tvm/docker/build.sh #5173
  • : nullptr check #5176
  • rocm: fix miopen convolutions #5179
  • Various CI fixes for the VTA and Relay #5181
  • reverse-mode autodiff without any optimization #5121
  • rocm: fix dense_rocblas in strategy, topi #5191
  • Activations for pytorch #5194
  • ref_counter -> ref_counter_ #5184
  • Add warning about nnpack installing googletest #5185
  • Missing vectorize for depthwise conv2d. #5196
  • bugfix in tensorflow space_to_batch_nd #5175
  • Dropouts And InstanceNorm support added #5203

Contributors 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 (101), zhiics (56), masahi (34), comaniac (26), FrozenGene (19), jwfromm (19), anijain2305 (18), icemelon9 (17), MarisaKirisame (15), tmoreau89 (15), kevinthesun (14), yzhliu (11), ZihengJiang (9), wyc-ruiker (8), mbaret (7), jroesch (6), siju-samuel (5), cchung100m (5), inadob (5), liangfu (5), jmorrill (5), trevor-m (5), merrymercy (3), vinx13 (3), srkreddy1238 (3), Laurawly (3), wweic (3), yongwww (3), u99127 (3), Hzfengsy (3), kazum (2), slyubomirsky (2), vegaluisjose (2), soiferj (2), ajtulloch (2), grwlf (2), maheshambule (2), lhutton1 (2), alexwong (2), kaitingwang (2), eqy (1), PariksheetPinjari909 (1), sgrechanik-h (1), weberlo (1), junrushao1994 (1), xqdan (1), t-vi (1), derisavi (1), ehsanmok (1), leandron (1), reminisce (1), altanh (1), jackwish (1), hypercubestart (1), Dayananda-V (1), paddyhoran (1), manupa-arm (1), kparzysz-quic (1), broune (1), hzfan (1), mehrdadhe (1), notoraptor (1), windclarion (1)

Contributors Whose Pull Requests were Updated

Note: The format is name (number of activities)

tqchen (41), zhiics (17), siju-samuel (13), masahi (10), ANSHUMAN87 (8), anijain2305 (7), jroesch (6), kevinthesun (6), mbaret (6), maheshambule (6), icemelon9 (5), tmoreau89 (4), cchung100m (4), liangfu (4), dpankratz (4), hypercubestart (4), yongfeng-nv (4), MarisaKirisame (3), yzhliu (3), t-vi (3), shoubhik (3), wpan11nv (3), lfengad (3), Laurawly (2), wweic (2), kazum (2), FrozenGene (2), comaniac (2), sgrechanik-h (2), leandron (2), jmorrill (2), vv1133 (2), lhutton1 (2), kumasento (2), trevor-m (2), pyjhzwh (2), gaurav1086 (2), notoraptor (2), ZihengJiang (1), merrymercy (1), vinx13 (1), nhynes (1), eqy (1), mshawcroft (1), soiferj (1), yongwww (1), inadob (1), jwfromm (1), antinucleon (1), petrex (1), wyc-ruiker (1), BenjaminTu (1), LiangHao151941 (1), pingsutw (1), anwang2009 (1), bernhardklein (1), Ethan-Yan27 (1), fernand (1), jjohnson-arm (1), mbrookhart (1), mehrdadhe (1), mjamroz (1), pasqoc (1), selo1412 (1), Shawn-Inspur (1), lsy643 (1), yagnasrinath (1), ojotoxy (1), windclarion (1), zhen-jia (1)

3 Likes