MLIR News, 62nd edition (14th Feb 2024)

Welcome to the 62nd issue of the MLIR Newsletter covering developments in MLIR, and related projects in the ecosystem. We welcome your contributions (contact: javed.absar@gmail.com). Click here to see previous editions.

Highlights and Ecosystem:

MLIR Commits Recently:

  • HsiangKai Wang added improvements to SCF parallel loop fusion. When checking if the load indices of the second loop coincide with the store indices of the first loop, currently it only considered the index values are the same or not. However, there are some cases the index values defined by other operators. In these cases, it would treat them as different even the results of defining operators are the same. [click for more].

  • Ivan Butygin Added reductions support to scf.parallel fusion [click for more].

  • Kolya Panchenko added support for VCIX intrinsics in LLVMIR dialect [click here for more].

  • Aart added external entry method wrapper for sparse tensors. Similar to the emit_c_interface, this pull request adds a pass that converts public entry methods that use sparse tensors as input parameters and/or output return values into wrapper functions that [dis]assemble the individual tensors that constitute the actual storage used externally into MLIR sparse tensors. This pass can be used to prepare the public entry methods of a program that is compiled by the MLIR sparsifier to interface with an external runtime, e.g., when passing sparse tensors as numpy arrays from and to Python. Note that
    eventual bufferization decisions (e.g. who [de]allocates the underlying memory) should be resolved in agreement with the external runtime (Python, PyTorch, JAX, etc.)

  • Boian Petkantchin added a pass that converts a function that has sharding annotations into SPMD form. [click for more].

  • Andrzej added Linalg.mmt4d tests. “It was added a while back (⚙ D105244 Add linalg.mmt4d named op), but there are virtually no tests in-tree. In the spirit of documenting through test, this PR adds a few basic examples”. [click here fore more].

  • PR to add a direct vectorization lowering of tensor.pack into mask(vector.transfer_read)vector.shape_castvector.transposevector.transfer_write [click here for more].

  • Cullen added in ARM SME support for 4-way widening outer products. This enables the fusion of 4 ‘arm_sme.outerproduct’ operations that are chained via the accumulator into single widened operations. [click here for more].

Ecosystem

  • Stella Laurenzo, "FYI - We are working on an onnxruntime EP (execution provider). Conversation is happening elsewhere so just noting here for visibility: Branch: GitHub - nod-ai/onnxruntime: ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator
    Main directory/readme: onnxruntime/onnxruntime/core/providers/iree at iree_ep · nod-ai/onnxruntime · GitHub .

  • OpenXLA Discussion - [road map for MHLO], “For MLIR-HLO: The existence of this project was to serve MLIR-based projects in the ML ecosystem: MLIR compilers, interchange to/from other IRs, or an IR for frontends to generate and leverage the OpenXLA ecosystem’s feature set. We proposed that StableHLO should fill this need, and the plan to sunset the MLIR-HLO repo was approved by the community. Since then many of the larger projects using MLIR-HLO have migrated to use StableHLO (IREE, torch-mlir, onnx-mlir), … StableHLO on the other hand is the OpenXLA community dialect which only contains hardware agnostic ops / framework agnostic ops. Use of MHLO should be easily replaceable with StableHLO, and if anything is missing a discussion on this forum is a good place to start”.

Related Projects

Useful Links

4 Likes