57 lines
2.8 KiB
CMake
57 lines
2.8 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
project(d4r_windows_diagnostics LANGUAGES CXX)
|
|
if(NOT WIN32 OR NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
message(FATAL_ERROR "These diagnostics require native Windows x64")
|
|
endif()
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(D4R_HIP_ROOT "$ENV{HIP_PATH}" CACHE PATH "One stable HIP SDK or TheRock installation")
|
|
if(NOT D4R_HIP_ROOT AND EXISTS "C:/Program Files/AMD/ROCm/7.2")
|
|
set(D4R_HIP_ROOT "C:/Program Files/AMD/ROCm/7.2")
|
|
endif()
|
|
if(NOT EXISTS "${D4R_HIP_ROOT}/include/hip/hip_runtime_api.h")
|
|
message(FATAL_ERROR "Set D4R_HIP_ROOT to a Windows HIP SDK (headers and bin/clang++.exe required)")
|
|
endif()
|
|
find_program(D4R_HIP_CLANG NAMES clang++.exe PATHS "${D4R_HIP_ROOT}/bin" NO_DEFAULT_PATH REQUIRED)
|
|
set(probe_object "${CMAKE_CURRENT_BINARY_DIR}/probe_gfx1201.hsaco")
|
|
add_custom_command(OUTPUT "${probe_object}"
|
|
COMMAND "${D4R_HIP_CLANG}" -x hip --offload-arch=gfx1201
|
|
--offload-device-only --no-gpu-bundle-output -mno-wavefrontsize64
|
|
-nogpuinc -nogpulib -O2 "${CMAKE_CURRENT_SOURCE_DIR}/tools/windows/probe_kernel.hip"
|
|
-o "${probe_object}"
|
|
DEPENDS tools/windows/probe_kernel.hip VERBATIM)
|
|
add_custom_target(d4r_probe_code_object ALL DEPENDS "${probe_object}")
|
|
foreach(probe hip_gfx1201_probe cuda_driver_probe)
|
|
add_executable(d4r_${probe} tools/windows/${probe}.cpp)
|
|
target_compile_definitions(d4r_${probe} PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX __HIP_PLATFORM_AMD__)
|
|
target_include_directories(d4r_${probe} PRIVATE "${D4R_HIP_ROOT}/include")
|
|
target_link_libraries(d4r_${probe} PRIVATE version dbghelp)
|
|
if(MINGW)
|
|
target_link_options(d4r_${probe} PRIVATE -static)
|
|
endif()
|
|
if(MSVC)
|
|
target_compile_options(d4r_${probe} PRIVATE /W4 /EHsc)
|
|
set_property(TARGET d4r_${probe} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
else()
|
|
target_compile_options(d4r_${probe} PRIVATE -Wall -Wextra)
|
|
endif()
|
|
install(TARGETS d4r_${probe} RUNTIME DESTINATION bin)
|
|
endforeach()
|
|
add_dependencies(d4r_hip_gfx1201_probe d4r_probe_code_object)
|
|
install(FILES "${probe_object}" DESTINATION bin)
|
|
install(FILES scripts/windows/test-windows-rdna4.ps1 DESTINATION .)
|
|
install(FILES docs/windows-rdna4-port.md DESTINATION docs)
|
|
include(CTest)
|
|
add_test(NAME hip_gfx1201 COMMAND d4r_hip_gfx1201_probe
|
|
--hip-root "${D4R_HIP_ROOT}" --module "${probe_object}")
|
|
set_tests_properties(hip_gfx1201 PROPERTIES TIMEOUT 90 LABELS "hardware;gfx1201")
|
|
set(D4R_ZLUDA_ROOT "" CACHE PATH "Local Windows ZLUDA directory (nvcuda.dll)")
|
|
if(EXISTS "${D4R_ZLUDA_ROOT}/nvcuda.dll")
|
|
foreach(context primary created)
|
|
add_test(NAME cuda_${context} COMMAND d4r_cuda_driver_probe
|
|
--hip-root "${D4R_HIP_ROOT}" --cuda-dll "${D4R_ZLUDA_ROOT}/nvcuda.dll"
|
|
--context ${context} --iterations 32)
|
|
set_tests_properties(cuda_${context} PROPERTIES TIMEOUT 180 LABELS "hardware;zluda")
|
|
endforeach()
|
|
endif()
|