123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # template taken from https://cmake.org/cmake/help/v3.14/manual/cmake-developer.7.html
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file Copyright.txt or https://cmake.org/licensing for details.
- #[=======================================================================[.rst:
- FindCUDNN
- ---------
- Finds the cuDNN library.
- Requires:
- ^^^^^^^^^
- find_cuda_helper_libs from FindCUDA.cmake
- i.e. CUDA module should be found using FindCUDA.cmake before attempting to find cuDNN
- Result Variables
- ^^^^^^^^^^^^^^^^
- This will define the following variables:
- ``CUDNN_FOUND``
- ``CUDNN_INCLUDE_DIRS`` location of cudnn.h
- ``CUDNN_LIBRARIES`` location of cudnn library
- Cache Variables
- ^^^^^^^^^^^^^^^
- The following cache variables will be set if cuDNN was found. They may also be set on failure.
- ``CUDNN_LIBRARY``
- ``CUDNN_INCLUDE_DIR``
- ``CUDNN_VERSION``
- ``CUDNN_VERSION_MAJOR`` INTERNAL
- ``CUDNN_VERSION_MINOR`` INTERNAL
- ``CUDNN_VERSION_PATCH`` INTERNAL
- #]=======================================================================]
- # find the library
- if(CUDA_FOUND)
- find_cuda_helper_libs(cudnn)
- set(CUDNN_LIBRARY ${CUDA_cudnn_LIBRARY} CACHE FILEPATH "location of the cuDNN library")
- unset(CUDA_cudnn_LIBRARY CACHE)
- endif()
- # find the include
- if(CUDNN_LIBRARY)
- find_path(CUDNN_INCLUDE_DIR
- cudnn.h
- PATHS ${CUDA_TOOLKIT_INCLUDE}
- DOC "location of cudnn.h"
- NO_DEFAULT_PATH
- )
- if(NOT CUDNN_INCLUDE_DIR)
- find_path(CUDNN_INCLUDE_DIR
- cudnn.h
- DOC "location of cudnn.h"
- )
- endif()
- endif()
- # extract version from the include
- if(CUDNN_INCLUDE_DIR)
- if(EXISTS "${CUDNN_INCLUDE_DIR}/cudnn_version.h")
- file(READ "${CUDNN_INCLUDE_DIR}/cudnn_version.h" CUDNN_H_CONTENTS)
- else()
- file(READ "${CUDNN_INCLUDE_DIR}/cudnn.h" CUDNN_H_CONTENTS)
- endif()
- string(REGEX MATCH "define CUDNN_MAJOR ([0-9]+)" _ "${CUDNN_H_CONTENTS}")
- set(CUDNN_VERSION_MAJOR ${CMAKE_MATCH_1} CACHE INTERNAL "")
- string(REGEX MATCH "define CUDNN_MINOR ([0-9]+)" _ "${CUDNN_H_CONTENTS}")
- set(CUDNN_VERSION_MINOR ${CMAKE_MATCH_1} CACHE INTERNAL "")
- string(REGEX MATCH "define CUDNN_PATCHLEVEL ([0-9]+)" _ "${CUDNN_H_CONTENTS}")
- set(CUDNN_VERSION_PATCH ${CMAKE_MATCH_1} CACHE INTERNAL "")
- set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}")
- unset(CUDNN_H_CONTENTS)
- endif()
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(CUDNN
- FOUND_VAR CUDNN_FOUND
- REQUIRED_VARS
- CUDNN_LIBRARY
- CUDNN_INCLUDE_DIR
- VERSION_VAR CUDNN_VERSION
- )
- if(CUDNN_FOUND)
- set(CUDNN_LIBRARIES ${CUDNN_LIBRARY})
- set(CUDNN_INCLUDE_DIRS ${CUDNN_INCLUDE_DIR})
- endif()
- mark_as_advanced(
- CUDNN_LIBRARY
- CUDNN_INCLUDE_DIR
- CUDNN_VERSION
- )
|