From 91c645660c6281c250f75b9c0382450a2572a1b9 Mon Sep 17 00:00:00 2001 From: archana-ramalingam Date: Thu, 3 Sep 2026 06:40:08 +0000 Subject: [PATCH 1/4] test(tensilelite): run common GEMM tests in the standard tier (AIHPBLAS-4510) --- .../tensilelite/test_categories.yaml | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/projects/hipblaslt/tensilelite/test_categories.yaml b/projects/hipblaslt/tensilelite/test_categories.yaml index 837966aecab2..9b7748f26921 100644 --- a/projects/hipblaslt/tensilelite/test_categories.yaml +++ b/projects/hipblaslt/tensilelite/test_categories.yaml @@ -44,19 +44,40 @@ test_categories: - "pre-commit" - "smoke" + # The two suites need different pytest invocations — unit excludes the + # `gpu` marker; common selects `-m ` and passes prebuilt-client args — which + # one `-m` expression cannot express. So `standard` is a list of sub-runs: + # pytest_runner.py runs each independently and aggregates (run-all, not fail-fast), + # writing one JUnit per sub-run. `{AMDGPU_TARGETS}` is substituted at runtime with + # the concrete gfx target (from AMDGPU_TARGETS env, falling back to AMDGPU_FAMILIES). standard: - description: "Pre-checkin validation (rocisa + TensileLite unit, no GPU)" - test_paths: - - "rocisa_tests" - - "Tensile/Tests/unit" - exclude_markers: - - "gpu" - pytest_args: - - "--snapshot-warn-unused" + description: "Pre-checkin validation (rocisa + unit host-only + common GEMM on GPU)" labels: - "standard" - "pr" - "precheckin" + runs: + - name: "host" + description: "rocisa + TensileLite unit, no GPU" + test_paths: + - "rocisa_tests" + - "Tensile/Tests/unit" + exclude_markers: + - "gpu" + pytest_args: + - "--snapshot-warn-unused" + - name: "common" + description: "Common GEMM tests on GPU via the prebuilt client" + test_paths: + - "Tensile/Tests/common" + pytest_markers: + - "{AMDGPU_TARGETS}" + # GEMM tests build/run independent kernels; spread across xdist workers. + parallel_workers: 16 + pytest_args: + - "--prebuilt-client={ROCM_PATH}/libexec/hipblaslt/tensilelite/tensilelite-client" + - "--global-parameters=LibraryFormat='msgpack'" + - "--tensile-options=--cxx-compiler,{ROCM_PATH}/bin/amdclang++,--gpu-targets,{AMDGPU_TARGETS}" comprehensive: description: "Nightly comprehensive run (rocisa + TensileLite unit, incl. GPU)" From 0b582257e1b60fe8d16d34e5170f4296315b91b2 Mon Sep 17 00:00:00 2001 From: archana-ramalingam Date: Thu, 10 Sep 2026 01:45:57 +0000 Subject: [PATCH 2/4] test(tensilelite): move common GEMM to comprehensive/full tiers; standard host-only per test_filtering --- .../tensilelite/test_categories.yaml | 73 +++++++++++-------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/projects/hipblaslt/tensilelite/test_categories.yaml b/projects/hipblaslt/tensilelite/test_categories.yaml index 9b7748f26921..e3d3058c5a91 100644 --- a/projects/hipblaslt/tensilelite/test_categories.yaml +++ b/projects/hipblaslt/tensilelite/test_categories.yaml @@ -44,26 +44,38 @@ test_categories: - "pre-commit" - "smoke" - # The two suites need different pytest invocations — unit excludes the - # `gpu` marker; common selects `-m ` and passes prebuilt-client args — which - # one `-m` expression cannot express. So `standard` is a list of sub-runs: - # pytest_runner.py runs each independently and aggregates (run-all, not fail-fast), - # writing one JUnit per sub-run. `{AMDGPU_TARGETS}` is substituted at runtime with - # the concrete gfx target (from AMDGPU_TARGETS env, falling back to AMDGPU_FAMILIES). standard: - description: "Pre-checkin validation (rocisa + unit host-only + common GEMM on GPU)" + description: "Pre-checkin validation (rocisa + TensileLite unit, host-only)" + test_paths: + - "rocisa_tests" + - "Tensile/Tests/unit" + exclude_markers: + - "gpu" + pytest_args: + - "--snapshot-warn-unused" labels: - "standard" - "pr" - "precheckin" + + # comprehensive/full mix two suites needing different pytest invocations — unit + # (incl. GPU) vs common GEMM (`-m ` + prebuilt-client) — which one `-m` + # expression can't express. So they use `runs:` sub-runs: pytest_runner.py runs + # each independently and aggregates (run-all, not fail-fast), one JUnit per + # sub-run. `{AMDGPU_TARGETS}` is substituted at runtime with the concrete gfx + # target (from AMDGPU_TARGETS env, falling back to AMDGPU_FAMILIES). + comprehensive: + description: "Nightly comprehensive (rocisa + unit incl. GPU, + common GEMM)" + labels: + - "comprehensive" + - "nightly" + - "extended" runs: - - name: "host" - description: "rocisa + TensileLite unit, no GPU" + - name: "unit" + description: "rocisa + TensileLite unit, incl. GPU" test_paths: - "rocisa_tests" - "Tensile/Tests/unit" - exclude_markers: - - "gpu" pytest_args: - "--snapshot-warn-unused" - name: "common" @@ -72,35 +84,36 @@ test_categories: - "Tensile/Tests/common" pytest_markers: - "{AMDGPU_TARGETS}" - # GEMM tests build/run independent kernels; spread across xdist workers. parallel_workers: 16 pytest_args: - "--prebuilt-client={ROCM_PATH}/libexec/hipblaslt/tensilelite/tensilelite-client" - "--global-parameters=LibraryFormat='msgpack'" - "--tensile-options=--cxx-compiler,{ROCM_PATH}/bin/amdclang++,--gpu-targets,{AMDGPU_TARGETS}" - comprehensive: - description: "Nightly comprehensive run (rocisa + TensileLite unit, incl. GPU)" - test_paths: - - "rocisa_tests" - - "Tensile/Tests/unit" - pytest_args: - - "--snapshot-warn-unused" - labels: - - "comprehensive" - - "nightly" - - "extended" - full: - description: "Complete suite (rocisa + TensileLite unit, incl. GPU)" - test_paths: - - "rocisa_tests" - - "Tensile/Tests/unit" - pytest_args: - - "--snapshot-warn-unused" + description: "Complete suite (rocisa + unit incl. GPU, + common GEMM)" labels: - "full" - "all" + runs: + - name: "unit" + description: "rocisa + TensileLite unit, incl. GPU" + test_paths: + - "rocisa_tests" + - "Tensile/Tests/unit" + pytest_args: + - "--snapshot-warn-unused" + - name: "common" + description: "All common GEMM tests on GPU via the prebuilt client" + test_paths: + - "Tensile/Tests/common" + pytest_markers: + - "{AMDGPU_TARGETS}" + parallel_workers: 16 + pytest_args: + - "--prebuilt-client={ROCM_PATH}/libexec/hipblaslt/tensilelite/tensilelite-client" + - "--global-parameters=LibraryFormat='msgpack'" + - "--tensile-options=--cxx-compiler,{ROCM_PATH}/bin/amdclang++,--gpu-targets,{AMDGPU_TARGETS}" # Common-GEMM tests (GPU emulation). These are the only tests that # build/run kernels through the client, so they require the TensileLite-specific From adfcbaecfd3ad2b11d702f77cb8be4c0d1e51515 Mon Sep 17 00:00:00 2001 From: archana-ramalingam Date: Thu, 10 Sep 2026 02:02:22 +0000 Subject: [PATCH 3/4] test(tensilelite): keep standard at develop base; common GEMM only in comprehensive/full --- projects/hipblaslt/tensilelite/test_categories.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/hipblaslt/tensilelite/test_categories.yaml b/projects/hipblaslt/tensilelite/test_categories.yaml index e3d3058c5a91..5bfb4a44a84f 100644 --- a/projects/hipblaslt/tensilelite/test_categories.yaml +++ b/projects/hipblaslt/tensilelite/test_categories.yaml @@ -45,7 +45,7 @@ test_categories: - "smoke" standard: - description: "Pre-checkin validation (rocisa + TensileLite unit, host-only)" + description: "Pre-checkin validation (rocisa + TensileLite unit, no GPU)" test_paths: - "rocisa_tests" - "Tensile/Tests/unit" From c6736f87106e244411fa891f072b8cffc90b64a0 Mon Sep 17 00:00:00 2001 From: archana-ramalingam Date: Fri, 11 Sep 2026 09:49:49 +0000 Subject: [PATCH 4/4] test(tensilelite): route TheRock tiers to GPU-only (subtile + common) --- .../tensilelite/test_categories.yaml | 82 +++++++++++-------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/projects/hipblaslt/tensilelite/test_categories.yaml b/projects/hipblaslt/tensilelite/test_categories.yaml index 5bfb4a44a84f..4aed58fe2a15 100644 --- a/projects/hipblaslt/tensilelite/test_categories.yaml +++ b/projects/hipblaslt/tensilelite/test_categories.yaml @@ -13,29 +13,25 @@ # `exclude_markers` plus GPU-arch `skip-gfxXXXX` markers (registered in # pytest.ini), from the installed share/hipblaslt/tensilelite/ tree. # -# Category mapping is derived from the legacy -# TheRock/build_tools/github_actions/test_executable_scripts/test_tensilelite.py, -# which ran two suites unconditionally: -# - rocisa_tests/ (rocisa pytest modules) -# - Tensile/Tests/unit/ (TensileLite unit tests, incl. GPU subtile tests) -# -# comprehensive/full reproduce that legacy set exactly (GPU tests included). -# quick/standard run the same suites minus GPU-hardware tests (marker `gpu`) so -# the pre-commit / PR tiers stay fast and host-only. +# The host-only suites — rocisa_tests, and the non-GPU part of Tensile/Tests/unit, +# plus the C++ tensilelite/tests gtest — run on CPU-only Component CI lanes +# (component-ci-rocisa.yml + component-ci-tensilelite-{unit,gtest,coverage}.yml), +# NOT here. So every TheRock tier below runs only the GPU-legit work: the subtile +# GPU unit tests (marker `gpu`) plus common GEMM. Subtile tests `skip` until a +# GPU runner for the target arch is available. # # test_paths are relative to the installed component root # (share/hipblaslt/tensilelite/), which is the pytest working directory. test_categories: - # The unit categories run a partial slice of the suite (quick/standard exclude - # GPU tests), so syrupy would flag the un-exercised snapshots as failures. - # `--snapshot-warn-unused` downgrades those to warnings instead of errors. + # These tiers run only the GPU slice of the unit suite, so syrupy would flag the + # un-exercised (host-only) snapshots as failures; `--snapshot-warn-unused` + # downgrades those to warnings instead of errors. quick: - description: "Fast host-only sanity checks (rocisa + TensileLite unit, no GPU)" + description: "Subtile GPU smoke (TensileLite unit, GPU only)" test_paths: - - "rocisa_tests" - "Tensile/Tests/unit" - exclude_markers: + pytest_markers: - "gpu" pytest_args: - "--snapshot-warn-unused" @@ -45,37 +41,52 @@ test_categories: - "smoke" standard: - description: "Pre-checkin validation (rocisa + TensileLite unit, no GPU)" - test_paths: - - "rocisa_tests" - - "Tensile/Tests/unit" - exclude_markers: - - "gpu" - pytest_args: - - "--snapshot-warn-unused" + description: "Pre-checkin (subtile GPU unit + common GEMM)" labels: - "standard" - "pr" - "precheckin" + runs: + - name: "unit" + description: "TensileLite subtile GPU unit tests" + test_paths: + - "Tensile/Tests/unit" + pytest_markers: + - "gpu" + pytest_args: + - "--snapshot-warn-unused" + - name: "common" + description: "Common GEMM tests on GPU via the prebuilt client" + test_paths: + - "Tensile/Tests/common" + pytest_markers: + - "{AMDGPU_TARGETS}" + parallel_workers: 16 + pytest_args: + - "--prebuilt-client={ROCM_PATH}/libexec/hipblaslt/tensilelite/tensilelite-client" + - "--global-parameters=LibraryFormat='msgpack'" + - "--tensile-options=--cxx-compiler,{ROCM_PATH}/bin/amdclang++,--gpu-targets,{AMDGPU_TARGETS}" - # comprehensive/full mix two suites needing different pytest invocations — unit - # (incl. GPU) vs common GEMM (`-m ` + prebuilt-client) — which one `-m` - # expression can't express. So they use `runs:` sub-runs: pytest_runner.py runs - # each independently and aggregates (run-all, not fail-fast), one JUnit per - # sub-run. `{AMDGPU_TARGETS}` is substituted at runtime with the concrete gfx - # target (from AMDGPU_TARGETS env, falling back to AMDGPU_FAMILIES). + # standard/comprehensive/full mix two suites needing different pytest invocations + # — subtile GPU unit (`-m gpu`) vs common GEMM (`-m ` + prebuilt-client) — + # which one `-m` expression can't express. So they use `runs:` sub-runs: + # pytest_runner.py runs each independently and aggregates (run-all, not + # fail-fast), one JUnit per sub-run. `{AMDGPU_TARGETS}` is substituted at runtime + # with the concrete gfx target (from AMDGPU_TARGETS env, falling back to + # AMDGPU_FAMILIES). comprehensive: - description: "Nightly comprehensive (rocisa + unit incl. GPU, + common GEMM)" + description: "Nightly comprehensive (subtile GPU unit + common GEMM)" labels: - "comprehensive" - "nightly" - "extended" runs: - name: "unit" - description: "rocisa + TensileLite unit, incl. GPU" + description: "TensileLite subtile GPU unit tests" test_paths: - - "rocisa_tests" - "Tensile/Tests/unit" + pytest_markers: + - "gpu" pytest_args: - "--snapshot-warn-unused" - name: "common" @@ -91,16 +102,17 @@ test_categories: - "--tensile-options=--cxx-compiler,{ROCM_PATH}/bin/amdclang++,--gpu-targets,{AMDGPU_TARGETS}" full: - description: "Complete suite (rocisa + unit incl. GPU, + common GEMM)" + description: "Complete suite (subtile GPU unit + common GEMM)" labels: - "full" - "all" runs: - name: "unit" - description: "rocisa + TensileLite unit, incl. GPU" + description: "TensileLite subtile GPU unit tests" test_paths: - - "rocisa_tests" - "Tensile/Tests/unit" + pytest_markers: + - "gpu" pytest_args: - "--snapshot-warn-unused" - name: "common"