Skip to content

Release v3.13.0

Latest

Choose a tag to compare

@devtbi devtbi released this 19 Oct 11:26
89ece87

IREE v3.13.0 Release Notes

Release Candidate: iree-3.13.0rc20261016
PRs: 76 since v3.12.0
VMFB Bytecode Version: 17.0 (unchanged from v3.12.0)
HAL Module Version: 0.7 (unchanged from v3.12.0)

Breaking changes

  • Textual IR syntax for op properties changed. The Codegen, VectorExt, Flow, HAL, LinalgExt, Stream, Util and VM dialects now use strict properties, so inherent op properties are written in <...> instead of {...}, e.g. iree_codegen.inner_tiled ins(...) outs(...) <...> : .... Update hand-written IR and tuning specs that use the old form. #24983
  • Scalable vectorization on LLVMCPU requires --iree-llvmcpu-vscale-range. The range is recorded on the executable target. With +zvl*b features, the larger of the two lower bounds is used. #24848
  • CUDA targets default to newer PTX versions: 8.4 for sm_89, 8.7 for sm_120 and 8.8 for sm_121. sm_120 and sm_121 previously failed to compile at all. sm_89 now needs a driver that supports PTX 8.4 (CUDA 12.4). --iree-cuda-target-features still overrides the default. #24976
  • Python benchmark_module results changed. user_counters was replaced by BenchmarkResult.report, which holds the complete Google Benchmark JSON row with every user counter. Failures raise BenchmarkToolError. #24985

Notable changes

Compiler

  • Quantization:
    • PT2E quantization from PyTorch (per-tensor, per-channel-group and per-token) is preserved as LinalgExt quantize/dequantize ops. #24918, #25008, #25024
    • Quantize-dequantize contractions are rewritten into integer math, and affine QDQ ops propagate through tensor operations. #24902, #24906, #24905
  • Dispatch creation: packed contractions fuse with their epilogues and unpack, contraction dimensions are normalized outside dispatches, and tensor encodings propagate outside dispatch regions. #24967, #24965, #24966
  • Experimental dynamic compiler plugins load at runtime with --iree-load-plugin or IREE_LOAD_PLUGINS (CMake option IREE_EXPERIMENTAL_COMPILER_DYNAMIC_PLUGINS). Plugins need matching IREE and LLVM/MLIR revisions. An out-of-tree sample plugin was added. #24892, #24894, #24896
  • CUDA: FP8 mma.sync transpose shapes are fixed. #25015
  • CPU: RISC-V V f32 vfmacc.vf inner_tiled MMA. #24933
  • StableHLO: dynamic ops with constant operands fold to static forms, and bounds encodings lower to util.assume.int. #24938, #24939
  • Compile time: fixed O(N²) scaling in Stream partitionRegionConcurrency. #24958
  • HAL: new hal.command_buffer.flush_buffer and hal.command_buffer.invalidate_buffer ops for non-coherent memory. Stream does not lower to them yet. #24945

Runtime

  • VM: internal calls now preserve 64-bit arguments and results. Previously the high word could be dropped, which surfaced as out-of-range buffer bindings. #24946
  • HAL:
    • Buffer views reject shape and byte-size overflows instead of wrapping to an undersized allocation. #24992
    • New command buffer flush/invalidate API. It is optional for drivers and returns UNIMPLEMENTED where unsupported. #24945
  • Vulkan: queue operations accept foreign semaphores, and a rejected queue_dealloca no longer clears the pending flag. #25010, #25003
  • Parameters: parameter files can be loaded with asynchronous I/O, as an explicit opt-in. The existing mmap behavior is kept. #24988
  • WebAssembly: f64 musl builtins for ONNX models were added, and async backend selection for Emscripten and wasm64 was fixed. #24953, #25042

Developer tools

  • iree-benchmark-module:
    • Sync, async and dispatch execution share one path. Errors now go to stderr with a failure exit code, --enable_output_processing requires a single benchmarked function, and non-positive batch sizes are rejected. #24986
    • New --dispatch_statistics adds per-function dispatch timing rows. #24987
  • Bazel: Python bindings for the compiler, and IREE paths and labels now resolve in external consumers. #24980, #24977, #24981

New contributors

Full changelog

Commit history: v3.12.0...v3.13.0

Release notes were AI-generated and edited.