[GlobalOpt] Keep strided input maps when the producer can fuse (#24950) Factoring `dim * cst` strides out of a contraction-like generic inserts a strided `tensor.extract_slice` between the contraction and its input. When the input has an elementwise producer (a dequantize feeding a 1x1 stride-2 convolution, say), the slice blocks both fusion paths: elementwise fusion requires the producer to directly define the consumer's operand, and tile-based producer fusion only supports unit-stride slices. Codegen falls back to materializing the producer as a whole-tensor stack allocation in every workgroup: a 3.2 MB alloca for a 1x256x56x56xf32 dequantize, well over the 32 KB stack limit, and the compile fails. Skip the factoring only when the strided input's producer can fuse elementwise into the contraction and into every other user of its result, so the fusion actually eliminates the producer. Codegen then merges the producer into the contraction, which reads the input directly through the strided map with no intermediate tensor. Producers that are materialized anyway (e.g. a result also returned from the function) keep the factored projected-permutation input map. Strided contractions with a fusable producer now lower through the generic path instead of contraction selection such as AMDGPU MFMA, the original motivation for the factoring, in exchange for eliminating the intermediate tensor. Strided contractions on dispatch-boundary inputs keep the factored form. Fixes #24752 Tests: iree-opt --split-input-file --mlir-print-local-scope -iree-global-opt-convert-strided-contraction-to-contraction compiler/src/iree/compiler/GlobalOptimization/test/strided_contraction_to_contraction.mlir Signed-off-by: zhangpan <98025960+zhangpan2001@users.noreply.github.com> Co-authored-by: OpenAI <noreply@openai.com>
IREE (Intermediate Representation Execution Environment, pronounced as “eerie”) is an MLIR-based end-to-end compiler and runtime that lowers Machine Learning (ML) models to a unified IR that scales up to meet the needs of the datacenter and down to satisfy the constraints and special considerations of mobile and edge deployments.
See our website for project details, user guides, and instructions on building from source.
Releases notes are published on GitHub releases.
| Package | Release status |
|---|---|
| GitHub release (stable) | |
| GitHub release (nightly) | |
iree-base-compiler | |
iree-base-runtime |
For more details on the release process, see https://iree.dev/developers/general/release-management/.
| Operating system | Build status |
|---|---|
| Linux | |
| macOS |
For the full list of workflows see https://iree.dev/developers/general/github-actions/.
See our website for more information.
Community meeting recordings: IREE YouTube channel
| Date | Title | Recording | Slides |
|---|---|---|---|
| 2025-06-10 | Data-Tiling in IREE: Achieving High Performance Through Compiler Design (AsiaLLVM) | recording | slides |
| 2025-05-17 | Introduction to GPU architecture and IREE's GPU CodeGen Pipeline | recording | slides |
| 2025-02-12 | The Long Tail of AI: SPIR-V in IREE and MLIR (Vulkanised) | recording | slides |
| 2024-10-01 | Unveiling the Inner Workings of IREE: An MLIR-Based Compiler for Diverse Hardware | recording | |
| 2021-06-09 | IREE Runtime Design Tech Talk | recording | slides |
| 2020-08-20 | IREE CodeGen (MLIR Open Design Meeting) | recording | slides |
| 2020-03-18 | Interactive HAL IR Walkthrough | recording | |
| 2020-01-31 | End-to-end MLIR Workflow in IREE (MLIR Open Design Meeting) | recording | slides |
IREE is licensed under the terms of the Apache 2.0 License with LLVM Exceptions. See LICENSE for more information.