Files
composable_kernel/rocm_ck/tests/CMakeLists.txt
chris-tsiaousis-hpc dc3c1cffd5 [rocm-libraries] ROCm/rocm-libraries#7891 (commit 4dee41d)
Porting existing FMHA infra from users/shumway/ck/exp-kpack
 to develop (#7891)

Signed-off-by: Chris Tsiaousis <chris.tsiaousis@streamhpc.com>
Co-authored-by: Adam Osewski <Adam.Osewski@amd.com>
2026-06-09 14:00:32 +00:00

97 lines
3.8 KiB
CMake

# Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
# SPDX-License-Identifier: MIT
#
# rocm_ck tests
#
# Test tiers:
# ROCM_CK_SMOKE — Fast host-only tests (< 1s total). No GPU required.
# ROCM_CK_COMPILE_FAIL — Compile-fail tests (~7s). No GPU required.
# ROCM_CK_KERNEL — GPU kernel tests. Require HIP and a GPU.
#
# Usage:
# ninja smoke-rocm-ck # build + run smoke tests
# ninja build-smoke-rocm-ck # build only (no run)
# ninja check-rocm-ck # run all rocm_ck tests
#
# ctest -L ROCM_CK_SMOKE --output-on-failure
# Google Test (via CK's FetchContent wrapper)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/gtest.cmake)
# ---------------------------------------------------------------------------
# Helper function — reusable per-test setup
# ---------------------------------------------------------------------------
function(add_rocm_ck_test test_name)
add_executable(${test_name} ${ARGN})
target_link_libraries(${test_name} PRIVATE rocm_ck GTest::gtest_main GTest::gmock)
target_compile_options(${test_name} PRIVATE
-Wall -Werror
-Wno-global-constructors # GTest registration macros
-Wno-undef # GTest internal headers
-Wno-zero-as-null-pointer-constant # C++20 <=> comparisons to 0
)
endfunction()
# ---------------------------------------------------------------------------
# Smoke tests (fast, host-only, no GPU)
# ---------------------------------------------------------------------------
set(ROCM_CK_UNIT_SOURCES
unit/unit_arch_properties.cpp
unit/unit_args.cpp
unit/unit_datatype.cpp
unit/unit_fixed_string.cpp
unit/unit_fmha_bwd_common.cpp
unit/unit_fmha_bwd_compat.cpp
unit/unit_fmha_bwd_consteval.cpp
unit/unit_fmha_bwd_convert_dq.cpp
unit/unit_fmha_bwd_dqdkdv.cpp
unit/unit_fmha_bwd_ograd_dot_o.cpp
unit/unit_fmha_bwd_validate_args.cpp
unit/unit_gemm_spec.cpp
unit/unit_index_t.cpp
unit/unit_layout.cpp
unit/unit_physical_tensor.cpp
unit/unit_resolve.cpp
unit/unit_schema_compatibility.cpp
unit/unit_signature.cpp
unit/unit_validate.cpp
)
set_source_files_properties(${ROCM_CK_UNIT_SOURCES} PROPERTIES LANGUAGE CXX)
add_rocm_ck_test(rocm_ck_unit ${ROCM_CK_UNIT_SOURCES})
target_include_directories(rocm_ck_unit PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
# When built inside CK (hipcc/amdclang++ is the CXX compiler), the global
# link_libraries(hip::device) injects -x hip via INTERFACE_COMPILE_OPTIONS,
# forcing amdclang++ to run both host and device compilation passes on every
# TU. The device pass defines __HIP_DEVICE_COMPILE__, which triggers the
# #error guards in host-only _api.hpp headers. --offload-host-only suppresses
# the device pass for this pure-host test target.
if(TARGET hip::device)
target_compile_options(rocm_ck_unit PRIVATE --offload-host-only)
endif()
add_test(NAME rocm_ck_unit COMMAND rocm_ck_unit)
set_tests_properties(rocm_ck_unit PROPERTIES LABELS "ROCM_CK_SMOKE")
# ---------------------------------------------------------------------------
# Convenience targets
# ---------------------------------------------------------------------------
add_custom_target(build-smoke-rocm-ck DEPENDS rocm_ck_unit)
add_custom_target(smoke-rocm-ck
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -L "ROCM_CK_SMOKE"
DEPENDS build-smoke-rocm-ck
USES_TERMINAL
COMMENT "Running rocm_ck smoke tests...")
add_custom_target(check-rocm-ck
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -L "ROCM_CK"
DEPENDS build-smoke-rocm-ck
USES_TERMINAL
COMMENT "Running all rocm_ck tests...")
# ---------------------------------------------------------------------------
# Compile-fail tests (expected failures)
# ---------------------------------------------------------------------------
add_subdirectory(compile_fail)