Skip to content

[Triton] Declare triton>=3.6.0 dependency #2695

Open
micmelesse wants to merge 2 commits intomainfrom
micmelesse/triton-min-version
Open

[Triton] Declare triton>=3.6.0 dependency #2695
micmelesse wants to merge 2 commits intomainfrom
micmelesse/triton-min-version

Conversation

@micmelesse
Copy link
Copy Markdown
Contributor

Motivation

This PR declares aiter's dependency on triton in setup.py. This is standard practice for python libraries. We declare a minimum version of 3.6.0. We remove a lot of ad-hoc code that was branching on triton versions.

Technical Details

Test Plan

Test Result

Submission Checklist

@micmelesse micmelesse marked this pull request as ready for review April 10, 2026 23:42
@micmelesse micmelesse requested review from a team, brunomazzottiamd and Copilot April 10, 2026 23:42
@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 (only when aiter/ops/triton/** or related paths are changed)

Extended tests (opt-in via labels):

Label Tests
ci:triton-355 Run Triton tests on MI355 in addition to MI325
ci:sglang SGLang integration tests
ci:atom ATOM benchmark (DeepSeek-R1 + GPT-OSS)
ci:vllm vLLM benchmark
ci:all All of the above

Add labels via the sidebar or gh pr edit 2695 --add-label <label>

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR formalizes Triton as an explicit runtime dependency (minimum 3.6.0) and simplifies the Triton/Gluon codepaths by removing legacy version-branching and compatibility shims across kernels and tests.

Changes:

  • Add triton>=3.6.0 to install_requires in setup.py.
  • Remove Triton version-detection helpers and conditional branches targeting older Triton versions across Gluon/Triton kernels.
  • Update Triton op tests to drop Triton 3.5-specific logic/skips and disable AOT usage where incompatible.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
setup.py Declares Triton (>=3.6.0) as a required dependency for non-Windows installs.
op_tests/triton_tests/gemm/basic/test_gemm_afp4wfp4.py Removes Triton-3.5 AOT gating; forces use_aot=False for preshuffle path.
op_tests/triton_tests/gemm/basic/test_gemm_a8w8.py Removes Triton-3.5-specific skip for FP8 split-K lowering.
aiter/ops/triton/gluon/triton_version.py Deletes version parsing/constants module now made obsolete by the min-version requirement.
aiter/ops/triton/gluon/pa_decode_gluon.py Removes version-dependent MFMA/logits layout branching; standardizes on >=3.6 layout/shape.
aiter/ops/triton/gluon/gemm_afp4wfp4.py Removes version-dependent MFMA instruction shape selection.
aiter/ops/triton/gluon/gemm_a8w8.py Removes version-dependent MFMA shape/width branching; assumes >=3.6 MFMA shapes.
aiter/ops/triton/attention/pa_mqa_logits.py Drops legacy Triton version branching and unconditionally uses Gluon ASTSource path consistent with min-version.
aiter/ops/triton/_triton_kernels/gated_delta_rule/gated_delta_rule_utils.py Removes outdated “recommended Triton>=3.2” warning logic.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread aiter/ops/triton/attention/pa_mqa_logits.py Outdated
@micmelesse micmelesse force-pushed the micmelesse/triton-min-version branch from 6ec6bef to 59bf1e8 Compare April 11, 2026 00:03
Copy link
Copy Markdown
Contributor

@brunomazzottiamd brunomazzottiamd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@micmelesse, it LGTM! I've left a AOT cleanup suggestion from other PR, apply it at your own judgement.

Comment thread op_tests/triton_tests/gemm/basic/test_gemm_afp4wfp4.py Outdated
Comment thread aiter/ops/triton/attention/pa_mqa_logits.py Outdated
@micmelesse micmelesse force-pushed the micmelesse/triton-min-version branch from ff9d6a3 to 213bb95 Compare April 15, 2026 15:18
@brunomazzottiamd
Copy link
Copy Markdown
Contributor

Test failure report:

Triton Tests (MI35X) / Shard 0 - It's a know issue that's under investigation, it isn't a blocker for merging.

op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-32-512-512-1]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-32-512-512-4]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-32-1024-1024-1]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-32-1024-1024-4]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-32-2048-2048-1]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-32-2048-2048-4]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-64-512-512-1]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-64-512-512-4]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-64-1024-1024-1]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-64-1024-1024-4]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-64-2048-2048-1]
op_tests/triton_tests/attention/test_mha.py::test_mha_backward[True-False-0.0-True-128-8-64-2048-2048-4]

Triton Tests (MI325) / Shard 5 and Triton Tests (MI35X) / Shard 5 - It's a recently discovered issue caused by rocm/pytorch:latest update to 2.10.0+rocm7.2.2.git40d237bf. It's a test issue, related to torch.topk API, will be addressed soon and it isn't a blocker for merging.

op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-16-128-128]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-16-128-1024]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-16-128-2048]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-16-128-4096]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-16-128-8192]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-128-128-128]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-128-128-1024]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-128-128-2048]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-128-128-4096]
op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py::test_routing_sigmoid_top1[dtype0-128-128-8192]

Triton Tests (MI35X) / Shard 7 - Fixed by #2723, it isn't a blocker for merging.

op_tests/triton_tests/fusions/test_fused_mul_add.py::test_mul_add[dtype2-False-b_type_is_scalar1-a_type_is_scalar0-shape3]
op_tests/triton_tests/fusions/test_fused_mul_add.py::test_mul_add[dtype2-False-b_type_is_scalar1-a_type_is_scalar0-shape5]

@micmelesse, can you please check what's going on with Flash Attention Integration / Flash Attention - Triton / MI35X (1 GPU) job? If we figure this out then we're good to merge.

FYI: @azaidy

@brunomazzottiamd
Copy link
Copy Markdown
Contributor

op_tests/triton_tests/moe/test_moe_routing_sigmoid_top1_fused.py is fixed by #2750.

@micmelesse
Copy link
Copy Markdown
Contributor Author

@brunomazzottiamd I will rebase and fix the Flash Attention test failure.

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.

3 participants