You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

cudnn.cmake 2.9 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. find_package(PkgConfig)
  2. if(${PkgConfig_FOUND})
  3. pkg_check_modules(PC_CUDNN QUIET CUDNN)
  4. endif()
  5. if(NOT "$ENV{LIBRARY_PATH}" STREQUAL "")
  6. string(REPLACE ":" ";" SYSTEM_LIBRARY_PATHS $ENV{LIBRARY_PATH})
  7. endif()
  8. if("${CUDNN_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{CUDNN_ROOT_DIR}" STREQUAL "")
  9. set(CUDNN_ROOT_DIR $ENV{CUDNN_ROOT_DIR})
  10. endif()
  11. if(MGE_CUDA_USE_STATIC AND NOT MGE_WITH_CUDNN_SHARED)
  12. find_library(CUDNN_LIBRARY
  13. NAMES libcudnn_static.a cudnn.lib
  14. PATHS $ENV{LD_LIBRARY_PATH} ${CUDNN_ROOT_DIR} ${PC_CUDNN_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}
  15. HINTS ${SYSTEM_LIBRARY_PATHS}
  16. PATH_SUFFIXES lib lib64
  17. DOC "CUDNN library." )
  18. else()
  19. find_library(CUDNN_LIBRARY
  20. NAMES libcudnn.so libcudnn.dylib cudnn64.dll
  21. PATHS $ENV{LD_LIBRARY_PATH} ${CUDNN_ROOT_DIR} ${PC_CUDNN_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX}
  22. HINTS ${SYSTEM_LIBRARY_PATHS}
  23. PATH_SUFFIXES lib lib64
  24. DOC "CUDNN library." )
  25. endif()
  26. if(CUDNN_LIBRARY STREQUAL "CUDNN_LIBRARY-NOTFOUND")
  27. message(FATAL_ERROR "Can not find CuDNN Library")
  28. endif()
  29. get_filename_component(__found_cudnn_root ${CUDNN_LIBRARY}/../.. REALPATH)
  30. find_path(CUDNN_INCLUDE_DIR
  31. NAMES cudnn.h
  32. HINTS $ENV{PC_CUDNN_INCLUDE_DIRS} ${CUDNN_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_cudnn_root}
  33. PATH_SUFFIXES include
  34. DOC "Path to CUDNN include directory." )
  35. if(CUDNN_INCLUDE_DIR STREQUAL "CUDNN_INCLUDE_DIR-NOTFOUND")
  36. message(FATAL_ERROR "Can not find CuDNN Library")
  37. endif()
  38. if(EXISTS ${CUDNN_INCLUDE_DIR}/cudnn_version.h)
  39. file(READ ${CUDNN_INCLUDE_DIR}/cudnn_version.h CUDNN_VERSION_FILE_CONTENTS)
  40. else()
  41. file(READ ${CUDNN_INCLUDE_DIR}/cudnn.h CUDNN_VERSION_FILE_CONTENTS)
  42. endif()
  43. string(REGEX MATCH "define CUDNN_MAJOR * +([0-9]+)"
  44. CUDNN_MAJOR_VERSION "${CUDNN_VERSION_FILE_CONTENTS}")
  45. string(REGEX REPLACE "define CUDNN_MAJOR * +([0-9]+)" "\\1"
  46. CUDNN_MAJOR_VERSION "${CUDNN_MAJOR_VERSION}")
  47. string(REGEX MATCH "define CUDNN_MINOR * +([0-9]+)"
  48. CUDNN_MINOR_VERSION "${CUDNN_VERSION_FILE_CONTENTS}")
  49. string(REGEX REPLACE "define CUDNN_MINOR * +([0-9]+)" "\\1"
  50. CUDNN_MINOR_VERSION "${CUDNN_MINOR_VERSION}")
  51. string(REGEX MATCH "define CUDNN_PATCHLEVEL * +([0-9]+)"
  52. CUDNN_PATCH_VERSION "${CUDNN_VERSION_FILE_CONTENTS}")
  53. string(REGEX REPLACE "define CUDNN_PATCHLEVEL * +([0-9]+)" "\\1"
  54. CUDNN_PATCH_VERSION "${CUDNN_PATCH_VERSION}")
  55. set(CUDNN_VERSION ${CUDNN_MAJOR_VERSION}.${CUDNN_MINOR_VERSION}.${CUDNN_PATCH_VERSION})
  56. if(MGE_CUDA_USE_STATIC)
  57. add_library(libcudnn STATIC IMPORTED)
  58. else()
  59. add_library(libcudnn SHARED IMPORTED)
  60. endif()
  61. set_target_properties(libcudnn PROPERTIES
  62. IMPORTED_LOCATION ${CUDNN_LIBRARY}
  63. INTERFACE_INCLUDE_DIRECTORIES ${CUDNN_INCLUDE_DIR})
  64. message(STATUS "Found CuDNN: ${__found_cudnn_root} (found version: ${CUDNN_VERSION})")

MegEngine 安装包中集成了使用 GPU 运行代码所需的 CUDA 环境,不用区分 CPU 和 GPU 版。 如果想要运行 GPU 程序,请确保机器本身配有 GPU 硬件设备并安装好驱动。 如果你想体验在云端 GPU 算力平台进行深度学习开发的感觉,欢迎访问 MegStudio 平台