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.

cupti.cmake 2.8 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. if("${CUDA_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{CUDA_ROOT_DIR}" STREQUAL "")
  2. set(CUDA_ROOT_DIR $ENV{CUDA_ROOT_DIR})
  3. endif()
  4. if("${CUDA_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{CUDA_PATH}" STREQUAL "")
  5. set(CUDA_ROOT_DIR $ENV{CUDA_PATH})
  6. endif()
  7. if("${CUDA_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{CUDA_BIN_PATH}" STREQUAL "")
  8. set(CUDA_ROOT_DIR $ENV{CUDA_BIN_PATH})
  9. endif()
  10. if("${CUDA_ROOT_DIR}" STREQUAL "")
  11. message(
  12. FATAL_ERROR
  13. "Can not find CUDA, please export cuda sdk path to CUDA_ROOT_DIR or CUDA_PATH or CUDA_BIN_PATH"
  14. )
  15. endif()
  16. # TODO: find_library(CUDA_ROOT_DIR) in cmake/cuda.cmake
  17. set(MGE_CUPTI_USE_STATIC ${MGE_CUDA_USE_STATIC})
  18. # relates https://stackoverflow.com/questions/67485114
  19. if(${MGE_CUDA_USE_STATIC} AND ${CXX_SUPPORT_GOLD})
  20. message(WARNING "static linking CuPTI with gold may break exception handling,\
  21. use shared one instead")
  22. set(MGE_CUPTI_USE_STATIC OFF)
  23. endif()
  24. if(MGE_CUPTI_USE_STATIC)
  25. find_library(
  26. CUPTI_LIBRARY
  27. NAMES libcupti_static.a
  28. HINTS ${CUDA_ROOT_DIR} ${CUDA_ROOT_DIR}/extras/CUPTI
  29. PATH_SUFFIXES lib lib64
  30. DOC "CuPTI library.")
  31. if("${CUPTI_LIBRARY}" STREQUAL "CUPTI_LIBRARY-NOTFOUND")
  32. message(WARNING "Can not find static CuPTI Library, use shared one instead")
  33. set(MGE_CUPTI_USE_STATIC OFF)
  34. endif()
  35. endif()
  36. if(NOT ${MGE_CUPTI_USE_STATIC})
  37. find_library(
  38. CUPTI_LIBRARY
  39. NAMES libcupti.so
  40. HINTS ${CUDA_ROOT_DIR} ${CUDA_ROOT_DIR}/extras/CUPTI
  41. PATH_SUFFIXES lib lib64
  42. DOC "CuPTI library.")
  43. set(CUPTI_LIBRARY_TYPE SHARED)
  44. else()
  45. set(CUPTI_LIBRARY_TYPE STATIC)
  46. endif()
  47. if("${CUPTI_LIBRARY}" STREQUAL "CUPTI_LIBRARY-NOTFOUND")
  48. message(FATAL_ERROR "Can not find CuPTI Library")
  49. endif()
  50. find_path(
  51. CUPTI_INCLUDE_DIR
  52. NAMES cupti.h
  53. HINTS ${CUDA_ROOT_DIR} ${CUDA_ROOT_DIR}/extras/CUPTI
  54. PATH_SUFFIXES include
  55. DOC "Path to CuPTI include directory.")
  56. if(CUPTI_INCLUDE_DIR STREQUAL "CUPTI_INCLUDE_DIR-NOTFOUND")
  57. message(FATAL_ERROR "Can not find CuPTI INCLUDE")
  58. endif()
  59. if(EXISTS ${CUPTI_INCLUDE_DIR}/cupti_version.h)
  60. file(READ ${CUPTI_INCLUDE_DIR}/cupti_version.h CUPTI_VERSION_FILE_CONTENTS)
  61. else()
  62. file(READ ${CUPTI_INCLUDE_DIR}/cupti.h CUPTI_VERSION_FILE_CONTENTS)
  63. endif()
  64. string(REGEX MATCH "define CUPTI_API_VERSION * +([0-9]+)" CUPTI_API_VERSION
  65. "${CUPTI_VERSION_FILE_CONTENTS}")
  66. string(REGEX REPLACE "define CUPTI_API_VERSION * +([0-9]+)" "\\1" CUPTI_API_VERSION
  67. "${CUPTI_API_VERSION}")
  68. add_library(libcupti ${CUPTI_LIBRARY_TYPE} IMPORTED)
  69. set_target_properties(
  70. libcupti PROPERTIES IMPORTED_LOCATION ${CUPTI_LIBRARY} INTERFACE_INCLUDE_DIRECTORIES
  71. ${CUPTI_INCLUDE_DIR})
  72. message(STATUS "Found CuPTI: ${CUPTI_LIBRARY} (found version: ${CUPTI_API_VERSION})")