mirror of
https://github.com/NVIDIA/nvbench.git
synced 2026-03-14 20:27:24 +00:00
Locking clocks is currently only implemented for Volta+ devices. Example usage: my_bench -d [0,1,3] --persistence-mode 1 --lock-gpu-clocks base See the cli_help.md docs for more info.
38 lines
1.6 KiB
CMake
38 lines
1.6 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 REQUIRED
|
|
DOC "The full path to nvml.dll. Usually somewhere under C:/Windows/System32."
|
|
PATHS "C:/Windows/System32"
|
|
)
|
|
mark_as_advanced(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}"
|
|
)
|
|
else()
|
|
# Linux is much easier...
|
|
add_library(nvbench::nvml ALIAS CUDA::nvml)
|
|
endif()
|