Repository navigation
PR Digest Iteration 53
Period: 2026-03-15 to 2026-03-30 (Iteration 53) | Total PRs: 52 (from Xe2/Xe3/Xe3P) | Lines changed: +23,140 / -15,404
The team completed a major infrastructure shift from legacy block pointers to the new tensor descriptor API, removing block pointer usage from both TTIR and TTGIR pipeline stages. The TensorDescToBlockPointer pass was progressively extended to handle prefetch, column-major, multi-encoding, and rank > 2 tensor scenarios, enabling descriptor-based loads across the full compilation pipeline. The Intel-specific AxisInfo fork was retired in favor of the upstream addVisitors callback, eliminating over 1,600 lines of forked code. Five upstream synchronizations were completed with a 97.9–97.95% test pass rate.
Key accomplishments:
- Completed the transition from legacy block pointers to tensor descriptors across the full TTIR and TTGIR pipeline
- Extended descriptor-based memory access to support rank > 2 tensors, prefetch operations, and transpose fusion
- Retired the Intel AxisInfo fork by adopting the upstream addVisitors callback, significantly reducing maintenance burden
- Improved RemoveLayoutConversions with iterative backward rematerialization for better optimization coverage
- Shipped new triton_utils capabilities including wheel download and enhanced result comparison
The dominant workstream: migrating from legacy block pointers to the tensor descriptor API and extending descriptor-based lowering to cover more shapes and operations.
- #6508 Fix descriptor load to respect ttig.one_matrix_per_load attribute — Fixes DescriptorLoadOpToBlockIOConversion to read the one_matrix_per_load attribute instead of hardcoding false. (+30/-1, @whitneywhtsang)
- #6506 Remove test_block_load references after ae4b45b — Cleans up stale test_block_load references from skip lists after the test was removed. (+11/-19, @whitneywhtsang)
- #6500 Remove block pointer usage in TTGIR — Eliminates block pointer paths from TTGIR passes except RemoveLayoutConversion, completing TTGIR descriptor migration. (+461/-4033, @whitneywhtsang)
- #6490 Fix rank-reducing tensor descriptor load/store lowering — Fixes lowering when descriptor loads produce tensors with reduced rank vs. the descriptor shape. (+236/-43, @whitneywhtsang)
- #6473 Add descriptor-store layout conversion removal parity with block pointer store — Extends RemoveLayoutConversions to handle descriptor stores the same way as block pointer stores. (+82/-15, @whitneywhtsang)
- #6464 Enhance TensorDescToBlockPointer for MakeTensorDesc loop values — Handles tensor descriptors defined as loop-carried values in the TensorDescToBlockPointer pass. (+105/-44, @whitneywhtsang)
- #6463 Relax FuseTransWithDescriptorLoad to support arbitrary single-use chains — Allows transpose fusion through arbitrary single-use op chains, not just immediate consumers. (+74/-60, @whitneywhtsang)
- #6433 Fix transpose load using wrong base width and base height — Corrects base width/height calculation for transpose 2D block loads. (+98/-3, @app/copilot-swe-agent)
- #6432 Migrate remaining files from old block pointer API to new TD API — Converts remaining tutorial and test kernels from block pointers to tensor descriptors. (+123/-747, @Egor-Krivov)
- #6430 Refactor DescriptorLoadOpToBlockIOConversion permute load logic — Cleans up the permutation and transpose handling in the descriptor load conversion. (+188/-19, @app/copilot-swe-agent)
- #6423 Support rank > 2 tensors in matmul loop pipelining — Enables the software pipeliner to handle descriptor loads with rank > 2 tensors. (+55/-23, @etiotto)
- #6421 Support rank > 2 descriptor loads in transpose fusion — Extends OptimizeDotOperands transpose fusion to work with rank > 2 descriptor loads. (+126/-16, @etiotto)
- #6412 Revert "Refactor MaterializeBlockPointer.cpp" — Reverts the MaterializeBlockPointer refactor that caused regressions. (+278/-121, @whitneywhtsang)
- #6407 Introduce BlockPointerFields and unpackBlockPointer helper — Adds a structured helper to unpack block pointer operations, reducing code duplication. (+82/-149, @etiotto)
- #6404 Extract unpackDescriptor helper for tensor descriptor unpacking — Factors out tensor descriptor unpacking into a reusable helper function. (+64/-68, @etiotto)
- #6399 Handle DescriptorPrefetchOp in TensorDescToBlockPointer — Adds support for translating descriptor prefetch operations in the fallback pass. (+65/-2, @whitneywhtsang)
- #6395 Extend 2D block prefetch lowering to support rank > 2 tensors — Generalizes block prefetch lowering to handle batch dimensions in rank > 2 tensors. (+270/-108, @etiotto)
- #6392 Replace block_io string literals with BlockIOMode enum — Replaces scattered string comparisons with a type-safe enum for block I/O modes. (+59/-25, @etiotto)
- #6390 Read block_io attribute in DescriptorStoreOp lowering — Enables DescriptorStoreOp lowering to use the block_io attribute for 2D block store selection. (+35/-28, @etiotto)
- #6384 Refactor MaterializeBlockPointer.cpp — Restructures MaterializeBlockPointer for clarity; later reverted by #6412. (+121/-278, @chengjunlu)
- #6381 Handle tensor descriptor column_major attribute — Adds column_major support in TensorDescToBlockPointer for transposed access patterns. (+127/-46, @whitneywhtsang)
- #6378 Handle tensor descriptor with multi encodings — Supports tensors used with multiple encodings in TensorDescToBlockPointer. (+196/-70, @whitneywhtsang)
- #6365 Fix getBlockIOTileSize for non-contiguous rowDim transpose case — Fixes tile size calculation when the row dimension differs from the memory-contiguous dimension. (+38/-0, @chengjunlu)
- #6362 Remove block pointer usage in TTIR — Eliminates block pointer handling from TTIR passes, completing the TTIR migration to tensor descriptors. (+44/-809, @whitneywhtsang)
- #6344 Add DescriptorPrefetchOp to software pipelines — Integrates descriptor prefetch into the software pipeliner for asynchronous data movement. (+625/-144, @anthonycanino)
- #6331 Move TensorDescToBlockPointer after MaterializeBlockPointer — Repositions the fallback pass to run after materialization for correct ordering. (+320/-8, @whitneywhtsang)
- #6325 Add DescriptorLoadOp to ReduceVariableLiveness pass — Extends the register pressure reduction pass to rematerialize descriptor loads. (+826/-58, @anthonycanino)
- #5757 Mark block io attribute for rank > 2 regular pointer — Enables block I/O attribute marking for rank > 2 tensors accessed via regular pointers. (+246/-58, @chengjunlu)
Improvements to layout optimization, mask removal, stride analysis, and the transition away from forked analysis code.
- #6477 Fix crash on broadcast mask in InvariantMaskValidator — Prevents a crash in RemoveMasks when encountering broadcast operations in mask validation. (+56/-5, @wdziurdz)
- #6455 Make backward remat iteration count configurable, default to 1 — Adds a CLI option to control RemoveLayoutConversions backward rematerialization iterations. (+19/-7, @etiotto)
- #6446 Use tt.contiguity hints in StrideInfo — Leverages contiguity hints from tt.contiguity ops to improve stride analysis precision. (+77/-0, @wdziurdz)
- #6435 Replace recursive isOpSingleUse with iterative nonSliceOnlyValues analysis — Replaces a recursive single-use check with an iterative approach that correctly identifies non-slice-only values. (+112/-111, @etiotto)
- #6380 Add iterative backward rematerialization to RemoveLayoutConversions — Adds multi-iteration backward rematerialization to find more layout conversion removal opportunities. (+75/-49, @etiotto)
- #6371 Replace Intel AxisInfo fork with upstream addVisitors callback — Retires the 1,600-line Intel AxisInfo fork by using the upstream visitor callback mechanism. (+531/-1606, @mieshkiwrk)
- #6369 Raise IntelGPUError in make_zebin instead of RuntimeError — Uses a domain-specific exception for GPU compilation failures. (+72/-9, @anmyachev)
5 upstream merges from OpenAI Triton (commits a357e1a, fa11a7d, 11ee114, a590e14, 443f4fe) — pass rate 97.9–97.95%.
New triton_utils features, CI reporting improvements, FlexAttn enhancements, and documentation.
- #6487 Add download-wheels subcommand to triton_utils — Adds a CLI subcommand to download pre-built Triton wheels for offline installation. (+833/-161, @vlad-penkin)
- #6481 Backward pass for SYCL-TLA FlexAttn provider — Adds backward pass support to the SYCL-TLA attention provider. (+13/-45, @mieshkiwrk)
- #6479 Changed json output for pass_rate command when --suite is specified — Restructures pass_rate JSON output to include per-suite breakdowns. (+171/-16, @gshimansky)
- #6468 Bump SYCL-TLA version 0.7 to 0.8 — Updates the SYCL-TLA dependency to version 0.8. (+6/-6, @mieshkiwrk)
- #6448 Add --prepare-source mode to install-pytorch.sh — Adds a mode to prepare PyTorch source tree without installing, useful for CI caching. (+114/-64, @whitneywhtsang)
- #6443 Enhance triton_utils compare mode v0.5.0 — Improves the result comparison tool with better diff formatting and filtering. (+578/-12, @vlad-penkin)
- #6440 Add backward autotune configs for FlexAttn — Adds autotuning configurations for FlexAttn backward pass kernels. (+12/-7, @whitneywhtsang)
- #6438 Revert "Add compilation time tracking to the CI" — Reverts compilation time tracking that caused CI issues. (+20/-268, @whitneywhtsang)
- #6420 Add grid order section to performance tutorial — Documents grid ordering best practices for Intel GPU kernels, resolving #5699. (+36/-0, @Egor-Krivov)
- #6417 Update vllm pin to the latest — Updates the vLLM dependency pin to the latest version. (+129/-455, @Egor-Krivov)
- #6406 Include peak memory usage in unified-attention reference — Adds peak memory tracking to the attention benchmark's is_enough_memory check. (+33/-6, @quinnlp)
- #6397 Speed up test_matmul.py — Reduces test_matmul execution time by optimizing test parameters. (+12/-3, @chengjunlu)
- #6363 Revert use of event-less SYCL APIs — Reverts event-less SYCL API change that caused issues. (+6/-33, @whitneywhtsang)
- #6347 Add compilation time tracking to the CI — Adds per-pass compilation time measurement to CI runs; later reverted by #6438. (+268/-20, @Egor-Krivov)