CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
165 lines
4.7 KiB
Python
165 lines
4.7 KiB
Python
# Copyright Advanced Micro Devices, Inc.
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
import logging
|
|
import os
|
|
import platform
|
|
import shlex
|
|
import subprocess
|
|
from pathlib import Path
|
|
import platform
|
|
|
|
THEROCK_BIN_DIR = os.getenv("THEROCK_BIN_DIR")
|
|
SCRIPT_DIR = Path(__file__).resolve().parent
|
|
THEROCK_DIR = SCRIPT_DIR.parent.parent.parent
|
|
|
|
AMDGPU_FAMILIES = os.getenv("AMDGPU_FAMILIES")
|
|
os_type = platform.system().lower()
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
TEST_TO_IGNORE = {
|
|
# TODO(#2836): Re-enable gfx110X tests once issues are resolved
|
|
"gfx110X-all": {
|
|
"windows": [
|
|
"rocprim.block_discontinuity",
|
|
"rocprim.device_merge_sort",
|
|
"rocprim.device_reduce",
|
|
]
|
|
},
|
|
"gfx1151": {
|
|
"windows": [
|
|
# TODO(#2836): Re-enable test once issues are resolved
|
|
"rocprim.device_merge_sort",
|
|
# TODO(#2836): Re-enable test once issues are resolved
|
|
"rocprim.device_radix_sort",
|
|
]
|
|
},
|
|
}
|
|
|
|
QUICK_TESTS = [
|
|
"*ArgIndexIterator",
|
|
"*BasicTests.GetVersion",
|
|
"*BatchMemcpyTests/*",
|
|
"*BlockScan",
|
|
"*ConfigDispatchTests.*",
|
|
"*ConstantIteratorTests/*",
|
|
"*CountingIteratorTests/*",
|
|
"*DeviceScanTests/*",
|
|
"*DiscardIteratorTests.Less",
|
|
"*ExchangeTests*",
|
|
"*FirstPart",
|
|
"*HipcubBlockRunLengthDecodeTest/*",
|
|
"*Histogram*",
|
|
"*HistogramAtomic*",
|
|
"*HistogramSortInput*",
|
|
"*IntrinsicsTests*",
|
|
"*InvokeResultBinOpTests/*",
|
|
"*InvokeResultUnOpTests/*",
|
|
"*MergeTests/*",
|
|
"*PartitionLargeInputTest/*",
|
|
"*PartitionTests/*",
|
|
"*PredicateIteratorTests.*",
|
|
"*RadixKeyCodecTest.*",
|
|
"*RadixMergeCompareTest/*",
|
|
"*RadixSort/*",
|
|
"*RadixSortIntegral/*",
|
|
"*ReduceByKey*",
|
|
"*ReduceInputArrayTestsFloating",
|
|
"*ReduceInputArrayTestsIntegral/*",
|
|
"*ReducePrecisionTests/*",
|
|
"*ReduceSingleValueTestsFloating",
|
|
"*ReduceSingleValueTestsIntegral",
|
|
"*ReduceTests/*",
|
|
"*ReverseIteratorTests.*",
|
|
"*RunLengthEncode/*",
|
|
"*SecondPart/*",
|
|
"*SegmentedReduce/*",
|
|
"*SelectLargeInputFlaggedTest/*",
|
|
"*SelectTests/*",
|
|
"*ShuffleTestsFloating/*",
|
|
"*ShuffleTestsIntegral*",
|
|
"*SortBitonicTestsIntegral/*",
|
|
"*ThirdPart/*",
|
|
"*ThreadOperationTests/*",
|
|
"*ThreadTests/*",
|
|
"*TransformIteratorTests/*",
|
|
"*TransformTests/*",
|
|
"*VectorizationTests*",
|
|
"*WarpExchangeScatterTest/*",
|
|
"*WarpExchangeTest/*",
|
|
"*WarpLoadTest/*",
|
|
"*WarpReduceTestsFloating/*",
|
|
"*WarpReduceTestsIntegral/*",
|
|
"*WarpScanTests*",
|
|
"*WarpSortShuffleBasedTestsIntegral/*",
|
|
"*ceIntegral/*",
|
|
"*tyIntegral/*",
|
|
"TestHipGraphBasic",
|
|
]
|
|
|
|
# sharding
|
|
shard_index = int(os.getenv("SHARD_INDEX", "1")) - 1
|
|
total_shards = int(os.getenv("TOTAL_SHARDS", "1"))
|
|
|
|
# Generate the resource spec file for ctest
|
|
rocm_base = Path(THEROCK_BIN_DIR).resolve().parent
|
|
ld_paths = [
|
|
rocm_base / "lib",
|
|
]
|
|
ld_paths_str = os.pathsep.join(str(p) for p in ld_paths)
|
|
existing_path = os.environ.get("PATH", "")
|
|
existing_ld_path = os.environ.get("LD_LIBRARY_PATH", "")
|
|
env_vars = os.environ.copy()
|
|
env_vars["PATH"] = (
|
|
f"{THEROCK_BIN_DIR}{os.pathsep}{existing_path}"
|
|
if existing_path
|
|
else THEROCK_BIN_DIR
|
|
)
|
|
env_vars["ROCM_PATH"] = str(rocm_base)
|
|
env_vars["LD_LIBRARY_PATH"] = (
|
|
f"{ld_paths_str}{os.pathsep}{existing_ld_path}"
|
|
if existing_ld_path
|
|
else ld_paths_str
|
|
)
|
|
|
|
is_windows = platform.system() == "Windows"
|
|
exe_name = "generate_resource_spec.exe" if is_windows else "generate_resource_spec"
|
|
exe_dir = rocm_base / "bin" / "rocprim"
|
|
|
|
resource_spec_file = "resources.json"
|
|
res_gen_cmd = [
|
|
str(exe_dir / exe_name),
|
|
str(exe_dir / resource_spec_file),
|
|
]
|
|
logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(res_gen_cmd)}")
|
|
subprocess.run(res_gen_cmd, cwd=THEROCK_DIR, check=True, env=env_vars)
|
|
|
|
# Run ctest with resource spec file
|
|
cmd = [
|
|
"ctest",
|
|
"--test-dir",
|
|
f"{THEROCK_BIN_DIR}/rocprim",
|
|
"--output-on-failure",
|
|
"--resource-spec-file",
|
|
resource_spec_file,
|
|
# shards the tests by running a specific set of tests based on starting test (shard_index) and stride (total_shards)
|
|
"--tests-information",
|
|
f"{shard_index},,{total_shards}",
|
|
]
|
|
|
|
if AMDGPU_FAMILIES in TEST_TO_IGNORE and os_type in TEST_TO_IGNORE[AMDGPU_FAMILIES]:
|
|
ignored_tests = TEST_TO_IGNORE[AMDGPU_FAMILIES][os_type]
|
|
cmd.extend(["--exclude-regex", "|".join(ignored_tests)])
|
|
|
|
# If quick tests are enabled, we run quick tests only.
|
|
# Otherwise, we run the standard test suite.
|
|
environ_vars = os.environ.copy()
|
|
test_type = os.getenv("TEST_TYPE", "standard")
|
|
if test_type == "quick":
|
|
environ_vars["GTEST_FILTER"] = ":".join(QUICK_TESTS)
|
|
|
|
logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(cmd)}")
|
|
|
|
subprocess.run(cmd, cwd=THEROCK_DIR, check=True, env=environ_vars)
|