TVM Monthly - April 2023

TVM Monthly - April 2023

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 2023 we welcomed many new contributors to the project. Importantly we welcomed Zihao Ye as new committers, and Jiajun Jiang, Qiang Zhang, Sunghyun Park as new reviewers. Thanks to everyone for the hard work and contributions!

We continue to improve TensorIR, MetaSchedule, Frontend and other runtimes. Metal backend was enhanced in recent months. A new RPC about a plan for integrating SparseTIR as a new dialect into TVM was proposed. The entire progress is tracked in Sparse TIR as a new dialect in TVM in discussion.

Pull Requests

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

TIR

  • #14021 - More flexible buffer compaction
  • #14720 - [Hexagon] Add get_vtcm_allocation_sizes with lowering
  • #14711 - [Analysis] Calculate allocated memory at module level
  • #14492 - Flatten SeqStmt on construction
  • #14626 - [TensorIR][Bugfix] reindex_cache_write do not mutate init statement
  • #14504 - [TensorIR][Doc] Docstring of reorder_block_iter_var
  • #14567 - [Hexagon] Use the “target” value in T.func_attr for VTCM limit
  • #14611 - [Docs] Fix unsafe_set_dtype docstring
  • #14596 - [ARITH][TensorIR] Improve CompactBufferRegion for symbolic shape
  • #14598 - Add CUDA int4 tensor core intrinsics
  • #14593 - [Schedule] Method returning the function being worked on
  • #14588 - [Fix]UnifyThreadBinding creating unit loop with annotation
  • #14592 - [TensorIR] Fix ComputeAt with perfect symbolic bound
  • #14491 - Use String instead of StringImm for AttrStmtNode::node
  • #14589 - [Fix][Analysis] Reduction block checking alloc_buffers
  • #14496 - Update SplitHostDevice to post-process with ConvertSSA
  • #14490 - [Schedule] Add get_output_blocks primitive
  • #14495 - Merged kDeviceThreadAxis and kUseDynamicSharedMemoryTag
  • #14497 - Improved SeqStmt::Flatten utility
  • #14494 - Use IRModuleNode::Remove to remove None in PrimFuncPass
  • #14489 - Use same DataType of builtin::tvm_struct_set in C++ and Python
  • #14329 - [TensorIR] Support for L2 prefetch async copy and pred_guard enabled async in vectorized if_then_else
  • #14398 - Add merge primitive for TIR schedule
  • #14448 - [TensorIR][Schedule] New primitive reorder_block_itervar

Arith

  • #14547 - Enhance IterMapSimplify for symbolic
  • #14571 - [BUGFIX] Fix a bug of iter map floormod(x,2) simplify
  • #14582 - Fix solve inequality of unbound var ranges
  • #14538 - Enhance CanonicalSimplify to Simplify ProdDiv
  • #14523 - Enhance CanProve to handle symbolic bound
  • #14528 - [Bugfix] Simplify “x - 1 < y” into “x <= y”
  • #13936 - Simplifications for floormod(x, 2)

MetaSchedule

  • #14654 - Handle output cases for InlineConstantScalars
  • #14642 - PostProc not rewriting unroll for purely spatial block
  • #14591 - Handle cases when no features found by FeatureExtractor
  • #14584 - [ARM] Beautification of the function names

Runtime

  • #14656 - Fix Can’t “query_imports” Bug of VM Executable
  • #14524 - Runtime module property mask for Metal and Vulkan
  • #14539 - [Target] Add Apple M1 GPU tag with 256-thread restriction
  • #14508 - [Target] Fix Jetson AGX Xavier CPU core count
  • #14467 - [Target] Add A10G gpu cuda tag

ArmComputeLibrary & Hexagon & Metal & microNPU

  • #14484 - [ACL] Prevent offloading of per-channel quantized operators
  • #14533 - Hexagon inference fix
  • #14727 - Update metal runtime to directly store kernel map
  • #14671 - Fix flaky memory issue due to racing
  • #14629 - [microNPU][ETHOSU] Softmax int8 legalization support
  • #14353 - [microNPU] Add support for MEAN with uint8 ifm
  • #14587 - [microNPU] Fix skip tests when Vela is not present
  • #14464 - [microNPU][ETHOSU] Add restrictions to convert to NHCWB16 layout in LayoutOptimization pass
  • #14401 - [microNPU] Add support for ResizeNearestNeighbor with half_pixel_centers=True

CI & Docker & Build

  • #14713 - Add PLATFORM env var to builds
  • #14680 - Downgrade ci_cpu llvm version back to 11
  • #14653 - [tests][scripts][release] Optimize release note script about categories etc
  • #14646 - [test][script] Fix release gather_pr.py of script about ghost users or blank PR nodes
  • #14550 - Add JAX deps in Dockerfiles
  • #14466 - Update ci_cpu image and build with llvm-15
  • #14530 - Pin sccache version to 0.3.3
  • #13773 - [Test][Topi] Avoid depending on f32 rounding behavior for crop_and_divide tests
  • #14458 - Fix broken model link
  • #14476 - [testing] Use tuples for numpy indexing
  • #14303 - Add llvm-15 and mlir-15 to Docker setup
  • #14590 - Support rootless docker when using docker/bash.sh
  • #14686 - [CMAKE] Update search pattern of config
  • #14607 - fix: deploy ci
  • #14475 - [pytest] Don’t return values from test_* functions

Frontend

  • #14707 - [Keras]fix a bug about alpha attribute in LeakyReLU which lead to passes conflict
  • #14699 - [Torch] fix typo in new_full
  • #14667 - [TFLite]Support for quantized squared difference
  • #14546 - [Tensorflow] Fix conv2d_transpose for NHWC layout
  • #14575 - [Paddle] [PaddlePaddle Hackathon 4]add attribute support for dropout/hard_sigmoid/pixel_shuffle
  • #14454 - [Oneflow] Use FLOW_2_STR_DTYPE for dtype

LLVM

  • #14564 - Validate generated LLVM module before optimization
  • #14568 - Expand tvm::Type to DWARF conversion
  • #14563 - [Codegen]Remove cast to i8* in builtin::address_of
  • #14534 - Use DataLayout::getABITypeAlign instead of getABITypeAlignment
  • #14470 - Add missing override to GetFormat and GetPropertyMask
  • #14469 - Add guard for #include <llvm/Transforms/IPO/PassManagerBuilder.h>
  • #14628 - [CODEGEN] Fix metal codegen when with only single working dim

Relay

  • #14601 - Enhance type infer for dynamic shape
  • #14462 - preserve the order of input_info of pytorch
  • #14485 - Check if the attribute “name” exists before accessing it
  • #14556 - [Relay] fix a bug caused by IncompleteTypeNode in EinsumRel while doing MergeComposite
  • #14482 - Conv1Dtranspose default kernel layout should be IOW
  • #14506 - [QNN] Convert fake quantized take to quantized op

TOPI

  • #14566 - [Bugfix]Output strides in pack_buffer() utility
  • #14549 - remove the i32 cast for output shape of pool
  • #14541 - Expose topi::collapse_sum to Python and support symbolic shape
  • #14343 - Fix data race of batch multibox detection
  • #14521 - Support symbolic shape in einsum
  • #14459 - [Hexagon]Use IndexMap axis separator instead of TE
  • #14450 - dynamic externsion

TVMScript

  • #14488 - Distinguish between void* and handle
  • #14487 - Upstream IRModule parser from unity
  • #14320 - [Bugfix]Handle LetStmt for var1 = var2 expressions

AutoTVM

  • #14683 - [AutoTVM] Added Droplet algorithm in TVM
  • #14468 - [AutoTVM] New rank-binary loss_type for the new xgboost >= 2.0.0 behaviour

Misc & Docs

  • #14694 - unify search path approach to various libs
  • #14636 - Fix bug about wrong attribute name
  • #14569 - [Node] Allow alternative root names in ObjectPath::Root()
  • #14522 - [Object] Implemented .as for ObjectRef param, returns Optional
  • #14477 - feat: use spot instances for ci with on demand as a backup
  • #14544 - Update to v0.13.dev0
  • #14498 - [Node] Utility methods for ObjectPathPair handling
  • #14529 - [AOT] Fix warning on dropping const in TVMAotExecutor_GetInputName
  • #14585 - Fix typo in the Vitis AI Integration docs
  • #14480 - Fix MetaSchedule Docs

Contributors Whose Pull Requests were 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. Data is from 2023-04-01&to=2023-04-30.

Lunderberg(23), tqchen(10), MasterJH5574(6), kparzysz-quic(6), quic-sanirudh(4), wrongtest-intellif(3), yzh119(3), yongwww(2), vinx13(2), NicolaLancellotti(2), Hzfengsy(2), junrushao(2), lhutton1(2), t-vi(1), ashutosh-arm(1), cbalint13(1), driazati(1), zxybazh(1).

3 Likes