Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 81 additions & 35 deletions projects/hipblaslt/tensilelite/test_categories.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -45,41 +41,91 @@ 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}"

# standard/comprehensive/full mix two suites needing different pytest invocations
# — subtile GPU unit (`-m gpu`) vs common GEMM (`-m <arch>` + 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 run (rocisa + TensileLite unit, incl. GPU)"
test_paths:
- "rocisa_tests"
- "Tensile/Tests/unit"
pytest_args:
- "--snapshot-warn-unused"
description: "Nightly comprehensive (subtile GPU unit + common GEMM)"
labels:
- "comprehensive"
- "nightly"
- "extended"
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}"

full:
description: "Complete suite (rocisa + TensileLite unit, incl. GPU)"
test_paths:
- "rocisa_tests"
- "Tensile/Tests/unit"
pytest_args:
- "--snapshot-warn-unused"
description: "Complete suite (subtile GPU unit + common GEMM)"
labels:
- "full"
- "all"
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: "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
Expand Down
Loading