Apache TVM (incubating) v0.7.0
Apache TVM (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
Introduction
v0.7 brings many major features. The community works together to refactor the internal code base to bring an unified IR code structure with unified IRModule, type system and pass infrastructure. We have also bought many exciting new features, some highlights include:
- Initial automatic scheduling support
- Initial command line driver interface
- WebGPU and webassembly support
- Better first class rust support in the codebase
- Intial Hexagon support
- Bring your own codegen (BYOC) support
The community also continues to bring high quality improvements to the existing modules including, but not limited to: better frontend coverage, performance, quantization, uTVM and dynamic shape support.
New Features
Automatic Scheduling (Experimental)
- Phase 0: Ansor minimum system for auto schedule generating #5962
- Phase 1: Access Analyzer #6103
- Phase 1: Add
follow_split
andfollow_fused_split
steps #6142 - Phase 1: Add
pragma
/storage_align
/rfactor
steps #6141 - Phase 1: Add RPC Runner #6077
- Phase 1: Add
annotation
/compute_at
/compute_root
/compute_inline
steps #6073 - Phase 1: Add
cache_read
/cache_write
steps #6107 - Phase 1: Rename namspace form
auto_schedule
toauto_scheduler
#6059 - Phase 1: The base class for cost models #6187
- Phase 1: feature extraction for cost models #6190
- Phase 1: XGBoost Cost Model #6270
- Phase 2: Basic GPU Sketch Search Policy #6269
- Phase 2: Evolutionary Search #6310
- Phase 2: Update heavy operations with
parallel_for
#6348 - Parallel the InitPopulation (#6512)
- Tutorial: Using the template-free auto-scheduler on CPU (#6488)
BYOC
- External codegen support in Relay (#4482),(#4544)
- Bring Your Own Codegen Guide -- Part 1 #4602
- Bring Your Own Codegen Guide -- Part 2 #4718
- Relay annotation and partitioning for external compilers #4570
- JSON Runtime with DNNL End-to-End Flow #5919
- Handle one symbol for each runtime #5989
- Run accelerator specific optimizations #6068
- Arm Compute Library integration #5915
- Retire the example json runtime #6177
json_node.h
should includedata_type.h
#6224- Improve installation tutorial #6170
- Add support for dense (fully connected) layer #6254
- Introduce the Ethos-N BYOC integration #6222
- Enable remote device via environment variables #6279
- Improved pooling support #6248
- Add support for quantized convolution #6335
- CoreML codegen #5634
Operator Coverage
- Add
strided_set
operation (#4303) - Add support for conv3d (#4400), pool3d (#4478), 3d upsampling ops (#4584)
- Add group convolution for VTA (#4421)
- Add 1d deconvolution op (#4476)
- Allow batch matmul to be fused into injective ops (#4537)
- Add native depthtospace and spacetodepth operators (#4566)
- Add CUDNN conv3d support (#4418)
- Dilation2D operator support #5033
- Isfinite operator #4981
- Unravel Index operator #5082
- Add thrust support for nms #5116
- Resize3d, Upsample3d op support #5633
- Add operator Correlation #5628
affine_grid
andgrid_sample
#5657- Sparse to dense operator #5447
Conv3d_transpose
op support added #5737- add op
crop_and_resize
#4417 - Add bitwise ops #4815
- Sparse to dense operator #5447
- support dynamic NMS(Non Maximum Suppression), symbolic begin, end, and strides for strided_slice #4312
Conv3d_transpose
op support added #5737- ReverseSequence operator #5495
- Conv1D #4639
- 1D Pooling #4663
Quantization
- Channel wise quantization - Quantize & Requantize #4629
- Support QNN ops. #5066
- Adding support for QNN subtract op #5153
- TFLite QNN Tutorial #5595
- Tutorial: Deploy Quantized Model on CUDA #4667
- Support asymmetric per-layer quantized operators #6109
Relay
- Add convertlayout pass in Relay (#4335, #4600)
- Added Merge Composite pass #4771
- Call graph for relay #4922
- Add inline pass #4927
- Target annotation for external codegen #4933
- GradientCell Relay Pass #5039
- Add MergeCompilerRegions pass #5134
- Non-recursive Graph Vistor and Rewriter (#4886)
- [Blocksparse] Pipeline for lowering dense model to sparse-dense (#5377)
- Relay op strategy #4644
- Static Tensor Array (#5103)
- Memory planner (part 1) #5144
- ONNX codegen #5052
- Add Parser 2.0 #5932, part 2 #6162
- Basic block normal form #6152
- Convert Layout pass. #4664
- Pattern Language, Matcher, Rewriter, and Function Paritioner #5231
Runtime and Backend
- Add ADTObject POD container type (#4346)
- TFLite RPC runtime (#4439)
- Standardized graph runtime export (#4532)
- MISRA-C compliant TVM runtime #3934
- Add String container #4628
- Introduce Virtual Memory Allocator to CRT (#5124)
- Initial implementation of Hexagon runtime support (#5252)
- FastRPC interface for Hexagon runtime (#5353)
- CoreML Runtime (#5283)
- AutoTVM + uTVM for Cortex-M7 (#5417)
- Windows Support for cpp_rpc (#4857)
- Implement TVMDSOOp(TensorFlow custom op) for TVM runtime (#4459)
- WebGPU support #5545
- TVM WebAssembly JS Runtime #5506
- Hexagon driver for offloading kernels to simulator #5492
- Introduce runtime::Array #5585
- Allow non-nullable ObjectRef, introduce Optional. (#5314)
- Introduce static slots for common objects. (#5423)
- ntroduce RValue reference(move) support to TypedPackedFunc (#5271)
- Introduce MetadataModule to separate code compilation/interpretation and weight initialization #5770
- Support module based interface runtime #5753
- Add TVM application extension with WASM runtime #5892
- Provide guide to user who has difficulty register SEqualReduce (#5300)
Rust Support
- Revive the Rust + SGX refactor #4976
- Improve Rust bindings: Map, Array, String, various IR nodes #6339
- Rust Refactor Stage 4: Rewrite Rust graph runtime to use new APIs #5830
- Second stage of Rust Refactor #5527
- tvm crate stage 3 of Rust refactor #5769
- Add first stage of updating and rewriting Rust bindings. #5526
TIR
- Introduce StructuralHash for the Unified IR. #5160
- Introduce StructuralEqual Infra for the unified IR. #5154
- Introduce ExprDeepEqual, Remove IRDeepCompare #5206
- [TIR] Introduce BufferLoad/Store (#5205)
- Improved massive build times caused by tir.floormod and tir.floordiv. Fixed Topi testcase. #5666
- Buffer logger assert removed #6147
- Enhance VerifyGPUCode #6194
- HoistIfThenElse added #6066
- Hybrid Script Support for TIR #6227
- Migrate Low-level Passes to Pass Manager #5198
- HoistIfThenElse added #6066
- Hybrid Script Support for TIR #6227
- Block scope hoisting added #6238
TE
- reverse-mode autodiff without any optimization #5121
- Tensor Expression Debug Display (TEDD) #4651
- Optimize and eliminate the Jacobian tensor for te.autodiff #6078
TVMC(Experimental)
- TVMC - A command line driver for TVM (Part 1) #6112
- TVMC - Linting error on onnx command line driver frontend #6536
- TVMC - Command line driver 'compile' (part 2/4) #6302
- TVMC - Introduce 'tune' subcommand (part 3/4) #6537
- TVMC - Introduce 'run' subcommand (part 4/4) #6578
- TVMC - Getting started tutorial for TVMC #6597
Feature Improvement
Accelerator and Microcontroller Support
- Cleanup legacy verilog code (#4576)
- uTVM support for ARM STM32F746XX boards (#4274)
- Add --runtime=c, remove
micro_dev
target, enable LLVM backend #6145
Arithmetic Analysis
- Linear system and equation solver (#5171)
- Inequalities solver #5618
- Improve IntervalSet's floormod (#5367)
- Remove legacy const pattern functions (#5387)
- Handle likely in IRMutatorWithAnalyzer #5665
- ExtendedEuclidean merge impl to int_operator #5625
- Rewrite simplify fix for Vectorized Cooperative Fetching #5924
AutoTVM and Graph Tuner
- Adding ROCM schedules for TOPI (#4507)
- NHWC conv2d schedule templates for ARM (#3859)
- Use VM compile to extract autotvm tasks #4328
- Download fallback schedule file if it does not exist #4671
- Ignore error when removing tmpdir #4781
- Fix a bug in generating the search space #4779
- Minor bug fixes in AutoTVM for QNN graphs #4797
- Fix autotvm customized template #5034
- Add opt out operator for
has_multiple_inputs
for graph tuner #5000 - Customize SI prefix in logging (#5411)
- Update XGBoost verbosity option #5649
- Support range in index based tuners #4870
- Enable random fill and CPU cache flush for AutoTVM and Ansor (#6391)
- Auto-scheduler tutorial for GPU and necessary refactor/fix (#6512)
BYOC
- [BYOC] Bind constant tuples in graph partitioner (#5476)
- [BYOC] Add support for composite functions in BYOC (#5261)
- [BYOC] Register pattern tables from external codegens (#5262)
- [BYOC] Enhance partitioning and external codegen (#5310)
- [BYOC] Refine AnnotateTarget and MergeCompilerRegion Passes (#5277)
- [BYOC] Use Non-Recursive Visitor/Mutator (#5410)
- [BYOC] Refine DNNL Codegen (#5288)
- [BYOC] Add example of Composite + Annotate for DNNL fused op (#5272)
- [BYOC] Prevent duplicate outputs in subgraph Tuple (#5320)
- [BYOC] Introduce further operator support (#6355)
- [BYOC] Support input nodes with multiple entries (#6368)
- [BYOC] Add maximum support for float32 (#6506)
Codegen
- Intrinsic dispatching with OCML instead of LLVM for ROCm (#4499)
- Make target codegen take IRModule and PrimFunc. #5107
- Enhance CUDA codegen for SelectNode #4983
- Vectorization for intrinsics #5101
- [LLVM] Do not use
x86_vcvtph2ps_256
intrinsic with LLVM 11+ (#5267) - [LLVM] Use llvm::ElementCount with LLVM 11+ when creating vectors (#5265)
- [LLVM] Use llvm::FunctionCallee in IRBuilder::CreateCall with LLVM 11+ (#5338)
- [LLVM] Include Support/Host.h for declaration of getDefaultTargetTriple (#5268)
- [LLVM] Replace calls to Type::getVectorNumElements (#5398)
- [LLVM] Use ArrayRef in calls to CreateShuffleVector (#5399)
- [LLVM] Use llvm::Align with LLVM 11+ to avoid warnings (#5264)
- [CodeGen] Cleanup generated code (#5424)
- Rename
target_id
=>target_kind
#6199 - 64-bit RPi4b target #6211
- Creating Target from JSON-like Configuration #6218
- Add python binding to new JSON target construction #6315
- Use target class in all codegens #6347
- Initial support for Hexagon codegen #6261
- Add --runtime=c, remove
micro_dev
target, enable LLVM backend #6145 - Add tvm::support::hexdump() debug utility #6154
- Adding AMD codegen unit tests (#4509)
- Support cuda tensorcore subbyte int data type in auto tensorcore #4546
- Handle empty LLVMModule in GetFunction #5146
- Support int4/int8 conv2d tensor core with HWNC layout #6121
Dynamism Support
- Add shape function for
zero
,zeros_like
,ones
,ones_like
(#4448),tile
(#4441) - Support symbolic newshape for Reshape #5429
- Support symbolic TopK, Ones, Zeros and Full #5459
- Add
shape_of
instruction #5855 - symbolic
max_output_size
#5844 - Dynamic TopK Op #6008
- Dynamic
broadcast_to
,zeros
,ones
#6007 - Add dynamic reshape grad #6080
- Keep fixed dim when unifying dynamic shape #5795
- OneHot operation #6209
- Add Dynamic Resize Op #6198
- Dynamic full operator #6260
- Dynamic upsampling relay op #6273
- Dynamic Tile Op #5983
Frontend and User Interface
- TFLite parser support for
transpose_conv
(#4440),unpack
(#4447) - LLDB pretty printers for relay (#4453)
- ONNX to Relay converter op support: expand op (#4483)
- ONNX
auto_pad
in conv and convtranspose (#4563) - TF to Relay converter op support (#4504) (#4551) (#4484)
- Remove unnecessary cast of constants in ONNX converter (#4573)
- Add support for tf.Keras networks in Relay Keras frontend #4630
- Add conv3d #4604
- Fix incorrect calculations in tf SLICE #4518
- Dynamically calculate
input_stats
of anyfake_quant
range #4789 - LSTM Support #4825
- Add
MIRROR_PAD
operator #4822 - use qnn helper function in softmax #4840
- Add Resize op converter #4838
- Add support for
TFLite_Detection_PostProcess
#4543 - Fix tests for tflite unary elemwise operations #4913
- GaussianDropout/Noise parsing support #4928
- Add parser support for 'square' operator #4915
make_loss
operator support #4930- Add parser support for
l2_normalization
#4966 - ReadVariableOp operator support #4952
- Check graph inputs match expected #4992
- support multiply outputs #4980
- TFLite: Using real image for QNN testing. #4816
- TFLite:
FLOOR_MOD
&FLOOR_DIV
support #4971 - PyTorch: Upsampling op support and enable registering a user defined op conversion map #4961
- PyTorch: fix unordered dictionary problem for python version under 3.6 #4982
- Operator support NonZero #5073
- Upsampling op support and enable registering a user defined op conversion map #4961
- 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
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- 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
- Conv3D ONNX support and
conv3D_ncdhw
x86 schedules #4949 - Add support for FusedBatchNormV3 #5065
- Activations for pytorch #5194
- Dropouts And InstanceNorm support added #5203
- [Frontend] Asymmetric padding of convolution support (#4803)
- [ONNX]Pool3d & upsample3d op support (#5135)
- Add TopK to ONNX Frontend (#5441)
- Add RoiAlign to Onnx frontend (#5454)
- [PYTORCH]AvgPool3d, MaxPool3d and Squeeze op support (#5220)
- [PYTORCH]celu, gelu, selu activations (#5263)
- [Pytorch]layernorm bug fix and testcase updated (#5257)
- [PYTORCH]LayerNorm support added (#5249)
- [PYTORCH]GroupNorm op support added (#5358)
- [PYTORCH]Logical & Bitwise operator support (#5341)
- [PYTORCH]Tensor creation ops support (#5347)
- [PYTORCH]cosh,sinh,log2,log10,log1p op support (#5395)
- [PYTORCH]Rsub, Embedded, OneHot ops support (#5434)
- [PYTORCH]Abs, Arange, Softplus ops (#5295)
- [PYTORCH]isNan, isinf, isfinite, ceil, clamp, round ops (#5316)
- [PYTORCH]Activations for pytorch (#5194)
- [PYTORCH]Repeat, Reciprocal & Reshape Op support (#5280)
- [PYTORCH]
Reduce_ops
support added (#5308) - [PYTORCH]Take, Topk op support (#5332)
- [PYTORCH]Dropouts And InstanceNorm support added (#5203)
- [PYTORCH]Unary Ops frontend support. (#5378)
- [Torch] Support Python list, more realistic recurrent networks (#5306)
- [PYTORCH]where, addcdiv, addcmul op support (#5383)
- [Torch] Add support for split (#5174)
- [Torch] Fix up graph input handling (#5204)
- [TFLITE]Logical not op support (#5475)
- [TFLITE]Hard Swish & MobilnetV3 model testing (#5239)
- [TFLITE]Gather, StridedSlice op support added (#4788)
- [TFLITE] Match TFLite shape for SSD custom op (#5473)
- Factor out import of common tflite.Operator in tflite frontend. (#5355)
- [TFLite] support for FILL and
SPLIT_V
operators (#5330) - [TFLite]
L2_POOL_2D
operator (#5452) - [TFLite] Add config option to specify FlatBuffers location (#5425)
- [TFLITE]Logical not op support (#5475)
- [TENSORFLOW]reduce ops updated (#5180)
- [TENSORFLOW] Fix
gather_nd
indices (#5279) - [TensorFlow]Improve TensorFlow Static Shape Tensor Array (#5243)
- [KERAS]Minimum & AlphaDropout op support (#5380)
- [KERAS]Embedding layer (#5444)
- [KERAS]
Max_pool3d
and Averagepool3d operator support (#5085) - [CAFFE2]add Mul and ConvTranspose operator (#5302)
- [MXNET]DepthToSpace & SpaceToDepth Operator (#5408)
- [MXNET]broadcast and logical op support (#5461)
- [MXNET] Use leaky by default for LeakyReLU (#5192)
- [MXNET] support elemwise logic ops (#5361)
- [Frontend|MXNet] SwapAxis operator support (#5246)
- [RELAY] Move frontend utils (#5345)
- [Pytorch] Fix translation of transpose when axis argument is as a list (#5451)
- LpPool Support added #5696
- Skip ADD inside Gemm op when vector is zero #5697
- ReduceL1, ReduceL2, ReduceSumSquare, ReduceLogSum ops added #5721
- MaxRoiPool, Mod & Xor op support added #5729
- Skip multiply with 1.0f constant for GEMM import #5800
- StatefulPartitionedCall/PartitionedCall Ops support added #5617
- Don't add cast for batch norm when type isn't changing #5731
- Conv3d Transpose OP added #5775
- expand bug fix #5576
- Support
max_pool2d_with_indices
#5549 - Add prim::device op #5584
- ImplicitTensorToNum support added #5603
- Matmul fix for
batch_matmul
#5604 - ReflectionPad2d op #5624
- Padding op support #5638
- Minor bug fixes #5683
floor_divide
support for squeezenet #5702- ReplicationPad support added #5708
- aten::norm support added #5776
- broadcast and logical op support #5461
- MaxPool3d and AvgPool3d Ops support added #5614
- Softmin, trunc op support added #5715
- conv3d and
conv3d_transpose
addedx #5814 - Model importer to be compatible with tflite 2.1.0 #5497
- Nit: Function names made consistent #5515
- Select op support for tflite frontend #5486
GATHER_ND
#5508- Quantize & Dequantize op #5394
- Fully connected op conversion made in sync with TFLite #5510
ADD_N
operator #5474- onnx, mxnet, pytorch mathops added #5561
- abs, round, reciprocal, sign, softsign,
hard_sigmoid
ops support #5587 - Gather nd bug fix for one dim support in tensorflow #5588
- Add parser support for shape and range #5329
- Darknet support batch size for yolo #5688
- Improve Control Flow and TensorArray #5699
- MXNet: Softmin, trunc op support added #5715
- MXNet: conv3d and
conv3d_transpose
addedx #5814 - MXNet: Add parser for
contrib.box_decode
#5967 - Onnx: ReduceL1, ReduceL2, ReduceSumSquare, ReduceLogSum ops added #5721
- Onnx: MaxRoiPool, Mod & Xor op support added #5729
- Onnx: Skip multiply with 1.0f constant for GEMM import #5800
- Onnx: Fix an issue with #5755 and add Batch norm unit tests. #5845
- TensorFlow: StatefulPartitionedCall/PartitionedCall Ops support added #5617
- TensorFlow: Don’t add cast for batch norm when type isn’t changing #5731
- TensorFlow: Conv3d Transpose OP added #5775
- Add parser support for shape and range #5329
- Darknet support batch size for yolo #5688
- Improve Control Flow and TensorArray #5699
- Improve TF Parser to keep output nodes for
saved_model
#5794 - Add parser support for
relu6
,leaky_relu
,relu_n1_to_1
,log_softmax
#4805 - Fix TF Dynamic input shape #5825
- Support a few contrib ops in mxnet #5819
- Improve TF Parser to keep output nodes for
saved_model
#5794 - Add parser support for
relu6
,leaky_relu
,relu_n1_to_1
,log_softmax
#4805 - Check all unsupported ops before raising an exception #5929
- Add Pytorch advanced indexing #6318
- Support
index_select
#6295 - Fix cast to long #6301
- Fix dtype handling for modules with integer parameters #6311
- pytorch frontend support conv1d #6203
- Add cast to double, fix flatten conversion #6357
- Fix aten::max and aten::min conversion #6372
- Match pytorch 1.6 googlenet pretrained model (#6201) #6212Add unbiased variance op and corresponding support in pytorch frontend #6232
- Implemented PADV2 Operator for TFLite and added support for constant values in PAD. #6167
- Implemented
ONE_HOT
Operator for TFLite. #6223 - Implemented
EXPAND_DIMS
Operator for TFLite. #6243 - Implemented
REVERSE_V2
Operator for TFLite. #6304 - Implemented
MATRIX_SET_DIAG
Operator for Relay/TOPI and TFLite Frontend. #6303 - RESHAPE with dynamic shape arg in TFLite frontend #6208
- Constant input attr added to fully connected operation in TFLite frontend #6228
- Gather operation with indices as tensor expr in TFLite frontend #6168
- Added support for tflite quantized maximum and minimum #6018
- Unary ops support added in frontend #6196
- Introduce caffe frontend for tvm #6206
- Keras softmax and prelu fix under NHWC #6278
- add support for MXNET numpy operators #6054
- Refine tensorflow frontend 1.x & 2.x compatibility #6240
- Reduceops support added to frontend #6252
- Update precision in the ONNX
strided_slice
, update precision of ToScalar #6272 - NHWC import support. #4899
- Refine tensorflow frontend 1.x & 2.x compatibility #6240
- Fix node indices attribute error for tensorflow 2.3 #6288
- Support NMSv4 #6085
- Support for PyTorch Non-Maximum Suppression #6314
- ReplicationPad support added #5708
- MXNet pre-quantized BERT #6039
- Keep parameter names from PyTorch #5887
- Refine LSTMBlockCell to support dynamic rnn #5963
Relay
- Add function attributes to IR hash (#4479)
- Relay passes lookup overhead optimization (#4594)
- Add
half_pixel
option to Resize op #4610 - Skip example json runtime test when config is not set #4614
- Test
tensor_array
in vm #4608 - Improve
memory_allocation
pass to support multiple i/o dynamic kernels #4595 - Add unit test for
tensor_array_split
#4619 - Add parses support for unary elemwise ops #4634
- Add parses support for SLICE #4502
- Added pool autopadding and simplified converters. #4672
- Fix meaning of
conv2d_transpose
output_padding
parameter #4318 - Use packed func macro for external codegen #4710
- Fix
_parse_param
bug #4711 - Add constant input support for elemwise ops #4666
- Add parser support for squared difference #4652
- Add type check to dense #4724
- Invoke tvm::build from relay
compile_engine
and interpreter #4723 - Broadcast condition, x, and y for Where op #4774
- Add parser support for relational ops #4695
- Remove duplicated BindParamByName function in VM compiler #4793
- Use SimplifyInference for L2 Normalization. #4795
- Expose vm OptimizeModule to Python #4800
- Add parser support for logical operators #4642
- Conv2D padding representation #4787
- Add support for quantized LOGISTIC #4696
- Fix VM compiler for while loop with free vars #4889
- Fix bug in re-processing call node in MergeComposite pass #4879
- Expose FunctionGetAttr to Python #4905
- Add a PyTorch to Relay Parser #4497
- Support data types for CSourceModuleCodegen args and output #4934
- Clean up and refactor PyTorch frontend #4944
- Relay pass to use fast exp/tanh #4873
- BatchNorm support with run-time mean and variance calculation #4990
- Reduce plevel of conv2d winograd implementation on cuda #4987
- Add operation tan to TVM #4938
- Outline and inline lifted functions for external codegen #4996
- Remove primitive attribute from composite function #5014
- 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
- Propagate constant to subgraphs #5094
- Adjust strategy plevel to achieve expected performance by default #5118
- Added a AnnotatedRegion utility class #5030
- Support TupleGetItem in body of pattern #5106
- Partition graph codestyle fixes #5202
- Re-wrote the Graph Partitioner to support multiple outputs #5143
- Fixes to MergeCompilerRegions #5195
- Refactor build module to take IRModule #4988
- Separate analysis and transform passes #5035
- Relay Node::make to constructor #5128
- relay::StructuralHash to tvm::StructuralHash #5166
- Conditions updated to cover better user scenarios #5043
- Replace UseDefaultCompiler with GetAttr #5088
- Return empty CSourceModule when no
lowered_funcs
exists in Relay mod #4847 - Clean up for memory pass to enable heterogenous execution support. (#5324)
- Remove re-exports of tvm.transform (#5337)
- [Refactor] Add memoized expr translator for use by backend codegen (#5325)
- Legalize - Use Non-recursive Rewriter. (#5296)
- Add additional check before re-using the cached match #5552
- Remove kCompiler attr from external functions #5615
- Pattern Language MergeComposite #5656
- Support Tuple Output in C/DNNL Codegen #5701
- Infer types in MergeComposite #5766
- Convert PatternGrouper to do pre-order, non-recursive analysis #5653
- Remove constants from partitioned functions #5663
- Add a check for null function attributes #5674
- Add ConstantPattern #5689
- Conditionally Embedding Constants in Partitioned Functions #5693
- Simplify Pattern API Implementations #5703
- Add ShapePattern and DataTypePattern #5760
- Remove unnecessary print #5642
- Improve Shape Func handling for Tuple inputs #5467
- Relay updated with String #5578
- Fix the creation of tuple of tuples in PartitionGraph #5616
- Preserve type information in Merge Composite #5640
- Move
compiler_begin
/end_op
to local static objects #5622 - Fix
dataflow_pattern
.rewrite() hang if Match in IR #5680 - Fix segfault in pretty print when ObjectRef is null #5681
- Move
fallback_device
to config #5690 - Replace
build_config
with PassContext #5698 - Clear compile engine after task extraction #5724
- Add
storage_order
ignore in pooling layer. #5781 - Tweak cublas/cudnn priority level #5820
- Skip Unknown Function Symbols #5888
- Allow every runtime module to handle constants #5885
- handle Tuple/TupleGetItem in first order gradient #5946
- Add resnet-3d & Update network definitions for NHWC layout #5945
- Use TargetNode::attrs for Target serialization #5993
- each option of target str should only contain one ‘=’ #5988
- Rename
target_id
=>target_kind
#6199 - 64-bit RPi4b target #6211
- Add resnet-3d & Update network definitions for NHWC layout #5945
- Small bug fix for Conv1D imports. #5995
- Move
invoke_tvm_op
andshape_func
to vm dialect #5958 - GRU Layer Support #6020
- Add pass for getting calibration data from a relay module #5997
- Merge two consecutive reshape ops #6052
- Add operation
scatter_add
to relay, based on scatter implementation. #6030 - i64 indices #5235
- Port
eliminate_common_subexpr
to non-recursive form #6134 - Fix interpreter for dyanmic shape input of
ndarray_size
#6086 - Allow to config allocator type and refactor vm code structure #6105
- Handle
ndarray_size
in FoldConstant #6156 - when converting constant nodes with types of int64 or float64 #6159
- Add ReshapeTensor instruction in the VM to replace the reshape op #6089
- Support combine multiple dense op just into dense #6062
- Add unbiased variance op and corresponding support in pytorch frontend #6232
- Specify additional layouts in convert layout pass #5422
- Safe check added for Merge Composite Call Node #5562
- Non recursive partitioning #5493
- Support combine multiple dense op just into dense #6062
- Make the max number of fused ops configurable #6327
- Implementation of the dynamic pad operator #6284
- change device annotation from post DFS to recursive #6124
- Make check stricter: disallow inserting function with free vars into module #6313
- Make check stricter by using Feature. Fixed multiple bugs #6326
- Resize support for NCHW-convertible layouts #6293
- Make AutoDiff thread through global function #6336
- Create Interpreter for each constant subgraph #6195
- Add Dynamic reshape to a dynamic namespace and add DynamicToStatic Pass #5826
- Expose relay BindParamsByName to Python #4751
- Implement pass manager tracing API #4782
- Move Ops in relay.op.contrib #4942
- Conditions updated to cover better user scenarios #4951
- [External codegen] Add test cases for fused ops with manual annotation (#4741)
- Multiple output support, reshape, split ops added #6296
Operator Coverage
- Allow empty tensor for
reshape
,tile
andstrided_slice
#4618 - Fix meaning of
conv2d_transpose
output_padding
parameter"; #4708 - Remove cpp upsampling and resize op #4769
- upsample operator 'NCHWinic' format support. #4791
- Injective schedule improvement #4786
- Enable vectorization on fp16 type #4867
- Support for Int8 schedules - CUDA/x86 #5031
- New PR to re-add tan to TVM #5025
- Register topi schedule for Relay
fast_exp
andfast_tanh
#5131 - 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
- Adding a few missing math intrin #5011
- Missing vectorize for depthwise conv2d. #5196
- [TOPI] Using x86 schedules for ARM conv2d (#5334)
- [TOPI-ARM] Do not alter layout if layout is NHWC (#5350)
- [TOPI] Setting workload correctly for Depthwise Spatial conv ARM. (#5182)
- [OP] Add
fast_erf
implementation (#5241) - [Topi] Tensorcore support for Conv3D (#5284)
- [intrin] a few more math functions (#5468)
- [Intrinsic] Add log1p, ldexp, atan2, hypot, nextafter, copysign (#5312)
- [topi] Add operation relay.nn.dilate() which calls topi.nn.dilate() (#5331)
- [Topi x86] Missing vectorize for depthwise conv2d. (#5196)
- [TOPI x86] Adding
unroll_kw
config option for depthwise conv2d. (#5197) - [Topi] Breakdown topi.cc into smaller files (#5253)
- ReduceLogSumExp Operator support #5453
- Math ops added #5502
- Enable blocking format in x86 conv2d and fold scale axis #5357
- Add operation gather to relay. #5716
- Add
storage_order
ignore in pooling layer. #5781 - Fix bifrost spatial packing conv2d auto tune #5684
- Fix reshape usage in ARM schedule #5732
- Block sparse dense on cuda #5746
- Improve CUDA softmax scheduling #5600
- block sparse dense on cuda #5746
- pass-by-value -> pass-by-const-reference #5783
- Using MKL blas for quantized dense #6115
- topi -> tvm/topi #6186
- Use auto-tuner to improve
conv2d_gemm
performance #6117 - Improve CUDA
conv2d_transpose_nchw
#4762 - Add CUDA conv2d for NHWC layout #4737
conv3d_ndhwc
schedule #4775- Fast exponent #4790
- Add Scatter to Topi/Relay/ONNX via hybrid script #5619
- Split MKL from BLAS. #6182
- Change the meaning of
conv3d_transpose
output_padding
to matchconv{1,2}d_transpose
#6065 - Gather op support added #6013
Runtime and Backend
- Cythonize NDArray.copyto (#4549)
- Unified Object System runtime refactor (#4578, #4581, #4603)
- VM profiler: sort VM stats by time (#4601)
- Update RPC runtime to allow remote module as arg (#4462)
- Refactorying system lib and dso lib into library module (#4481)
- Improve TSIM virtual memory mapping (#4545)
- make adt tag signed #4605
- Improve TVMBackendPackedCFunc to allow return val #4637
- EdgeTPU runtime for Coral Boards #4698
- Fix memory leak when using openMP #4811
- Fix memory leakage of TVMByteArray #4856
- Fix
TVM_DLL_EXPORT_TYPED_FUNC
to work on Windows #4955 - Fix memory leak when using openMP #4811
- Export GraphRuntime in
tvm_runtime.dll
#5002 - MISRA-C compliant TVM runtime #3934
- Update the
type_keys
to reflect the code-org #5074 - Fix AttrEqual for Array and StrMap, double #5054
- Export GraphRuntime in
tvm_runtime.dll
#5002 - Fix unused-value warning #5140
- crt error handling #5147
- Bundle deployment with static linking #5158
- Implemented kDLCPUPinned (cudaMallocHost) #4985
- Explicitly cast min/max operands #5090
ref_counter
->ref_counter_
#5184- Expose runtime::String to Python (#5212)
- [FFI] Refactor runtime.String to subclass str (#5426)
- [RUNTIME] Auto conversion from str to runtime::String in PackedFUnc (#5251)
- [RUNTIME] Improved Packed FFI for optional. (#5478)
- [Hexagon] Add
hexagon_posix.cc
to TVM/RT sources in the right place (#5346) - [FFI] Refactor runtime.String to subclass str (#5426)
- Fix workspace #5503
- Store nullptr PackedFunc as nullptr for better error propagation #5540
- Improve PackedFunc robustness #5517
- Seg fault in WorkspacePool's destructor (#5632) #5636
- Resolve constexpr issue in debug mode. #5651
- Add
compile_shared
option to linux compile utility fn #5751 - Call sync in CopyFromRemote and CopyToRemote #5512
- Fix the multihop cpu case #5522
- Improve RPCServer AsyncIO support. #5544
- Modularize the RPC infra #5484
- Add
compile_shared
option to linux compile utility fn #5751 - Overload string operators #5806
- Only initialize required module #5926
- if a param not in input, we should still consume it’s data #5990
- init TVMPackedFunc’s name #6044
- Enable auto conversion
String->DLDataType
#6214 - Support random fill #5913
- Use new to avoid exit-time de-allocation order #6292
- Add
parallel_for
support to run a loop in parallel #6275 - Solve ARM BIG.LITTLE heterogeneous multicores #4747
- [RUNTIME] Quick fix PackedFunc String passing (#5266)
- Introduce runtime::String::CanConvertFrom #5718
- Restore the StrMap behavior in JSON/SHash/SEqual #5719
- Support overriding RPCWatchdog termination behavior on Android and other platforms #6216
- Set
NDArray::Container.shape_
in NDArray::FromDLPack (#5301) - Enable x86 cpu cache flush #5914
Quantization
- Conv2D type checking for kernel per-channel scales. #4732
- Add missing nullptr check #4773
- Doc fix on convolution and dequantize #4799
- Conv2D with dilation support. #4796
- Making
scale
/zero_points
as expr instead of attrs. #4611 - Make calibration faster and more memory usage friendly #4589
- Doc fix on convolution and dequantize #4799
- Conv2D with dilation support. #4796
- Optimize lowering for requantize and FixedPointMultiply. #4798
- More doc fix on quantize and convolution #4874
- Add support for per channel weight scale in dense op #4880
- Add support for quantized models via QNN #4977 #5013
- Support 4D padding. #5036
- [Requantize] Cleanup and Optimize Lowering (#5286)
- [Topi, ARM] Disbale Winograd for quantized tensors. (#5363)
- Adding support for TFLite QnnSubtract operator. (#5230)
- Remove developer facing api from frontend exports. (#5375)
- Add Quantize/Dequantize Partitioning #5940
- Add support for quantized models via QNN #5016
- Quanitze operation expanded to take const argument #6127
- FP32 and Quantized Object Detection Model #5479
- Support CallNode inputs in qnn.concatenate #5360
- QNN support for TFLite 2.1.0 quantized models #5848
TE
- Tighten split's extent #4931
- Set split node's range to minimum of ext and split factor or split np… #5044
- Support mixing normal and cross-thread reduction (#5193)
- Inline ->
te/schedule/operation_inline.h
(#5386) - Create loops according to storage scope and thread hierarchies (#5190)
- Fix import in dump pass ir (#5327)
- Scalar support for te.extern #6079
TIR
- IR readability enhancement (#4501)
- Introduce tir::PrimFunc #5070
- Introduce PrimFuncPass. #5139
- [TIR] Enhance Substitute, python bindings for Substitute/PostOrderVisit (#5400)
- [TIR] Remove ProducerConsumer and
AllocateNode::new_expr
(#5333) - [TRANSFORM] Enable CopyOnWrite for TIR passes. (#5309)
- [REFACTOR] Migrate LowerTVMBuiltin, InferFragment, LowerThreadAllreduce, ThreadSync to Pass Manager (#5213)
- [REFACTOR] Remove te::Tensor dependencies from TIR passes. (#5372)
- [TIR] Refactor MakePackedAPI to target dependent stage. (#5326)
- [REFACTOR] tvm.hybrid -> te.hybrid (#5223)
- [REFACTOR] Migrate most of low-level build to use the Pass Manager. (#5225)
- [REFACTOR] Migrate low-level passes in tvm.lower to the Pass Manager (#5364)
- [TIR] Migrate VTA TIR passes to the new pass manager. (#5397)
- [REFACTOR] Migrate all low-level passes to the Pass Manager. (#5233)
- [REFACTOR] Introduce ExprDeepEqual, Remove IRDeepCompare (#5206)
- [REFACTOR] RewriteForTensorCore -> te/schedule (#5379)
- [REFACTOR] Remove
ir_pass
in favor of analysis/transform. (#5415) - text format printer considering future parsing use #5483
- Remove buffer params from pass config. #5652
- std::string -> String Migration in TIR nodes #5596
- Remove
CallNode.call_type
in favor of attribute. #5937 - Remove legacy HoistIfThenElse #5944
- Improve Let/LetStmt support. #5949
- Refine side effect analysis. #5954
Provide->ProducerStore
,Realize->ProducerRealize
. #5750- Migrate the tvm/tir/expr.h to constructor #5773
- Migrate tir/stmt.h to use constructor. #5778
- Cleanup unused classes #5789
- Add tir prefix to type keys #5802
- Enhance VerifyGPUCode #6194
- Enforce buffer pointer var type to be consistent with dtype. #6317
- Create a StringImm reference type #4806
- Add init member to ReduceNode #6138
- Add dump and print for debugging (NFC) #5207
- Streamline Function Attr interface. #5045
alpha_equal
tostructural_equal
#5161- Remove AttrsEqual and AttrsHash related code #5169
- [NODE] General serialzation of leaf objects into bytes. (#5299)
- [POC] Initial stab at
std::string->String
upgrade (#5438) - [TIR] Make
lower_warp_memory
supportextent(threadIdx.x) < warp_size
(#5307) - [PASS] dtype rewrite for indexing variables (#5092)
- [PYTHON] Enhance
with_attr
API, cleanup MakeAPILegacy in testcases (#5335) - [PYTHON] Make IntImm more like an integer (#5232)
- [IR] Move to runtime::String (#5276)
- [IR] kExternalSymbol -> kGlobalSymbol (#5211)
- [IR] Remove PrimExpr from String (#5311)
- IRModule is updated with String #5523
- IR is updated with String #5547
- Streamline ir/op Registry #5609
- Migrate IRModule ObjectRef to not-null #5654
- Migrate BuildConfig to PassContext. #5668
- relay.op.Op -> tvm.ir.Op #5705
- Separate ArgTypeCode from DLDataTypeCode #5730
- Remove legacy
compute_expr.h
#5738 - Call::Halide => ProducerLoad, DSL/TIR decouple. #5743
Provide->ProducerStore
,Realize->ProducerRealize
. #5750- Migrate the tvm/tir/expr.h to constructor #5773
- Migrate tir/stmt.h to use constructor. #5778
- Migrate all Object construction to constructor. #5784
- Cleanup unused classes #5789
- Finish
std::string->String
updates #5793 - Add tir prefix to type keys #5802
- Change Call.name to Call.op(RelayExpr) #5863
- Range/IntSet API style consistency. #5953
- Separate ArgTypeCode from DLDataTypeCode #5730
- Migrate all Object construction to constructor. #5784
- Finish
std::string->String
updates #5793 - Unify StrMapNode and MapNode #5687
Performance Improvements
- Int8 GEMM performance enhancement using Cublas (#4550)
- Speedup TSIM with multi-threading (#4491)
- Support cudnn softmax (#5214)
- Add cuDNN grouped convolution support (#5319)
- Winograd support for Conv3D (#5186)
- Improve
get_valid_count
and nms performance for CUDA (#5339) - Optimizations of
global_ave_pool
for NHWC layout (#5450) - Optimization of Conv2d Winograd algorithm on Tensor #5485
- Some performance improvement to VM #5901
- Optimize x86
conv3d_ndhwc
using data packing approach. #4866 - Improve NHWC depthwise convolution for AArch64 #6095
- Improve quantized convolution performance for armv8 architectures #5754
Documentation
- Adding benchmark log format doc (#4366)
- Add Ninja build system to installation docs (#4554)
- Doc/comment fixes (#4452, #4463, #4469, #4493, #4397, #4580, #4585, #4591)
- Fix doc after moving to unified IR #4835
- Introduction to module serialization #4564
- ConvertLayout - Call RemoveUnunsedFunctions. #4834
- Fix bugs that override
n_trials
#4842 - Update the vm doc #4868
- Refine the example description of
max/min/sum/tag_scope
#4974 - Fix vta tutorial #4809
- Introduce how to add hardware backend to FAQ #4898
- Update API docs to reflect the status after the refactor. #4907
- Fix sphinx warnings #4917
- Fix Sphinx Warnings (RST indent, cross-ref, and image scale) #4920
- Fix Sphinx Warning: the target found for cross-reference #4925
- Sphinx -- Introduce alias detection. #4954
- Fix Warnings from #4942 #4959
- Fix sphinx precheck #4967
- 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
- Refine the example description of
max/min/sum/tag_scope
#4974 - Description updated for pooling attributes #5091
- [DOCS] Migrate some markdowns to rst, fix sphinx3 warnings (#5416)
- [DOCS] Misc docs improvements (#5222)
- [DOCS] Bring relay docs to the top-level flat view (#5343)
- [DOCS] Reduce artifcats generated by sphinx gallery (#5208)
- [DOCS] Use https link (#5183)
- [DOCSTRING]missing function parameters updated (#5228)
- [DOCS] Migrate HLS documents from md to rst (#5419)
- [Tutorial, QNN] Add tutorial for loading quantized PyTorch model (#5321)
- [Docs] VTA install doc migration from md to rst (#5442)
- [Docs] compiler version in docs (#5281)
- Remove legacy
compute_expr.h
#5738 TVM_REGISTER_API
->TVM_REGISTER_GLOBAL
#4768
Bug Fixes
- Add bfloat16 typeflag support (#4525)
- MSVC / Windows fixes (#4455, #4569)
- Fix Makefile for
howto_deploy
(#4457) - Fix GCC 4.8 compact (#4461)
- Fix search path to build
libtvm_topi.so
(#4467) - Fix for
conv2d_transpose
CUDA compilation (#4472) - Fix for LLVM 10.0 codegen (#4480, #4515)
- Fix alter op layout when calling global var (#4454)
- Fix
float2half_rn
support for cuda compute capabilities < 53 (#4489) - Fix compile errors for OpenCL backends (#4492)
- Fix serialization precision loss (#4503)
- Fix hybrid script to support array of tensors (#4494)
- Fix annotation for multiply op (#4458)
- Fix Dockerfile for linter CI (#4506)
- Fix TF resize for dynamic size models (#4510)
- Fix
bias_add
gradient (#4516) - Fix tanH unit test function call (#4517)
- Fix extra reshape parameter for ONNX (#4524)
- Fix crash caused by empty TOPI config (#4520)
- Fix ONNX shape op type to use int64 (#4528)
- Fix crash in TSIM virtual memory driver (#4527)
- Replace deprecated python library in setup script (#4533)
- Fix NMS
max_output_size
loop (#4541) - Fix style in IR mutator and IR visitor (#4561)
- Fix compiler warning (#4559)
- Fix to get end to end inference on Chisel VTA (#4574)
- Fix LLVM build by adding missing intrinsics headers (#4575)
- Fix context creation in quantization (#4582)
- Fix NDArray SaveDLTensor signature (#4586)
- Fix dense pack schedule for x86 (#4539)
- Fix for broadcast tensor of scalar type (#4577)
- Datatype refactor (#4513, #4560)
- Add const qualifiers for NDArray container (#4590)
- Fix TF <= 1.12 compatibility (#4593)
- Fix for graph debug runtime (#4598)
- Disable copy constructor for external codegen (#4597)
- Make ADT tag signed (#4605)
- Added declare of aluBits for TensorAlu #4624
- Get around limitation of g++-4.8 #4626
- Bugfix StmtMutator IfThenElse #4609
- Remove unecessary rdynamic #4613
- Resolve constexpr related link error in debug mode #4641
- Asymmetric padding #4511
- Reduce data size of asymmetric padding testcase #4658
- Fix Base64OutStream portability issue #4668
- Fix
topi.nn.global_pool
layout="NHWC" #4656 - Also package core.rly #4679
- fskip of EliminateCommonSubexpr cannot always return false #4620
- Fix Python syntax error in
start_rpc_server_to_tracker.py
#4682 - os.path --> osp to match the import #4681
- GitHub actions/checkout@v1 --> v2 #4680
- Fix Python syntax error AGAIN in
start_rpc_server_to_tracker.py
#4685 - Use ==/!= to compare str, bytes, and int literals #4686
- Rename
start_rpc_server_to_tracker.py
tostart_rpc_server_to_tracker.sh
#4689 - GitHub Action lint Python code for syntax errors #4688
- Generate blob use LLVM directly #4657
- Reduce input size to fix oom #4653
- Fix RemoveUnusedFunctions pass #4700
- Link the math library by default #4713
- Update mainline version to 0.7.dev0 #4720
- Add SizeVar representing non-neg valued variable in a tensor shape #4684
- Fix the compile problem of
cpp_rpc
#4725 - JSON upgrader to upgrade serialized json. #4730
- Fallback schedule for Int8 depthwise. #4733
- Fix dense x86 schedule #4728
- Fix demo dockerfile build failed #4744
- Improve CUDA vectorizer #4736
- Add .asf.yaml for github info #4761
- Fix padding in pooling op #4738
- Remove
run_infer_type
duplicates #4766 - pooling.cc improvements #4767
- Export
builtin_fp16
on Windows #4731 - Fix Tensorflow conv3d pad bug, add non-cubic data and kernel tests #4772
- Bump prebuilt-image version in demo dockerfile #4770
- Update
tune_simple_template.py
#4778 - Explicitly link to cublasLt if it exists #4776
- Fix hasattr by extracting Python error type from Windows error message #4780
- Replace os.path.exists with try...except...else #4784
- Make sure to visit the arguments of inlined functions #4783
- Parse additional exception strings #4785
- Fix #4670: add bias for fc layer #4801
- Change color channel from BGR to RGB for darknet preprocessing #4794
- Fix -Wextra #4804
- Fix vta tutorial #4809
- Minor bug fixes in AutoTVM for QNN graphs #4797
- Fixed subprocess creation under windows #4820
- Improve tol to resolve flaky case #4836
- Fixed process termination routine in windows #4844
test_cuddn
flaky #4846- Mxnet parser for Qnn dialect #4714
- Enhance
cc.cross_compiler
#4817 - Fixed crash caused by reversing bitwise operations #4852
- Reverse some changes made for
intel_graphics/conv2d.py
in PR #4849 #4853 - const auto p -> const auto& p #4861
- Fix onnx import bugs #4750
- Explicit llvm::StringRef to std::string conversion #4859
- Update the runtime PackedFunc for module #4871
- Improve antlr import error message #4888
- Fix
alpha_equal
bug for attribute check #4897 - Fix issues in cuda codegen #4876
- Fixed: Bitwise ops on floats causing wrong code generation and crashes. #4892
- Fix
tvm.target.generic_func
runtime detection #4910 topi/tests/python/test_topi_sort.py::test_argsort
#4891- Use opencv reisze method for preprocessing of image in darknet #4883
- Fix build breaks with StringRef changes #4923
- Remove unnecessary spliting in the cached chunk #4935
- Fixing an Infinite Loop case in UnmatchedChecker. #4881
- Remove SGX toolchain installation from CI Dockerfile #4948
- Fix tedd tutorial after strategy change #4947
- Allow customize MKLDNN library location #4814
- Added CopyFromBytes and CopyToBytes convenience methods to NDArray. Fixed typos. #4970
- Fix gcn tutorial failure #4994
- Fix stride default value None in torch.nn.functional.avg_pool #4984
- Fix ROCm strategy for winograd conv selection #5001
- Fix
get_valid_count
flaky test for cuda #4901 - Change Scala Linter scalafmt => scalastyle #4998
- Kill from tvm import te #5007
- Chisel fixes and de10nano support #4986
- Fix gpu not found when running TVM docker #4975
- Fixes for pylint==2.4.4 #4849
- Fix unordered dictionary problem for python version under 3.6 #4982
- Fix gcn tutorial failure #4994
- Fix stride default value None in
torch.nn.functional.avg_pool
#4984 - Fix ROCm strategy for winograd conv selection #5001
- Early checking added and new test cases added for schedule fuse #5010
- Fixed div by zero core dump. Fixed rounding intrinsics on int crash #5026
- Test case modified for int type #5012
- Bug Fix for ARM CPUs. Lower strict assumption. #5063
- Triage the testcases to fit the the new namespaces #5071
- 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
- Fix the existing test cases before refactoring. #5122
- Fixed bug where shifting by out-of-bounds value results in no compute code being emitted. #5115
- Fix for issue #4831. The
data_min_idx
anddata_max_idx
were flipped. #5136 - 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
- Fix annotate pass static variable #5023
- Fixed ConvTranspose2D parsing #5157
- Nullptr check #5176
- rocm: fix miopen convolutions #5179
- rocm: fix
dense_rocblas
in strategy, topi #5191 - Fix CRT static test bug (#5293)
- Fix perf regression of tir refactor (#5258)
- Bugfix in tensorflow
space_to_batch_nd
(#5175) - Compilation warnings fixed for 32bit and 64bit compilation (#5349)
- Fix hang in MergeCompilerRegions (#5227)
- Fixes to MergeCompilerRegions (#5195)
- Fix generation of LLVM intrinsics (#5282)
- Fix setting up hints for getaddrinfo (#2872)
- Add ConstantNode to IsAtomic (#5457)
- Fix String SEqual (#5275)
- Fix fuse over functions that are handled by external codegen (#5365)
- Fix memory leak when accessing NDArray (#5413)
- Remove the duplicate PrintIR pass in Relay (#5403)
- Fix
lower_warp_memory
(#5247) - Fix
lower_warp_memory
when there are >1 warp buffers (#5368) - Fix intel conv2d auto tune (#5200)
- Fix FuseBatchNorm output cast error if
need_cast
is True #4894 - Fix an assertion exposed by loop vectorizer #4916
- Fix error message #4945
- Fix for recursive let #5757
- Fix Calibration Pass to Support Modules with Multiple Functions #5768
- Fix what looks like bizzare copy-paste issue #6010
- Fix bug in
transpose_shape_func
#6180 - Fix bugs in CUDA codegen (#5209)
- Don’t remove() TemporaryFile in del. (#5414)
- Fix
test_ir_type
. (#5390) - Fix multiple identical inputs bug (#5389)
- Add cuda target check to dense tensorcore schedule. (#5376)
- T2 test fixups (#5391)
- Fix miopen padding (#5433)
- Misc fixes for ROCm (#5431)
- Fix copy constructor (#5237)
- Corrected TVM autotuning on GPU (#5432)
- Fix vector load (#5226)
- Minor bugfix in
message_passing.cc
(#5254) - Fix a bug when vectorized load&store was involved for… (#5428)
- Fix to skip node not in graph. (#5238)
- Fix #5388 [VULKAN] vkBuffer released before memory copy command se… (#5418)
- Fix a minor error in
device_annotation
(#5291) - Fix scalar’s ndim is 0 (#5344)
- Fix the runtime raise error #5586
- Fixed bug in attribute parsing for pool layers. #5582
- AutoTVM incorrect measurement #5511
- fix a min/max simplify bug #5761
- Rename
tvm_dso_op
tolibtvm_dso_op
#5714 - Fix generating types like float44 and float88 #5722
- Avoid downloading when
TOPHUB_LOCATION
is NONE #5720 - codegen llvm: move nvptx-specific intrinsic handling into
codegen_nvptx
#5726 - ROCm warp shuffles and reductions #5727
- fix small bug about
dense_grad
#5695 - Clarify downstream consistency of TVMArgTypeCode #5742
- Fix gelu in PyTorch frontend, tighten numerical checks #5763
- Make batch matrix multiplication on GPU tunable #5752
- update vulkan build rule #5777
- aten::norm support added #5776
- Edit onnx parser to infer values in post order #5755
- Support symbolic inputs of Fill #5762
- support
aten::type_as
in the pytorch frontend #5787 - Temporary disable fp16
type_as
test for PyTorch Frontend #5799 - Add config switch for nn.dense layer type. #5801
- Move cpu-only frontend tests to a CPU stage #5807
- Pin hand landmark network to version 0.7.4. #5813
- Limit number of threads in all jobs #5815
- Error msg update #5818
- fix relay.build to not change the module argument in place #5822
- Fix InferType when module contains Prelude #5797
- Add a combine
batch_matmul
pass #5791 - RepeatVector, Conv3DTranspose op support added #5833
- Fix converting serialized quantized models #5839
- ffi (Object): make class dict visible in instances #5843
- Additional canonicalization added for AddNode #5846
- Suppress the warning messages when compile engine selects impls #5821
- fix #5849 #5851
- Introduce POD-C Compliant tvm::Map #5740
- Add bfloat16 #5601
- Add Python Classes for all Attrs #5853
- Fix map assign issue in CI test #5854
- Introduce Target Id Registry #5838
- Update
has_dtype/has_shape
to pattern lang doc #5847 - Add
nn.batch_flatten
as quantizable. #5805 - Fail early before running invalid dynamic graphs #5856
- Improve type handling in PyTorch frontend #5834
- HotFix the python intrin rule #5895
- add a few gradients #5899
- Add Binary Intrinsic ops to TIR Ops in C++ #5900
- Allow implicit conversion in TVM FFI to tvm::Bool #5907
- PyTorch frontend: fix handling of duplicate use of a model weight #5897
- Don’t multiply by constant 1 uselessly in dense #5911
- Support any index matching for TupleGetItem #5909
- Add MicroTVM tutorial using the STM32F746 discovery board #5655
- Fix serialization of inf float value #5912
- Fix CPU Thread Binding for Multiple Sockets #5918
- CUDA device API & VerifyGPUCode pass update #5898
- Update install.rst #5858
- Two small fixes to AMDCPU codegen for LLVM 10+ and ROCm 3.5+ #5920
- Add LegalizeInvalidAttach to legalize the
compute_at
location after split or fuse #591 - Don’t rewrite expressions used outside of the pattern #5930
- Add TupleGetItem to CSE #5931
- Various update for CoreML codegen #5934
- Update date in the NOTICE #5943
- Raise right error in tensorflow split op #5951
- Add rm xla attributes in tf docs #5950
- Fix OpenCL
get_valid_counts
errors due to intrinsicatomic_add
#5857 - Amendments for gradients #5941
- Fix the meaning of
conv{1,2}d_transpose
output_padding
parameter. #5758 - Make first order gradient graphs more efficient #5959
- Raise an exception when extern function does not return Stmt #5964
- Improve docker/bash.sh to handle git worktrees #5970
- Install DNNL (OneDNN) to CI Environment #5936
- Add Dynamic reshape to a dynamic namespace and add DynamicToStatic Pass #5826
- Add meshgrid op in Relay, TOPI, Pytorch frontend #5961
- Print right number of parentheses for LoadNode #5965
- Migrate data structure of TargetNode #5960
- Remove redundant function CreateBufferVecPtr #5982
- Fix string argument mismatch in GraphRuntimeCodegen #5933
- VectorType::get with two parameters is deprecated in LLVM 11+ #5984
- Fix Compilation Error in CRT #5713
- Fix runtime::String backward compatibility in JSON #5725
- Allow RPCWrappedFunc to rewrite runtime::String as std::string #5796
- Fix reshape #5739
- Fix building with LLVM-10 on macOS #5859
- Add cuda 11 to
contrib.nvcc.find_libdevice_path()
#5902 - Fix sequential cpp test #5745
- Infer types in MergeComposite #5766
- Fix recursive let for well formed check #5780
- Recover global state after
test_util.py
#5824 - Fix bug in rpc ring buffer shrink #5516
- Fix remote device sync #5538
- Fix bug in rpc ring buffer shrink (#5516) #5537
- RPC Server error fix on Pynq FPGA #5607
- Fix FloorMod Simplifier #5509
- Fix Python debugger segfaults with TVM built with LLVM #5685
- Fix Compilation Error in CRT #5713
- Fix runtime::String backward compatibility in JSON #5725
- Allow RPCWrappedFunc to rewrite runtime::String as std::string #5796
- Fix reshape #5739
- Make "none" DataType explicit #5491
- Change "scalar" and "stack" in IDL from "inrout" to "in" #5487
- Link necessary libraries when building runtime for Android #5496
- Fixes for wasm32 target #5489
- Reset target and wait for runtime initialization on connect. #5499
- Bump tophub rocm version #5504
- Improve commentary for RingBuffer #5518
- Add unit tests for ONNX PRelu and fix importer to pass them. #5521
- LRN only supports 4D tensors, remove it from
alter_op_layout
#5520 - Fix an issue with ONNX Upsample #5530
- Cache PrimExpr instead of raw pointers in bound analyzer #5533
- fix a few bugs with shape inference and types in the ONNX importer #5534
- Add Onnx Pad v11 #5539
- Changes to
cpp_rpc
to make it work on Android (+ Hexagon offloading) #5535 - Fix to reduce RAM size during loading model #5507
- Fix MakeLoopNest for warp memory #5382
- Load platform specific lib for tvmdsoop instead of the hard-coded tvm_dso_op.so #5542
- Add tests for running micro on native arm hardware #5546
- Apparently, ONNX Conv with no 'pads' defaults to zero padding #5548
- clang-format the h,cc,m files. #5557
- Fix conv2d alter op for arm cpu #5532
- Fix topi test for non tensorcore CI. #5563
- Add clang-format and nodejs to ci-lint #5567
- Enable clang-format. #5572
- Allow
ubuntu_install_darknet.sh
to work in both 18.04 and 16.04 #5574 - Add a quantized conv2 unit test for the tflite front-end #5558
- Fix JSON graph dumping. #5591
- Warp level reduction support for CUDA #5498
- One more fix for concurrency count #5589
- Improve robustness of the docs build #5583
- Phase out WebGL #5570
- Fix vulkansdk in the ci-gpu and upgrade to 1.2.135 #5566
- Update ci-cpu to bionic #5554
- Overestimate binary size for microTVM compiled binaries. #5590
- Fix bug and re-enable RPC execution test #5436
- Add ostream formatters for TargetPtr/TargetVal. #5592
- Fix cross thread reduction #5551
- Fix TVMArray layout on device #5599
- Add debug mode to tempdir() #5581
- Represent alignment information in LLVM IR #5598
- Fix codegen for warp shuffle intrinsics #5606
- Fix Topological Order calculation for DFPattern Language #5612
- Global MaxPool3d and AvgPool3d support #5098
- Fix build error of iOS RPC #5621
- isn't a CallNode sometimes #5623
- Introduce config to PassContext. #5631
- CMAKE fix #5630
- Label Pattern Partitions #5627
- Extend AttrPattern to support CallNode and FunctionNode attributes #5637
- Increase bss section size. #5660
- Add buffer name when creating tensor bindings #5670
- µtvm debug improvements #5648
- enable
amd_apu
device on vulkan target #5659 - Support TupleWrapper as direct ancestor of control flow ops #5639
- add tvm.micro pydoc to sphinx #5661
- Add a regression testcase for #5674 #5677
- Fix C++ RPC build problem on Linux #5671
- Add a check Callback to the Pattern Paritioner #5646
- Call previous excepthook in
tvm_excepthook
. #5675 - Fix the shift column for
scale_shift_nchw
andscale_shift_nhwc
in C topi #5679 - Support more dtypes for TVMDSOOp #5694
- In
memory_plan
, check if value is not None, instead of just checking value as boolean. #5700 - Fix flaky
test_topi_pooling.py:test_adaptive_pool
#5736 - Fix the values for
test_fmod
since it fails way too often otherwise #5723 - fix small bug about
dense_grad
#5695 - Fix sequential cpp test #5745
- Add Scatter to Topi/Relay/ONNX via hybrid script #5619
- Clean WASM environment before build #5759
- Fix gelu in PyTorch frontend, tighten numerical checks #5763
- fix #5686: remove a overstrict assert in MakeAllreduce (#5686) #5785
- Improve Pattern Language Docs #5676
- Add missing expr visitor for any #6082
- Remove the tvm web from version update #6122
- Clear relay cache after every build & Clear warning message cache after autotvm task extraction #6131
- avoid unexpected throw in AttrInitEntry #6128
- Verify that tensor reshape is valid. #6215
- Use LocalRunner by default in the tutorial tune_relay_cuda.py #6001
- Undefined names: import os for line 324 & import re for line 308 #6003
- GitHub Actions upgrade to actions/setup-python@v2 #6002
- Only pass pythonpath for ci images #6005
- Auto-convert shuffle with single index to “extract element” #6006
- Cache object refs in loop partitioner instead of object pointers #6004
- Fix
test_arith_solve_linear_inequality.py::test_multi_equal
#6014 - MXNet frontend support for AMP cast op #5976
- Demo showing how to run a pruned model. #5975
- Move compiler related registry items to
vta/build_module.py
#6012 - Pin keras version #6032
- Fix in
arm_cpu/conv2d_alter_op
for NHWC quantized #6027 - Add creation of Hexagon device in RPC client #6035
- Terminate basic block after “ret” instruction #6036
- µTVM CRT modifications for on-device RPC server #5921
- Create TBAA information based on the unrelying buffer type #6046
- Add support for tflite
arg_min
andarg_max
#5992 - Fix
fully_connected
converter when batch size is not 1 #6038 - Fix a primitive check error #5991
- Refactor to expose MakeOp functions to C++ #6047
- Fix
conv2_gemm
after target structure update #6037 - Remove use of designated initializers from
hexagon_module.cc
#6055 - Build crttest and cpptest separately. #6057
- Fix pytorch frontend prim::Constant issue #6051
- update frontend tutorials to new model based runtime interface #6063
- Remove unnecessary std::cout #6072
- Fix error message in Buffer::vstore, NFC #6056
- Fix FSIM Compile Error. #6070
- Improve vector simplification for float operands #6043
- Fix LocalBuilder on macOS with python 3.8. #6083
- Add missing test for fast erf #6058
- Fixed point multiplication improvements for AArch64 #5980
- Fix code generation bugs for C/CUDA & Improve VerifyGPUCode pass #6041
- Delete declaration of unused
op_node
#6102 - Load configs even it has no entity #6100
- Update SGX example Cargo.toml #6067
- Add default value for option
USE_DNNL_CODEGEN
in the cmake #6099 - Update installation doc with minor improvements #6104
- lint: add opencl .cl file type #6092
- Clean up conversions between TVM and Rust functions #6114
- Improve reduction schedule on arm CPUs #6110
- Register Shape Func for Some Operators to Handle Dynamic Shapes #5955
- Fix variable name conflict with OpenCL keyword #6048
- Some rust cleanups #6116
- Option to specify alternate directory to output build to #6016
- Add
get_num_inputs
to GraphRuntime #6118 - TFLite quantized conv test #6084
- Fix autotvm on the
conv2d_nchw_winograd.mali
operator #6130 - add attr option mfloat-abi for arm32 #6123
- Fix CUDA Library Tuning #6132
- Add missing RPC sources after refactor #6113
- Correct
runtime.load_module
#6161 - Improve error messages in graph tuner, graph runtime, and module loader. #6148
- Fix some shape mismatches between TF and Relay #6166
- Improve doc string #6176
- Fix incorrect function signature in header #6172
- Fix alignment of note #6181
- Implemented PADV2 Operator for TFLite and added support for constant values in PAD. #6167
- Unary ops support added in frontend #6196
- Change the meaning of
conv3d_transpose
output_padding
to matchconv{1,2}d_transpose
#6065 - Fix compile warnings. #6204
- Fix -mfloat-abi=soft compilation for ARM with OpenCL target #6150
- Match pytorch 1.6 googlenet pretrained model (#6201) #6212
- Mod operator, bug fix #6160
- RESHAPE with dynamic shape arg in TFLite frontend #6208
- Fix compilation error with cuda 11 #6213
- Fix
port_end
wrong default value 9199 to 9099 for keeping same with source code #6220 - Std op without specified dimensions support #6226
- fix crt building and running error #6231
- Implemented
ONE_HOT
Operator for TFLite. #6223) - Avoid unexpected throw in AttrInitEntry #6128
- Added casting to hybrid script doc and fixed pass infra doc #6174
- Fix compile warnings. #6204
- Fix -mfloat-abi=soft compilation for ARM with OpenCL target #6150
- Mod operator, bug fix #6160
- Fix compilation error with cuda 11 #6213
- Fix
port_end
wrong default value 9199 to 9099 for keeping same with source code #6220 - Std op without specified dimensions support #6226
- Verify that tensor reshape is valid. #6215
- Fix crt building and running error #6231
- Fix
conv2d_transpose
output padding #6236 - Fix cuda half math function is undefined: hpow, htanh #6225
- Fix division range estimation error in simplifier #6244
- Fix newer GCC compiler warnings. #6257
- Support
_contrib_SyncBatchNorm
#6245 - Fix reduction #6250
- Add apt repository for clang-11 and llvm-11 #6256
- Update tutorial to new TARGET as
micro_dev
is no more #6262 - Fix clang-format #6264
- Trivial fix, up the rodata section for the discovery board to 512 bytes. #6259
- Fix cuda half math function is undefined: hpow, htanh #6253
- Add dilation in x86 NCHWc depthwise conv support #6267
- Decrease test times by introducing testing model #6235
- Add support for parsing the any dimension. #6277
- Improve error messages for memory verifier and gpu memory verifier #6281
- Reflect Compile-Time CMake Options into libtvm.so #6280
- Add cmake options into libinfo #6286
- Update slice to infer attributes when not graph inputs #6276
- Use rpc.LocalSession for simple tests #6294
- Fix random fail #6312
- Fix resize test #6298
- Fix cython FFI compact with np.int64 #6321
- Fix relay vm optimize #6322
- Changed TVMCTVMContext to TVMContext #6306
- Make able to compile with MSVC #6341
- ROCm changed name of library and removed the old one in ROCm 3.7 release. #6345
- Compatible for ROCm before 3.7 #6359
- Use clear name that is separate from ASF brand for cache #6360
- Fix
Dockerfile.demo_android
#6361 - Fx sparse dense schedule on cuda #5803
- Fix strategy for sparse dense cuda #5782
- Fix x86 conv2d template when tuning with unpacked layout #5938
- Fix the filter width parameter in
depthwise_conv2d
#6081 - Fix reshape usage in ARM schedule #5732
- Missing header #4865
- Fix
conv2d_transpose
output padding #6236 - Simplify reduce expression in te.gradient #6611
API Changes
tvm.module
->tvm.runtime.module
tvm.module.load
->tvm.runtime.load_module
tvm.module.enabled
->tvm.runtime.enabled
tvm.module.system_lib
->tvm.runtime.system_lib
tvm.relay.Module
->tvm.IRModule
tvm.create_schedule
->tvm.te.create_schedule
tvm.placeholder
->tvm.te.placeholder
tvm.compute
->tvm.te.compute