Files
TheRock/rocm-libraries/dnn-providers/integration-tests/CMakeLists.txt
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

236 lines
8.5 KiB
CMake

# Copyright © Advanced Micro Devices, Inc., or its affiliates.
# SPDX-License-Identifier: MIT
cmake_minimum_required(VERSION 3.25.2)
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/ClangToolChain.cmake"
CACHE STRING "Toolchain file"
)
project(hipdnn-integration-tests LANGUAGES CXX)
if(NOT DEFINED ROCM_LIBRARIES_ROOT)
set(ROCM_LIBRARIES_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../..")
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE
CACHE BOOL "Add paths to linker search and installed rpath"
)
if(NOT DEFINED ROCM_PATH)
set(ROCM_PATH "/opt/rocm")
endif()
# Only set if not already specified by user
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND ROCM_PATH)
set(CMAKE_INSTALL_PREFIX "${ROCM_PATH}" CACHE PATH "Install path prefix" FORCE)
message(STATUS "CMAKE_INSTALL_PREFIX set using ROCM_PATH: ${CMAKE_INSTALL_PREFIX}")
elseif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND ROCM_CMAKE_PATH)
set(CMAKE_INSTALL_PREFIX "${ROCM_CMAKE_PATH}" CACHE PATH "Install path prefix" FORCE)
message(STATUS "CMAKE_INSTALL_PREFIX set using ROCM_CMAKE_PATH: ${CMAKE_INSTALL_PREFIX}")
else()
message(STATUS "CMAKE_INSTALL_PREFIX set to default: ${CMAKE_INSTALL_PREFIX}")
endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake
${CMAKE_CURRENT_SOURCE_DIR}/../cmake
)
option(ENABLE_CLANG_FORMAT "Enable Clang-Format checks" ON)
if(NOT ENABLE_CLANG_FORMAT)
message(WARNING "Clang-Format checks are disabled. CI requires passing clang-format checks.")
endif()
if(WIN32)
option(ENABLE_CLANG_TIDY "Enable Clang-Tidy checks" OFF)
if(ENABLE_CLANG_TIDY)
message(WARNING "Clang-Tidy enabled on Windows - this significantly increases build time.")
endif()
else()
option(ENABLE_CLANG_TIDY "Enable Clang-Tidy checks" ON)
if(NOT ENABLE_CLANG_TIDY)
message(WARNING "Clang-Tidy checks are disabled. CI requires passing clang-tidy checks.")
endif()
endif()
option(BUILD_ADDRESS_SANITIZER "Build with Address Sanitizer enabled" OFF)
include(GNUInstallDirs)
include(ClangTidy)
include(ClangCheck)
include(Sanitizers)
include(Tests)
include(HipdnnIntegrationTestHelpers)
list(
PREPEND
INTEGRATION_TESTS_WARNING_COMPILE_OPTIONS
-Werror # Treat all warnings as errors
-Wall # Enable most common warnings
-Wextra # Enable additional warnings not covered by -Wall
-Wpedantic # Enforce strict ISO C++ compliance
-Wshadow # Warn about variable shadowing
-Wnon-virtual-dtor # Warn if a class with virtual functions has a non-virtual destructor
-Wold-style-cast # Warn about C-style casts
-Wcast-align # Warn about potential performance issues with misaligned casts
-Woverloaded-virtual # Warn if a base class function is hidden by a derived class function with
# the same name
-Wconversion # Warn about implicit type conversions that may alter a value
-Wsign-conversion # Warn about implicit conversions between signed and unsigned types
-Wnull-dereference # Warn about dereferencing null pointers
-Wdouble-promotion # Warn when a float is implicitly promoted to a double
-Wformat=2 # Enable stricter format string checks
-Winit-self # Warn about variables initialized with itself
-Wunreachable-code # Warn about unreachable code
-Wswitch-default # Warn if a switch statement does not have a default case
)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
list(APPEND INTEGRATION_TESTS_WARNING_COMPILE_OPTIONS
-Wno-error=unused-command-line-argument # Clang-specific: disable error for unused CLI args
)
endif()
find_package(hip REQUIRED)
if(NOT TARGET hipdnn_test_sdk)
find_package(hipdnn_test_sdk REQUIRED)
endif()
if(NOT TARGET hipdnn_plugin_sdk)
find_package(hipdnn_plugin_sdk REQUIRED)
endif()
find_package(Threads REQUIRED)
include(Dependencies)
fetch_gtest_dependency()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# Copy integration test bundles into the build tree so tests can find them at
# <exe_dir>/../lib/integration_test_bundles/
# NOTE: file(COPY) runs at configure time only. If you add or modify files
# under integration_test_bundles/, re-run cmake to pick up the changes.
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/integration_test_bundles/"
DESTINATION "${CMAKE_BINARY_DIR}/lib/integration_test_bundles")
# Install integration test bundles so installed tests can find them at
# <exe_dir>/../lib/integration_test_bundles/
install(DIRECTORY "${CMAKE_BINARY_DIR}/lib/integration_test_bundles"
DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
set(INTEGRATION_TESTS_EXE hipdnn_integration_tests)
add_executable(${INTEGRATION_TESTS_EXE}
src/main.cpp
src/harness/bundle/IntegrationBundleVerificationHarness.cpp
src/harness/input-init/SynthesizeInputs.cpp
)
add_subdirectory(src/integration-tests)
target_include_directories(${INTEGRATION_TESTS_EXE} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_include_directories(${INTEGRATION_TESTS_EXE} SYSTEM PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/third-party/argparse
${CMAKE_CURRENT_SOURCE_DIR}/src/third-party/tomlplusplus
)
target_link_libraries(${INTEGRATION_TESTS_EXE}
PRIVATE
hip::host
hipdnn_gpu_ref
hipdnn_test_sdk
hipdnn_plugin_sdk
GTest::gtest
Threads::Threads
$<$<PLATFORM_ID:Windows>:shlwapi>
)
target_compile_options(${INTEGRATION_TESTS_EXE} PRIVATE ${INTEGRATION_TESTS_WARNING_COMPILE_OPTIONS})
clang_tidy_check(${INTEGRATION_TESTS_EXE})
add_subdirectory(gpu-ref)
add_subdirectory(tests)
# Finalize test targets with prefix to avoid collisions in superbuild mode
# Keep this after all build folders have been added so they have a chance to register their tests
# using add_*_test_target()
finalize_test_targets("${PROJECT_NAME}")
# Optional YAML-driven CTest categorization. Guarded so standalone / sparse
# checkouts without shared/ctest still build (falls back to unlabeled install).
set(_HIPDNN_IT_TEST_CATEGORIES_YAML "")
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test_categories.yaml"
AND EXISTS "${ROCM_LIBRARIES_ROOT}/shared/ctest/TestCategories.cmake")
include("${ROCM_LIBRARIES_ROOT}/shared/ctest/TestCategories.cmake")
set(_HIPDNN_IT_TEST_CATEGORIES_YAML "${CMAKE_CURRENT_SOURCE_DIR}/test_categories.yaml")
endif()
# For standalone builds we need to install the ctest files
if(NOT ROCM_LIBS_SUPERBUILD)
install_provider_ctest_files("hipdnn_integration_tests_ctest"
TEST_CATEGORIES_YAML "${_HIPDNN_IT_TEST_CATEGORIES_YAML}"
)
endif()
include(CMakePackageConfigHelpers)
set(HIPDNN_INTEGRATION_TESTS_VERSION "0.1.0")
set_target_properties(
${INTEGRATION_TESTS_EXE}
PROPERTIES
INSTALL_RPATH
"\$ORIGIN/../${CMAKE_INSTALL_LIBDIR};\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}/hipdnn_plugins/engines"
INSTALL_RPATH_USE_LINK_PATH TRUE
BUILD_RPATH_USE_ORIGIN TRUE
)
# Install the executables with an export set
install(TARGETS ${INTEGRATION_TESTS_EXE}
EXPORT ${INTEGRATION_TESTS_EXE}_targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
# --- Package export infrastructure ---
# Generate Config.cmake from template
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/${INTEGRATION_TESTS_EXE}Config.cmake.in"
"${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}/${INTEGRATION_TESTS_EXE}Config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}
)
# Generate ConfigVersion.cmake
write_basic_package_version_file(
"${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}/${INTEGRATION_TESTS_EXE}ConfigVersion.cmake"
VERSION ${HIPDNN_INTEGRATION_TESTS_VERSION}
COMPATIBILITY AnyNewerVersion
)
# Build-tree export so superbuild consumers can find the package without installing
export(TARGETS ${INTEGRATION_TESTS_EXE}
FILE "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}/${INTEGRATION_TESTS_EXE}Targets.cmake"
)
# Install-tree exports
install(EXPORT ${INTEGRATION_TESTS_EXE}_targets
FILE ${INTEGRATION_TESTS_EXE}Targets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}
)
install(FILES
"${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}/${INTEGRATION_TESTS_EXE}Config.cmake"
"${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}/${INTEGRATION_TESTS_EXE}ConfigVersion.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/HipdnnIntegrationTestHelpers.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${INTEGRATION_TESTS_EXE}
)
add_clang_tidy_custom_target()