Skip to content

[Triton/Gluon] [CI] [DO NOT MERGE] ci: triton release_tmp2 + 3.8.0, with GDN block-ptr fix (#4950) - #5079

Closed
yuyzhang512 wants to merge 5 commits into
ROCm:mainfrom
yuyzhang512:release-test/triton-tmp2-gdn-blockptr
Closed

yuyzhang512 wants to merge 5 commits into
ROCm:mainfrom
yuyzhang512:release-test/triton-tmp2-gdn-blockptr

Conversation

@yuyzhang512

Copy link
Copy Markdown
Contributor

Motivation

Validate the coming Triton 3.8.0 release for AITER end to end: point CI at the temporary release_tmp2 wheel channel, bump the pinned Triton to 3.8.0, and include the gated-delta-rule fix required to run on 3.8.0 (where tl.make_block_ptr was removed). This branch is for CI validation only and should not be merged.

Technical Details

  • Cherry-picks the gated-delta-rule block-pointer fix from [Triton/Gluon] [gfx950] gated_delta_rule: drop removed tl.make_block_ptr #4950 (commit 39c1154f5): replaces the removed tl.make_block_ptr block loads/stores with explicit pointer-arithmetic helpers (_bp_ld1d/_bp_st1d/_bp_ld2d/_bp_st2d) plus bounds masks across chunk_o.py, fused_cumsum_kkt.py, fused_solve_tril_recompute.py, cumsum.py, and solve_tril.py under aiter/ops/triton/_triton_kernels/gated_delta_rule/.
  • .github/scripts/install_triton.sh and .github/scripts/download_triton_wheel.sh: switch the Triton wheel index channel from release to release_tmp2, so the index URL becomes https://pypi.amd.com/triton/release_tmp2/rocm-<ver>/simple/ (both the default and the rocm-core-derived paths), and bump the pinned Triton wheel from 3.7.0 to 3.8.0.

Test Plan

  • Confirm CI resolves the Triton 3.8.0 and triton-kernels wheels from the release_tmp2 index.
  • Confirm the gated-delta-rule Triton tests pass on 3.8.0 with the block-pointer fix in place.

Test Result

Submission Checklist

yuyzhang512 and others added 2 commits August 28, 2026 11:09
… Triton 3.8

Triton 3.8 removed block pointers. tl.make_block_ptr still exists as a symbol
but raises at trace time:

  NotImplementedError: Block pointers have been removed in favor of the
  tensor descriptor API

so every gated_delta_rule kernel using it fails to compile. This is an API
removal, not a GPU issue - it reproduces identically on gfx950 and gfx942, and
is what makes op_tests/test_gdn_prepare.py fail on both MI35X and MI300X.

Convert all 128 block accesses to plain pointer arithmetic with explicit bounds
masks, reproducing the previous boundary_check=(0, 1) semantics:

  prefill/chunk_o.py                     42 sites (6 kernels)
  prefill/fused_solve_tril_recompute.py  41
  utils/solve_tril.py                    35
  prefill/fused_cumsum_kkt.py            10
  utils/cumsum.py                         2

The 2-D helper in chunk_o.py takes both strides so the transposed (K, T) views
with stride (1, H * K) convert without a special case. Stores keep their
fp_downcast_rounding="rtne" behaviour.

Validation on gfx950 with triton 3.8.0+amd.rocm7.1.0.gitf6a045ff:
  op_tests/test_gdn_prepare.py   28 rows, max |err| = 0.0, all shapes / all
                                 three hidden backends (triton/flydsl/hip)
….8.0

Switch the Triton wheel index channel from release to release_tmp2 in
install_triton.sh and download_triton_wheel.sh so CI resolves wheels from
the temporary channel: https://pypi.amd.com/triton/release_tmp2/rocm-<ver>/simple/
Also bump the pinned Triton wheel from 3.7.0 to 3.8.0.

Co-Authored-By: Claude <noreply@anthropic.com>
@yuyzhang512
yuyzhang512 requested a review from a team August 28, 2026 11:11
@github-actions

Copy link
Copy Markdown
Contributor

🏷️ CI Guide

Runs automatically on every PR:

  • ✅ Pre-checks (submodule verification, code formatting)
  • ✅ Aiter op tests (gfx942 + gfx950)
  • ✅ Triton tests on MI35X (only when aiter/ops/triton/** or related paths are changed)

Extended tests (opt-in via labels):

Label Tests
ci:gfx1250-ffm-triton Run the five-shard gfx1250 FFM Triton test suite
ci:triton-300x Run an additional Triton test job on MI300X in PRs; main branch always runs both MI35X and MI300X
multigpu Aiter multi-GPU tests on the 8-GPU runner
ci:sglang SGLang integration tests: DeepSeek-R1-MXFP4 accuracy, Qwen 3.5 accuracy
ci:atom ATOM benchmark: DeepSeek-R1-0528, GPT-OSS-120B
ci:atom_full ATOM accuracy suite for PR and main models from ATOM models_accuracy.json
ci:vllm vLLM benchmark: GPT-OSS-120B, DeepSeek-R1-0528, Kimi-K2.5
ci:all All standard extended tests (excludes ci:atom_full)

Only add ci:atom_full for FlyDSL or Triton upgrades.
Add labels via the sidebar or gh pr edit 5079 --add-label <label>

PR title tags:
Component tags ([Triton/Gluon], [HIP], [CK], [ASM], ...) are added to the PR title automatically from the changed files and re-synced on every push — change-type tags like [fix]/[Perf] and op tags like [MLA] are left untouched. Add the no-auto-title label to opt this PR out of title tagging.

@github-actions github-actions Bot changed the title [DO NOT MERGE] ci: triton release_tmp2 + 3.8.0, with GDN block-ptr fix (#4950) [Triton/Gluon] [CI] [DO NOT MERGE] ci: triton release_tmp2 + 3.8.0, with GDN block-ptr fix (#4950) Aug 28, 2026
…riton tests

Two additions on top of the release_tmp2 gdn block-pointer work:

1. Convert the remaining tl.make_block_ptr in l2norm.py (4 sites) and
   wy_representation.py (11) to plain pointer arithmetic for Triton 3.8. Both
   are on live e2e inference paths (l2norm_fwd on the qk-l2norm path,
   recompute_w_u_fwd on the non-fused chunk path) that test_gdn_prepare.py does
   not exercise, so a real GDN forward otherwise raises NotImplementedError at
   trace time. Verified: chunk_gated_delta_rule(use_qk_l2norm_in_kernel=True)
   runs to finite output on gfx950.

2. Deselect three triton tests that fail an accuracy check on the coming
   release (from ROCm#5083):
   - MI35X:  test_mha_varlen_with_pe[True-0.17-96-64-8-1-64-128] (gfx950
     scheduling regression from reverting amdgpu-use-amdgpu-trackers)
   - MI300X: test_contexted_kv_attention in test_pa_prefill.py and
     test_chunked_pa_prefill.py (accuracy fail, can hang the GPU)
…elease_tmp2)

Reverting amdgpu-use-amdgpu-trackers (#11285) in release_tmp2 fixed the MHA-PE
backward path: test_mha_backward_with_pe now passes 72/0 on gfx950. Remove its
deselect. The forward test_mha_varlen_with_pe[True-0.17-96-64-8-1-64-128]
deselect stays, since that case still fails on release_tmp2.
@yuyzhang512 yuyzhang512 closed this Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant