Skip to content

Commit df9c29e

Browse files
cyanguwaptrendx
authored andcommitted
Update FindCUDNN.cmake for cuDNN 9 (#640)
* update cudnn cmake for v9 Signed-off-by: Charlene Yang <[email protected]> * add back license information Signed-off-by: Charlene Yang <[email protected]> --------- Signed-off-by: Charlene Yang <[email protected]>
1 parent f15b707 commit df9c29e

File tree

1 file changed

+57
-25
lines changed

1 file changed

+57
-25
lines changed

transformer_engine/cmake/FindCUDNN.cmake

Lines changed: 57 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
3539
endfunction()
3640

3741
find_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

4543
include (FindPackageHandleStandardArgs)
4644
find_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

5856
else()
@@ -71,11 +69,45 @@ target_include_directories(
7169
target_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

Comments
 (0)