cleanup and refactoring
This commit is contained in:
parent
2302158928
commit
76f6bf62a4
1285 changed files with 757994 additions and 8 deletions
114
raytracer/nvpro_core/cmake/find/FindNVML.cmake
Normal file
114
raytracer/nvpro_core/cmake/find/FindNVML.cmake
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
# Copyright (c) 2020-2023, NVIDIA CORPORATION. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
|
||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Try to find NVML.
|
||||
# Once done this will define
|
||||
#
|
||||
# NVML_FOUND - whether all of the components of NVML were found
|
||||
# NVML_INCLUDE_DIRS - same as the CUDA include dir
|
||||
# NVML_LIBRARIES - the linker library for NVML
|
||||
#
|
||||
# The NVML headers and linker library are distributed as part of the CUDA SDK.
|
||||
# We use the variables set by finding CUDA
|
||||
# (see https://cmake.org/cmake/help/latest/module/FindCUDAToolkit.html and
|
||||
# https://cmake.org/cmake/help/v3.3/module/FindCUDA.html)
|
||||
# However, the shared library (DLL on Windows) should be found at runtime.
|
||||
#
|
||||
# Please note that on Windows, NVML is only available for 64-bit systems.
|
||||
set(NVML_FOUND OFF)
|
||||
|
||||
# FindCUDAToolkit is the new module to use here, but it's only available in
|
||||
# CMake 3.17+.
|
||||
# FindCUDA is available until 3.27. So we switch between the two
|
||||
# depending on the CMake version:
|
||||
if(${CMAKE_VERSION} VERSION_LESS 3.17.0)
|
||||
find_package(CUDA)
|
||||
if(WIN32) # Windows
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_ARCH "x64")
|
||||
else()
|
||||
message(FATAL_ERROR "FindNVML.cmake was called with a 32-bit platform on \
|
||||
Windows, but NVML and nvpro_core are not available for 32-bit systems on \
|
||||
Windows. Did you mean to use a 64-bit platform?")
|
||||
endif()
|
||||
endif()
|
||||
set(_CUDA_LIB_DIR ${CUDA_TOOLKIT_ROOT_DIR}/lib/${_ARCH})
|
||||
set(_CUDA_INCLUDE_DIRS ${CUDA_TOOLKIT_ROOT_DIR}/include)
|
||||
else() # CMake >= 3.17.0
|
||||
find_package(CUDAToolkit)
|
||||
set(_CUDA_LIB_DIR ${CUDAToolkit_LIBRARY_DIR})
|
||||
set(_CUDA_INCLUDE_DIRS ${CUDAToolkit_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
# Finding CUDA doesn't guarantee that NVML was installed with CUDA, since
|
||||
# one can turn that off during installation. Search for NVML in a number of
|
||||
# locations:
|
||||
|
||||
find_library(NVML_LIBRARIES NAMES nvml nvidia-ml PATHS ${_CUDA_LIB_DIR})
|
||||
|
||||
if(NOT NVML_LIBRARIES)
|
||||
if(WIN32)
|
||||
message(WARNING "CMake couldn't locate the NVML library, so compilation \
|
||||
will likely fail. You may need to install the CUDA toolkit.")
|
||||
else()
|
||||
message(WARNING "CMake couldn't locate the nvidia-ml library, so \
|
||||
compilation will likely fail. You may need to install NVML using your OS' \
|
||||
package manager; for instance, by running `sudo apt install libnvidia-ml-dev`.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_path(NVML_INCLUDE_DIRS nvml.h
|
||||
${NVML_LOCATION}
|
||||
$ENV{NVML_LOCATION}
|
||||
${_CUDA_INCLUDE_DIRS}
|
||||
# if no CUDA, let's try to find nvml locally in our third_party supplement.
|
||||
# FindNVML.cmake is located in nvpro_core/cmake/find.
|
||||
${CMAKE_CURRENT_LIST_DIR}/../../third_party/binaries/nvml
|
||||
)
|
||||
|
||||
if(NOT NVML_INCLUDE_DIRS)
|
||||
message(WARNING "
|
||||
NVML headers not found. To explicitly locate it, set NVML_LOCATION,
|
||||
which should be a folder containing nvml.h."
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NVML_LIBRARIES AND NVML_INCLUDE_DIRS)
|
||||
set(NVML_FOUND ON)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args(NVML DEFAULT_MSG
|
||||
NVML_INCLUDE_DIRS
|
||||
NVML_LIBRARIES
|
||||
)
|
||||
|
||||
mark_as_advanced(
|
||||
NVML_INCLUDE_DIRS
|
||||
NVML_LIBRARIES
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue