forked from Karylab-cklius/vllm
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
def test_exact_family_arch_precedes_generic_family_fallback(tmp_path: Path):
|
|
repo_root = Path(__file__).parents[1]
|
|
script = tmp_path / "test_cuda_archs.cmake"
|
|
script.write_text(
|
|
f"""
|
|
cmake_minimum_required(VERSION 3.26)
|
|
include("{repo_root / "cmake" / "utils.cmake"}")
|
|
cuda_archs_loose_intersection(
|
|
actual "10.0f;10.7f" "10.7")
|
|
if(NOT "${{actual}}" STREQUAL "10.7f")
|
|
message(FATAL_ERROR "Expected 10.7f, got '${{actual}}'")
|
|
endif()
|
|
"""
|
|
)
|
|
|
|
subprocess.run(["cmake", "-P", script], check=True)
|
|
|
|
|
|
def test_extract_archs_prefers_sass_target_over_corrupted_virtual_arch(
|
|
tmp_path: Path,
|
|
):
|
|
"""torch's autodetection can emit a bogus arch=compute_* half (e.g.
|
|
capability 12.1 corrupted to arch=compute_20,code=sm_121); the SASS
|
|
target must win, while PTX-only entries keep the virtual arch."""
|
|
repo_root = Path(__file__).parents[1]
|
|
script = tmp_path / "test_extract_archs.cmake"
|
|
script.write_text(
|
|
f"""
|
|
cmake_minimum_required(VERSION 3.26)
|
|
include("{repo_root / "cmake" / "utils.cmake"}")
|
|
extract_unique_cuda_archs_ascending(actual
|
|
"-gencode arch=compute_20,code=sm_121;\
|
|
-gencode arch=compute_80,code=sm_80;\
|
|
-gencode arch=compute_80,code=compute_80")
|
|
if(NOT "${{actual}}" STREQUAL "8.0;12.1")
|
|
message(FATAL_ERROR "Expected '8.0;12.1', got '${{actual}}'")
|
|
endif()
|
|
"""
|
|
)
|
|
|
|
subprocess.run(["cmake", "-P", script], check=True)
|