1
# template taken from https://cmake.org/cmake/help/v3.14/manual/cmake-developer.7.html
3
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
4
# file Copyright.txt or https://cmake.org/licensing for details.
6
#[=======================================================================[.rst:
10
Finds the cuDNN library.
15
find_cuda_helper_libs from FindCUDA.cmake
16
i.e. CUDA module should be found using FindCUDA.cmake before attempting to find cuDNN
21
This will define the following variables:
24
``CUDNN_INCLUDE_DIRS`` location of cudnn.h
25
``CUDNN_LIBRARIES`` location of cudnn library
30
The following cache variables will be set if cuDNN was found. They may also be set on failure.
36
``CUDNN_VERSION_MAJOR`` INTERNAL
37
``CUDNN_VERSION_MINOR`` INTERNAL
38
``CUDNN_VERSION_PATCH`` INTERNAL
40
#]=======================================================================]
44
find_cuda_helper_libs(cudnn)
45
set(CUDNN_LIBRARY ${CUDA_cudnn_LIBRARY} CACHE FILEPATH "location of the cuDNN library")
46
unset(CUDA_cudnn_LIBRARY CACHE)
51
find_path(CUDNN_INCLUDE_DIR
53
PATHS ${CUDA_TOOLKIT_INCLUDE}
54
DOC "location of cudnn.h"
58
if(NOT CUDNN_INCLUDE_DIR)
59
find_path(CUDNN_INCLUDE_DIR
61
DOC "location of cudnn.h"
66
# extract version from the include
68
if(EXISTS "${CUDNN_INCLUDE_DIR}/cudnn_version.h")
69
file(READ "${CUDNN_INCLUDE_DIR}/cudnn_version.h" CUDNN_H_CONTENTS)
71
file(READ "${CUDNN_INCLUDE_DIR}/cudnn.h" CUDNN_H_CONTENTS)
74
string(REGEX MATCH "define CUDNN_MAJOR ([0-9]+)" _ "${CUDNN_H_CONTENTS}")
75
set(CUDNN_VERSION_MAJOR ${CMAKE_MATCH_1} CACHE INTERNAL "")
76
string(REGEX MATCH "define CUDNN_MINOR ([0-9]+)" _ "${CUDNN_H_CONTENTS}")
77
set(CUDNN_VERSION_MINOR ${CMAKE_MATCH_1} CACHE INTERNAL "")
78
string(REGEX MATCH "define CUDNN_PATCHLEVEL ([0-9]+)" _ "${CUDNN_H_CONTENTS}")
79
set(CUDNN_VERSION_PATCH ${CMAKE_MATCH_1} CACHE INTERNAL "")
81
set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}")
83
unset(CUDNN_H_CONTENTS)
86
include(FindPackageHandleStandardArgs)
87
find_package_handle_standard_args(CUDNN
92
VERSION_VAR CUDNN_VERSION
96
set(CUDNN_LIBRARIES ${CUDNN_LIBRARY})
97
set(CUDNN_INCLUDE_DIRS ${CUDNN_INCLUDE_DIR})