@@ -8,25 +8,29 @@ find_path(
88 CUDNN_INCLUDE_DIR cudnn.h
99 HINTS $ENV{CUDNN_PATH} ${CUDNN_PATH} ${CUDAToolkit_INCLUDE_DIRS}
1010 PATH_SUFFIXES include
11+ REQUIRED
1112)
1213
13- function (find_cudnn_library NAME )
14- string (TOUPPER ${NAME} UPPERCASE_NAME)
14+ file (READ "${CUDNN_INCLUDE_DIR} /cudnn_version.h" cudnn_version_header )
15+ string (REGEX MATCH "#define CUDNN_MAJOR [1-9]+" macrodef "${cudnn_version_header} " )
16+ string (REGEX MATCH "[1-9]+" CUDNN_MAJOR_VERSION "${macrodef} " )
1517
18+ function (find_cudnn_library NAME )
1619 find_library (
17- ${UPPERCASE_NAME } _LIBRARY ${NAME}
20+ ${NAME } _LIBRARY ${NAME} "lib ${NAME} .so. ${CUDNN_MAJOR_VERSION} "
1821 HINTS $ENV{CUDNN_PATH} ${CUDNN_PATH} ${CUDAToolkit_LIBRARY_DIR}
1922 PATH_SUFFIXES lib64 lib/x64 lib
23+ REQUIRED
2024 )
21-
22- if (${UPPERCASE_NAME } _LIBRARY)
25+
26+ if (${NAME } _LIBRARY)
2327 add_library (CUDNN::${NAME} UNKNOWN IMPORTED )
2428 set_target_properties (
2529 CUDNN::${NAME} PROPERTIES
2630 INTERFACE_INCLUDE_DIRECTORIES ${CUDNN_INCLUDE_DIR}
27- IMPORTED_LOCATION ${${UPPERCASE_NAME }_LIBRARY}
31+ IMPORTED_LOCATION ${${NAME }_LIBRARY}
2832 )
29- message (STATUS "${NAME} found at ${${UPPERCASE_NAME } _LIBRARY}." )
33+ message (STATUS "${NAME} found at ${${NAME } _LIBRARY}." )
3034 else ()
3135 message (STATUS "${NAME} not found." )
3236 endif ()
@@ -35,24 +39,18 @@ function(find_cudnn_library NAME)
3539endfunction ()
3640
3741find_cudnn_library (cudnn )
38- find_cudnn_library (cudnn_adv_infer )
39- find_cudnn_library (cudnn_adv_train )
40- find_cudnn_library (cudnn_cnn_infer )
41- find_cudnn_library (cudnn_cnn_train )
42- find_cudnn_library (cudnn_ops_infer )
43- find_cudnn_library (cudnn_ops_train )
4442
4543include (FindPackageHandleStandardArgs )
4644find_package_handle_standard_args (
47- CUDNN REQUIRED_VARS
48- CUDNN_INCLUDE_DIR CUDNN_LIBRARY
45+ LIBRARY REQUIRED_VARS
46+ CUDNN_INCLUDE_DIR cudnn_LIBRARY
4947)
5048
51- if (CUDNN_INCLUDE_DIR AND CUDNN_LIBRARY )
49+ if (CUDNN_INCLUDE_DIR AND cudnn_LIBRARY )
5250
53- message (STATUS "cuDNN: ${CUDNN_LIBRARY } " )
51+ message (STATUS "cuDNN: ${cudnn_LIBRARY } " )
5452 message (STATUS "cuDNN: ${CUDNN_INCLUDE_DIR} " )
55-
53+
5654 set (CUDNN_FOUND ON CACHE INTERNAL "cuDNN Library Found" )
5755
5856else ()
@@ -71,11 +69,45 @@ target_include_directories(
7169target_link_libraries (
7270 CUDNN::cudnn_all
7371 INTERFACE
74- CUDNN::cudnn_adv_train
75- CUDNN::cudnn_ops_train
76- CUDNN::cudnn_cnn_train
77- CUDNN::cudnn_adv_infer
78- CUDNN::cudnn_cnn_infer
79- CUDNN::cudnn_ops_infer
80- CUDNN::cudnn
72+ CUDNN::cudnn
8173)
74+
75+ if (CUDNN_MAJOR_VERSION EQUAL 8)
76+ find_cudnn_library (cudnn_adv_infer )
77+ find_cudnn_library (cudnn_adv_train )
78+ find_cudnn_library (cudnn_cnn_infer )
79+ find_cudnn_library (cudnn_cnn_train )
80+ find_cudnn_library (cudnn_ops_infer )
81+ find_cudnn_library (cudnn_ops_train )
82+
83+ target_link_libraries (
84+ CUDNN::cudnn_all
85+ INTERFACE
86+ CUDNN::cudnn_adv_train
87+ CUDNN::cudnn_ops_train
88+ CUDNN::cudnn_cnn_train
89+ CUDNN::cudnn_adv_infer
90+ CUDNN::cudnn_cnn_infer
91+ CUDNN::cudnn_ops_infer
92+ )
93+ elseif (CUDNN_MAJOR_VERSION EQUAL 9)
94+ find_cudnn_library (cudnn_cnn )
95+ find_cudnn_library (cudnn_adv )
96+ find_cudnn_library (cudnn_graph )
97+ find_cudnn_library (cudnn_ops )
98+ find_cudnn_library (cudnn_engines_runtime_compiled )
99+ find_cudnn_library (cudnn_engines_precompiled )
100+ find_cudnn_library (cudnn_heuristic )
101+
102+ target_link_libraries (
103+ CUDNN::cudnn_all
104+ INTERFACE
105+ CUDNN::cudnn_adv
106+ CUDNN::cudnn_ops
107+ CUDNN::cudnn_cnn
108+ CUDNN::cudnn_graph
109+ CUDNN::cudnn_engines_runtime_compiled
110+ CUDNN::cudnn_engines_precompiled
111+ CUDNN::cudnn_heuristic
112+ )
113+ endif ()
0 commit comments