mirror of
https://github.com/NVIDIA/nvbench.git
synced 2026-03-14 20:27:24 +00:00
* Enable extra NVBench features in windows build. These were delayed as they required changes to the devcontainers. * Revamp nvml.dll logic.
44 lines
1.8 KiB
CMake
44 lines
1.8 KiB
CMake
# Since this file is installed, we need to make sure that the CUDAToolkit has
|
|
# been found by consumers:
|
|
if (NOT TARGET CUDA::toolkit)
|
|
find_package(CUDAToolkit REQUIRED)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
# The CUDA:: targets currently don't provide dll locations through the
|
|
# `IMPORTED_LOCATION` property, nor are they marked as `SHARED` libraries
|
|
# (they're currently `UNKNOWN`). This prevents the `nvbench_setup_dep_dlls`
|
|
# CMake function from copying the dlls to the build / install directories.
|
|
# This is discussed in https://gitlab.kitware.com/cmake/cmake/-/issues/22845
|
|
# and the other CMake issues it links to.
|
|
#
|
|
# We create a nvbench-specific target that configures the nvml interface as
|
|
# described here:
|
|
# https://gitlab.kitware.com/cmake/cmake/-/issues/22845#note_1077538
|
|
#
|
|
# Use find_file instead of find_library, which would search for a .lib file.
|
|
# This is also nice because find_file searches recursively (find_library
|
|
# does not) and some versions of CTK nest nvml.dll several directories deep
|
|
# under C:\Windows\System32.
|
|
find_file(NVBench_NVML_DLL nvml.dll
|
|
DOC "The full path to nvml.dll. Usually somewhere under C:/Windows/System32."
|
|
PATHS "C:/Windows/System32"
|
|
)
|
|
mark_as_advanced(NVBench_NVML_DLL)
|
|
endif()
|
|
|
|
if (NVBench_NVML_DLL)
|
|
add_library(nvbench::nvml SHARED IMPORTED)
|
|
target_link_libraries(nvbench::nvml INTERFACE CUDA::toolkit)
|
|
set_target_properties(nvbench::nvml PROPERTIES
|
|
IMPORTED_LOCATION "${NVBench_NVML_DLL}"
|
|
IMPORTED_IMPLIB "${CUDA_nvml_LIBRARY}"
|
|
)
|
|
elseif(TARGET CUDA::nvml)
|
|
add_library(nvbench::nvml ALIAS CUDA::nvml)
|
|
else()
|
|
message(FATAL_ERROR "Could not find nvml.dll or CUDA::nvml target. "
|
|
"Set -DNVBench_ENABLE_NVML=OFF to disable NVML support "
|
|
"or set -DNVBench_NVML_DLL to the full path to nvml.dll on Windows.")
|
|
endif()
|