MLIR News, 59th edition (20th December 2023)

Welcome to the 59th 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:

  • Save the date for the 2024 EuroLLVM Developers’ Meeting! It will be held April 9-11 at the Marriott in Vienna, Austria.

MLIR Commits Past Two Weeks:

  • A configuration mechanism was added to the dataflow solver to control whether it operates inteprocedurally or not to offer clients a choice. [click here].

  • Ivan Butyen added improvement to scf.parallel fusion pass. It abort fusion if memref load may alias write, but not the exact alias. Added alias check hook to naivelyFuseParallelOps, so user can customize alias checking. [click here].

  • Emulation patterns for vector masked load/store added e.g. vector.maskedload %base[%idx_0, %idx_1], %mask, %pass_thru . [click here].

  • Jacques added - Handle simple commutative cases in CSE. “While simple, this case did turn up in a real deployedinstance where it had a large (>10% e2e) impact.”. [click here].

  • Banach-space added [mlir][linalg] Use vector.shuffle to flatten conv filter [click here].

  • When the concatenated dim is statically sized but the inputs are dynamically sized, reifyResultShapes must return the static shape. Fixes the implementation of the interface for tensor.concat in such cases. [click here].

  • Mehdi fixed loop pipelining when the operand of yield is not defined in the loop body. [click here].

  • Matthias added changes to ’ Allow memref.cast in isDimOpValidSymbol. isDimOpValidSymbol is used during the verification of affine.for ops. It is used to check if LB/UB values are valid symbols. This change adds support for memref.cast, which can be skipped over if it is a ranked → ranked cast. This change fixes mlir/test/Transforms/canonicalize.mlir, which used to fail when verifying the IR after each pattern application (#74270). In this test case, a pattern that folds dynamic offsets/sizes/strides to static ones is applied. This pattern inserts a trivial memref.cast that can be folded away. This folding happens after the pattern application, so the IR fails to verify after applying the offsets/sizes/strides canonicalization pattern. [click here].

  • Alex added support for dialect attribute translation to LLVM IR, by extending the amendOperation mechanism for translating dialect attributes attached to operations from another dialect when translating MLIR to LLVM IR. Previously, this mechanism would have no knowledge of the LLVM
    IR instructions created for the given operation, making it impossible for it to perform local modifications such as attaching operation-level metadata. [click here].

  • The vector/gpu reduction kinds minf/maxf were renamed to minimumf/maximumf to align with the arith dialect ops. [click here].

MLIR RFC Discussion Topics

MLIR Ecosystem

Useful Links

2 Likes