Repository navigation
IREE v3.12.0 Release Notes
Release Candidate: iree-3.12.0rc20260917
Commits: ~720 PRs since v3.11.0
VMFB Bytecode Version: 17.0 (unchanged from v3.11.0), but The HAL module is now version 0.7, so previous VMFBs are incompatible.
Breaking changes
-
Recompile your VMFBs. The HAL module is now version 0.7. Modules compiled with 3.11 or earlier will not load with the 3.12 runtime. #24507
-
The HAL semaphore system was replaced. The HAL C API was changed. Each HAL semaphore is a wrapper around a shared
iree_async_semaphore_t, driven by the async proactor.iree_hal_semaphore_signal()andiree_hal_semaphore_list_signal()take a newconst iree_async_frontier_t*argumentfrontier; passNULLif you don't need it.- The semaphore wait functions take
iree_async_wait_flags_tinstead ofiree_hal_wait_flags_t, andiree_hal_wait_mode_tis nowiree_async_wait_mode_t. iree_wait_primitive_tis nowiree_async_primitive_t, so the external timepoint typeWAIT_PRIMITIVEis nowASYNC_PRIMITIVE.iree_wait_source_ctl_fn_tis nowiree_wait_source_resolve_fn_t.iree/base/wait_handle.h,iree/base/event_pool.handiree/hal/utils/semaphore_base.hwere removed.- Out-of-tree HAL drivers must embed
iree_async_semaphore_t.
-
Other HAL C API changes:
- All
iree_hal_driver_create_device*functions takeiree_hal_device_create_params_t, which has a requiredproactor_pool. iree/base/loop.handiree_loop_*moved toiree/vm/loop.handiree_vm_loop_*.create_executable_cacheno longer takes a loop argument.iree_hal_device_queue_allocatakes aniree_hal_pool_t*(NULLfor the default pool) instead of a pool bitmask.iree_hal_executable_export_*replaced withiree_hal_executable_function_*.
- All
-
The Vulkan driver was rewritten and now requires Vulkan 1.3 with
timelineSemaphore,scalarBlockLayoutandsynchronization2. Older Vulkan stacks are no longer enumerated. Runtime flag defaults changed:--vulkan_sparse_bindingand--vulkan_sparse_residencynow default tofalse(due to bug reports)
-
Device profiling flags were replaced.
--device_profiling_filebecomes--device_profiling_output=<file>.ireeprof.--device_profiling_modenow takes a comma-separated list of data families, e.g.queue-events,dispatch-events, instead ofqueue|dispatch|executable.- RenderDoc/Metal captures move to
--device_capture_tool/_file/_label. - In Python,
HalDevice.begin_profiling()no longer takes a file path; usebegin_external_capture()instead.
-
Tool output comparison changed.
--equality_modeaccepts onlyapproximate, the new numpy.isclose-style default, orexact;absoluteandrelativewere removed. The new--expected_rtol(default1e-5) sets the relative tolerance, and the--expected_f*_thresholdflags are now absolute tolerances. #24394 -
Codegen pipeline names in
translation_infochanged. They are now backend attributes, e.g.#iree_gpu.pipeline<TileAndFuse>and#iree_cpu.pipeline<Default>, and the old keywords no longer parse. Update hand-written tuning specs andcompilation_infoattributes. #23816, #24398 -
Removed and renamed compiler flags:
- The
--iree-hip-*aliases were removed; use--iree-rocm-*. #24381 --iree-rocm-index-bitswas removed. #23948--iree-global-opt-enable-demote-contraction-inputs-to-bf16was replaced by--iree-global-opt-demote-contraction-inputs-type=<f16|bf16>and--iree-global-opt-demote-contraction-inputs-operations=<all|conv|matmul>. #23850--iree-global-opt-experimental-disable-conv-generalizationwas removed. #23377--iree-vulkan-experimental-indirect-bindingswas replaced by--iree-vulkan-dispatch-abi=descriptors|bda|all(defaultdescriptors). #24459
- The
-
The
iree-dialectsproject was removed, together with the legacytransform.iree.match_callback-style transform ops and theiree.compiler.dialects.transform.iree_structuredPython module. #24612 -
Python implicit uploads (NumPy arguments,
asdevicearray) now use device-local memory instead of forcing host-visible memory. #24106 -
Packaging and build:
Notable changes
Compiler
- New targets:
- WebGPU: a WGSL target that goes through SPIR-V and Tint (opt-in via
IREE_TARGET_BACKEND_WEBGPU_SPIRV). #24463 - NVIDIA: Ada (sm_89) and Blackwell (sm_120/sm_121). #24422, #24616
- AMD: CDNA5/MI455X and RDNA3 chip details. #24923, #24419
- Vulkan: Broadcom VideoCore VII, Arm Mali 5th-gen and llvmpipe. #24541, #24559, #24595
- WebGPU: a WGSL target that goes through SPIR-V and Tint (opt-in via
- ROCm GPU codegen:
- CUDA GPU codegen:
- GPU ops:
arg_compareandscanare now supported in VectorDistribute/TileAndFuse. #24003, #24187 - Tuner: SMT-based pipeline constraint generation and verification for VectorDistribute and TileAndFuse, with Python bindings. #23795, #24539
- CPU codegen:
- Opt-in
inner_tiledlowering for data-tiled encodings and a C-bitcode ukernel framework (--iree-llvmcpu-enable-inner-tiled,--iree-llvmcpu-enable-llvm-ukernels). #24218, #24569 - RISC-V: scalable RVV data tiling, plus RVV bf16/int8 and SpaceMiT IME kernels. #24600, #24695, #24706
- Data-tiled convolutions can now be lowered to a
conv_nchwcukernel. #24714, #24730 - Ensured that SME-only targets such as Apple Silicon work alongside SME + SVE targets. #24661
- Fixed a ~2.4x f32 matmul regression on non-AVX512 x86. #24701
- Opt-in
- Dispatch creation: more fusion, covering producers with multiple users (e.g. layernorm in one dispatch), multi-result producers, and scalar reductions with their consumers. #24050, #24169, #24166
- Attention:
- Input conversion:
Runtime
- Vulkan: the HAL driver was fully rewritten. It has native queue paths, push descriptors and a new descriptor-free buffer-device-address dispatch ABI with cached command-buffer replay. #24459, #24505
- AMDGPU: a new native HSA HAL driver, experimental and off by default (
IREE_HAL_DRIVER_AMDGPU). It replays AQL packets, includes profiling, counters and traces, and offers optional PM4 command buffers. #24298, #24452 - CPU (local-task/local-sync): the execution path was rewritten, and the task system no longer has a poller thread or the 63-waiter limit. #24248, #23695
- HAL: all drivers now share one async semaphore implementation integrated with the proactor, and there is a new allocation-pool substrate (TLSF, slab, fixed-block). #23695, #24236
- WebAssembly/WebGPU:
- Bare metal: freestanding runtime builds for
IREE_PLATFORM_GENERIC, with a riscv64 QEMU sample. #24820, #24844 - Metal and CUDA fixes:
- Python:
Developer tools
iree-profileandiree-profile-renderinspect HAL-native.ireeprofdevice profiles and export them to Perfetto. #24240iree-run-replay,iree-benchmark-replayandiree-dump-replayreplay HAL streams recorded with--device_replay_output. #24288iree-as-moduleassembles.vmasminto VMFBs.iree-dump-modulenow prints round-trippable VMASM, so scripts that parse its output may need updating. #24508iree-benchmark-module --enable_output_processingwrites or checks the outputs of the last iteration. #24789- Build:
New contributors
- @dbrll made their first contribution in #23870
- @yash-amd made their first contribution in #23983
- @Finistere made their first contribution in #24150
- @YuWei-CH made their first contribution in #24263
- @vihangm made their first contribution in #24278
- @cerisier made their first contribution in #24434
- @Alex-Wengg made their first contribution in #24500
- @lua1235 made their first contribution in #24499
- @moomoohorse321 made their first contribution in #24504
- @0xASTRA made their first contribution in #24551
- @Charlie-Tsai1123 made their first contribution in #24523
- @copparihollmann made their first contribution in #23734
- @roberto-laudani made their first contribution in #24603
- @Ha-Eyz made their first contribution in #24592
- @Minterl made their first contribution in #24596
- @UmerAhmad211 made their first contribution in #24647
- @juanigp made their first contribution in #24552
- @EylonKrause made their first contribution in #24677
- @AkunCube made their first contribution in #24675
- @FedericoBruzzone made their first contribution in #24661
- @mbknust made their first contribution in #24690
- @hsqStephenZhang made their first contribution in #24683
- @huang-me made their first contribution in #24728
- @dimp-pl made their first contribution in #24695
- @KamilKarwacki made their first contribution in #24668
- @Murari007 made their first contribution in #24780
- @syedzohaibshah made their first contribution in #24794
- @Irfanuet191 made their first contribution in #24797
- @ShiroKSH made their first contribution in #24773
- @mocknen made their first contribution in #24812
- @jrlvdr made their first contribution in #24837
- @jph00 made their first contribution in #24840
- @jakobknauer made their first contribution in #24867
- @L-roro made their first contribution in #24877
- @linsen458-spec made their first contribution in #24907
Full changelog
Commit history: v3.11.0...v3.12.0
Release notes were AI-generated and edited.