MLIR News, 67th edition (18th June 2024)

Welcome to the 67th 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, Discussions and Ecosystem:

MLIR Commits Recently:

  • zjgarvey added named op: linalg.conv_2d_ngchw_gfchw_q. This op is similar to
    linalg.conv_2d_ngchw_gfchw, but additionally incorporates zero point
    offset corrections… [click here].

  • Han Chung added port for unrolling vector.bitcast ops. [click here].

  • Matthias Springer and Markus Bock simplified the design of the GreedyPatternRewriterDriver class. This class used to inherit from both PatternRewriter and RewriterBase::Listener and then attached itself as a listener. In the new design, the class has a PatternRewriter field instead of inheriting from PatternRewriter, which is generally perferred in object-oriented programming. [click here].

  • Stephen Tozer set debug info format in MLIR → LLVM-IR translation. MLIR’s LLVM dialect does not internally support debug records, only converting to/from debug intrinsics. To smooth the transition from intrinsics to records, there is a step prior to IR->MLIR translation that switches the IR module to intrinsic-form; this patch adds the equivalent conversion to record-form at MLIR->IR translation. This is a partial reapply of #95098 which can be landed once the flang frontend has been updated by #95306. This is the counterpart to the earlier patch #89735 which handled the IR->MLIR conversion. [click here].

  • This change modifies the conversion of bufferization.clone to memref to
    generate the runtime calculations and allocation to allow for cloning an
    unranked memref. [click here].

  • Max added FoldPadWithProducerReshapeOpByExpansion fusion by collapsing and fusion by expansion patterns for tensor.pad ops in ElementwiseOpFusion. Pad ops can be expanded or collapsed as long as none of the padded dimensions will be expanded or collapsed.[click here].

  • Andrzej updated tests for scalable vectors to: * vector-transfer-collapse-inner-most-dims.mlir [click here].

  • Matthias added a commit to simplify and improve documentation for the part of the ConversionPatternRewriter API that deals with signature conversions. [click here].

  • Krzysztof Drewniak generalized and improved -int-range-optimizations (#94712). [click here]. When the integer range analysis was first develop, a pass that did integer range-based constant folding was developed and used as a test pass. There was an intent to add such a folding to SCCP, but that hasn’t happened. Meanwhile, -int-range-optimizations was added to the arith dialect’s transformations. The cmpi simplification in that pass is a strict subset of the constant folding that lived in -test-int-range-inference. This commit moves the former test pass into -int-range-optimizaitons, subsuming its previous contents.

  • Fixed crash in the ownership-based buffer deallocation
    pass when indirectly calling a function via SSA value. Such functions
    must be conservatively assumed to be public. [click here].

  • Rolf Moren extended transform.foreach to take multiple arguments [click here]. This changes transform.foreach’s interface to take multiple arguments, e.g. transform.foreach %ops1, %ops2, %params : … { ^bb0(%op1, %op2, %param): BODY } The semantics are that the payloads for these handles get iterated over as if the payloads have been zipped-up together - BODY gets executed once for each such tuple.

  • Max added transpose + pack/unpack folding support for transpose ops in the form of linalg.generic ops. There were also some bugs with the permutation composing in the previous patterns, so this PR fixes these bugs and adds tests for them as well.Those fixed. [click here].

  • Guray added gpu.cluster_dim_blocks and gpu.cluster_block_id Op. [click here].

Related Projects

Useful Links

2 Likes