[AMD] ci: register 8 attention-backend unit tests to run on AMD CI (#27817)

This commit is contained in:
Michael
2026-06-12 20:52:45 -07:00
committed by GitHub
parent 1800d7caa6
commit 053e153183
8 changed files with 46 additions and 8 deletions
@@ -9,7 +9,7 @@ from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.dense_attention import (
DenseAttentionCase,
make_dense_cases,
@@ -18,6 +18,7 @@ from sglang.test.kits.attention_unittest.attention_methods.dense_attention impor
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -5,11 +5,12 @@ from pathlib import Path
import torch
from sglang.srt.model_executor.forward_batch_info import ForwardMode
from sglang.srt.utils import is_hip
from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.dense_attention import (
DenseAttentionCase,
make_dense_cases,
@@ -36,6 +37,7 @@ from sglang.test.kits.attention_unittest.runner_modes.split_op_runner import (
register_cuda_ci(est_time=25, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=25, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=25, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -366,6 +368,11 @@ class TestTritonDenseAttentionBackendCorrectness(CustomTestCase):
with self.subTest(case=case.name, backend=case.backend):
run_dense_cuda_graph_decode_case(self, case)
@unittest.skipIf(
is_hip(),
"split-op extend runner exercises the piecewise-CUDA-graph path "
"(TcPiecewiseForwardContext.num_tokens), which is not wired on ROCm.",
)
def test_runner_mode_split_op_extend_cases(self):
for case, static_num_tokens in self.SPLIT_OP_CASES:
for breakable in (False, True):
@@ -5,11 +5,12 @@ from pathlib import Path
import torch
from sglang.srt.model_executor.forward_batch_info import ForwardMode
from sglang.srt.utils import is_hip
from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.gdn_attention import (
GDNAttentionCase,
make_gdn_cases,
@@ -21,6 +22,7 @@ from sglang.test.kits.attention_unittest.runner_modes.split_op_runner import (
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -78,6 +80,11 @@ class TestTorchNativeGDNBackendCorrectness(CustomTestCase):
with self.subTest(case=case.name, layout=layout):
run_gdn_attention_case(self, case, loc_layout=layout)
@unittest.skipIf(
is_hip(),
"split-op extend runner exercises the piecewise-CUDA-graph path "
"(TcPiecewiseForwardContext.num_tokens), which is not wired on ROCm.",
)
def test_runner_mode_split_op_extend_cases(self):
for case, static_num_tokens in self.SPLIT_OP_CASES:
for breakable in (False, True):
@@ -11,11 +11,12 @@ from sglang.srt.layers.attention.hybrid_linear_attn_backend import (
MambaAttnBackendBase,
)
from sglang.srt.model_executor.forward_batch_info import ForwardMode
from sglang.srt.utils import is_hip
from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.gdn_attention import (
GDNAttentionCase,
make_gdn_cases,
@@ -37,6 +38,7 @@ from sglang.test.kits.attention_unittest.runner_modes.split_op_runner import (
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -261,6 +263,11 @@ class TestTritonGDNBackendCorrectness(CustomTestCase):
with self.subTest(case=case.name, backend=case.backend):
run_gdn_cuda_graph_decode_case(self, case)
@unittest.skipIf(
is_hip(),
"split-op extend runner exercises the piecewise-CUDA-graph path "
"(TcPiecewiseForwardContext.num_tokens), which is not wired on ROCm.",
)
def test_runner_mode_split_op_extend_cases(self):
for case, static_num_tokens in self.SPLIT_OP_CASES:
for breakable in (False, True):
@@ -5,11 +5,12 @@ from pathlib import Path
import torch
from sglang.srt.model_executor.forward_batch_info import ForwardMode
from sglang.srt.utils import is_hip
from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.kda_attention import (
KDAAttentionCase,
make_kda_cases,
@@ -31,6 +32,7 @@ from sglang.test.kits.attention_unittest.runner_modes.split_op_runner import (
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -276,6 +278,11 @@ class TestTritonKDABackendCorrectness(CustomTestCase):
):
run_kda_eagle_draft_extend_case(self, case, spec_kind=spec_kind)
@unittest.skipIf(
is_hip(),
"split-op extend runner exercises the piecewise-CUDA-graph path "
"(TcPiecewiseForwardContext.num_tokens), which is not wired on ROCm.",
)
def test_runner_mode_split_op_extend_cases(self):
for case, static_num_tokens in self.SPLIT_OP_CASES:
for breakable in (False, True):
@@ -9,7 +9,7 @@ from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.lightning_attention import (
LightningAttentionCase,
make_lightning_cases,
@@ -28,6 +28,7 @@ from sglang.test.kits.attention_unittest.runner_modes.speculative_target_verify_
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -9,7 +9,7 @@ from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.dense_attention import (
DenseAttentionCase,
make_swa_no_prefix_input_config_cases,
@@ -19,6 +19,7 @@ from sglang.test.kits.attention_unittest.attention_methods.dense_attention impor
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -5,11 +5,12 @@ from pathlib import Path
import torch
from sglang.srt.model_executor.forward_batch_info import ForwardMode
from sglang.srt.utils import is_hip
from sglang.test.test_utils import CustomTestCase
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.attention_unittest.attention_methods.dense_attention import (
DenseAttentionCase,
make_swa_no_prefix_input_config_cases,
@@ -29,6 +30,7 @@ from sglang.test.kits.attention_unittest.runner_modes.split_op_runner import (
register_cuda_ci(est_time=20, stage="base-b", runner_config="4-gpu-b200")
register_cuda_ci(est_time=20, stage="base-b", runner_config="1-gpu-large")
register_amd_ci(est_time=20, suite="stage-b-test-1-gpu-large-amd")
@unittest.skipIf(not torch.cuda.is_available(), "CUDA is required")
@@ -297,6 +299,11 @@ class TestTritonSWAAttentionBackendCorrectness(CustomTestCase):
with self.subTest(case=case.name, backend=case.backend):
run_dense_cuda_graph_decode_case(self, case)
@unittest.skipIf(
is_hip(),
"split-op extend runner exercises the piecewise-CUDA-graph path "
"(TcPiecewiseForwardContext.num_tokens), which is not wired on ROCm.",
)
def test_runner_mode_split_op_extend_cases(self):
for case, static_num_tokens in self.SPLIT_OP_CASES:
for breakable in (False, True):