Skip to content

Release v3.8.0

Choose a tag to compare

@sa-faizal sa-faizal released this 14 Oct 18:17
· 660 commits to main since this release
c5287c1

Wave v3.8 Release

New Website – Launched a new website to help users learn more about Wave and explore its features: https://www.wave-lang.com/

New Ops and Kernels

  • TopkOp Implementation — Implements TopkOp, modeled after ReduceOp, using iterative reduction and masking (similar to sglang’s moe_topk_softmax kernel). #277
  • RoundOp Added — Introduced RoundOp for Wave kernels. #283
  • Implement Broadcasting for SelectOp — Generalized broadcast handling from binary ops to any-arity ops, used by Topk and similar kernels. #251
  • [WMMA] v_wmma_f32_16x16x16_f16 Type Support — Added RDNA MMA type for 16×16×16 mixed-precision matrix operations. #306
  • Binary Ops Lowering — Added lowering support for binary operations to expand backend compatibility. ftynse/water#36
  • Distributed GEMM Across Multi-GPU Devices — Enables distributed matrix multiplication with per-dimension device partitioning via DeviceConstraint. #302
  • Dynamic AtomicOp Indexing — Adds mapping_dynamic_vals for runtime-computed indices in atomic operations (used in MoE alignment). #269

Kernel Optimization

  • Linearize Shared Memory Accesses — Linearizes shared-memory reads/writes to improve register reuse and enable better common subexpression detection. #275
  • Scalarize Packed Math — Added option to scalarize packed addf/mulf near MFMA ops to avoid hardware-induced performance penalties. #274
  • Hardware Transpose Support (gfx950+) — Enables amdgpu.transpose_load for native hardware transpose on MI350+ GPUs. #285

Compiler Enhancements

  • Normal Forms Framework — Introduces WaveNormalFormAttr for enforcing IR invariants and managing pass pre-/post-conditions at fine granularity. ftynse/water#41, ftynse/water#57
  • Dataflow-Based Shape Inference — Adds forward/backward dataflow analysis for shape inference, ensuring convergence and conflict detection. ftynse/water#20
  • Hyperparameter and Index Mapping Attributes — Adds WaveHyperparameterAttr and WaveIndexMappingAttr for symbol–value mappings and affine index modeling. ftynse/water#23, ftynse/water#30, ftynse/water#42
  • Lowering Pipeline Setup + RegisterOp Lowering — Establishes type converter (wave.tensor → vector/memref) and first lowering pattern (RegisterOp). ftynse/water#28
  • Wave Dialect GEMM Representation — Adds high-level and lowered GEMM kernels using new MMA type variants. ftynse/water#27
  • Wave Dialect Initialization — Created base dialect structure with symbol attributes, tensor types, symbolic shapes, and minimal MMA op. ftynse/water#17
  • Wave Dialect MLIR Converter & Emitter Smoketest — Added converter and water emitter to translate Wave kernel traces into MLIR Wave dialect. #273
  • Partition Gathers/Scatters Pass — Moved gather/scatter decomposition into a standalone pass for cleaner read/write handlers. #259

Scheduling / Runtime Improvements

  • Standalone Multi-Device Runtime Wrapper — Introduces MultiDeviceLaunchable, a minimal API for executing IREE models across multiple GPUs. #222
  • Full Trace Preservation After Compilation — WaveKernel now stores full post-pass traces for accurate Wave dialect emission and debugging. #298

Documentation / Developer Experience

  • Normal Forms Documentation — Added detailed explanation of normal form concepts, invariants, and pass conditions. ftynse/water#57
  • Wave Dialect Python Bindings — Added C API, Python bindings (water_mlir.dialects.wave), and CI integration for build verification. ftynse/water#19
  • Debug Env Var for Location Control — Added environment variable to dynamically control debug location levels for easier inspection. #289

Change Log

Git History

What's Changed

  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #272
  • hip-iree-target parsing non-colon fix by @lamikr in #271
  • Remove some unused TK remains. by @Hardcode84 in #268
  • Bump the github-actions group with 3 updates by @dependabot[bot] in #276
  • Change ROCm7 [docker installation] with TheRock in mi35x CI runner by @sa-faizal in #263
  • Replace target-backends with target-device argument by @panditsa in #221
  • Scalarize packed math by @Hardcode84 in #274
  • [Wave] Linearize shared memory accesses by @raikonenfnu in #275
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #281
  • Multibuffer liveness analysis by @Hardcode84 in #250
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #286
  • add round op by @saladpalad in #283
  • Capture locations for Iterate and Conditional by @willghatch in #290
  • Add trace to WaveKernel even when only compile to MLIR by @tyb0807 in #294
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #293
  • [Dist.] Standalone multi-device runtime wrapper by @panditsa in #222
  • Store full trace after all compilation passes in WaveKernel by @tyb0807 in #298
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #299
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #303
  • Bump the github-actions group with 2 updates by @dependabot[bot] in #300
  • Add a dedicated pass to partition gathers/scatters by @Hardcode84 in #259
  • add debug env var to set default location level by @willghatch in #289
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #305
  • Integrate Water sources from a separate repository by @ftynse in #288
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #307
  • [CI] Add GitHub Actions workflow: self-hosted RDNA4 by @Megan0704-1 in #295
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #309
  • Bump actions/setup-python from 5.6.0 to 6.0.0 in the github-actions group by @dependabot[bot] in #310
  • implement broadcasting for SelectOp by @willghatch in #251
  • add locations to placeholder and output nodes based on kernel location by @willghatch in #291
  • Fix version mismatch after iree-bump by @Megan0704-1 in #319
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #321
  • Fixes group_size_m in the reordered gemm. by @xintin in #316
  • [debugging] propagate locations by @willghatch in #297
  • [debugging] add location propagation to replace_all_uses_with by @willghatch in #296
  • Remove migration notice from README by @harsh-nod in #317
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #324
  • add location_check_pass by @willghatch in #292
  • [debugging] fix minor nit in test case by @willghatch in #323
  • Add support for hardware transpose operation by @ashay in #285
  • [CI] Update installation of user space libraries for RDNA4-CI by @Megan0704-1 in #325
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #326
  • Added C-style modulo/remainder operator by @nirmie in #322
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #328
  • Use dynamic values for AtomicOps by @panditsa in #269
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #331
  • [WMMA] v_wmma_f32_16x16x16_f16 type support by @Megan0704-1 in #306
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #334
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #336
  • Initial gfx1250 support by @Hardcode84 in #335
  • wave dialect import by @ftynse in #313
  • Distributed GEMM by @panditsa in #302
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #339
  • Bump the github-actions group with 2 updates by @dependabot[bot] in #327
  • Bump IREE requirement pins to their latest versions. by @iree-pr-automator[bot] in #343
  • Fix gather_to_shared for vanilla and bshd attention kernels by @ashay in #332
  • Wave dialect emission smoketest by @martin-luecke in #273
  • [debugging] emit debug attrs for kernel by @willghatch in #340
  • Add option to generate bounds check by @Hardcode84 in #344
  • More code cleanup by @Hardcode84 in #282
  • Fix test to generate full compiled graph w/o allocate by @tyb0807 in #349
  • Fix mlir_converter lit test by @tyb0807 in #353
  • Run external MLIR module through Wave by @tyb0807 in #308
  • Remove double pickling of node fields by @martin-luecke in #357
  • implement TopkOp by @willghatch in #277
  • Fix mma verifier by @martin-luecke in #360
  • parameterize topk e2e test for rdna4 by @willghatch in #361

New Contributors

Full Changelog: v3.7.0...v3.8.0