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.

tensorrt.cmake 6.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. if(NOT "$ENV{LIBRARY_PATH}" STREQUAL "")
  2. string(REPLACE ":" ";" SYSTEM_LIBRARY_PATHS $ENV{LIBRARY_PATH})
  3. endif()
  4. if("${TRT_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{TRT_ROOT_DIR}" STREQUAL "")
  5. set(TRT_ROOT_DIR $ENV{TRT_ROOT_DIR})
  6. endif()
  7. if(MGE_CUDA_USE_STATIC)
  8. find_library(TRT_LIBRARY
  9. NAMES libnvinfer_static.a nvinfer.lib
  10. PATHS $ENV{LD_LIBRARY_PATH} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  11. HINTS ${SYSTEM_LIBRARY_PATHS}
  12. PATH_SUFFIXES lib lib64
  13. DOC "TRT library." )
  14. else()
  15. find_library(TRT_LIBRARY
  16. NAMES libnvinfer.so libnvinfer.dylib nvinfer.dll
  17. PATHS $ENV{LD_LIBRARY_PATH} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  18. HINTS ${SYSTEM_LIBRARY_PATHS}
  19. PATH_SUFFIXES lib lib64
  20. DOC "TRT library." )
  21. endif()
  22. if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND")
  23. message(FATAL_ERROR "Can not find TensorRT Library")
  24. endif()
  25. get_filename_component(__found_trt_root ${TRT_LIBRARY}/../.. REALPATH)
  26. find_path(TRT_INCLUDE_DIR
  27. NAMES NvInfer.h
  28. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  29. PATH_SUFFIXES include
  30. DOC "Path to TRT include directory." )
  31. if(TRT_INCLUDE_DIR STREQUAL "TRT_INCLUDE_DIR-NOTFOUND")
  32. message(FATAL_ERROR "Can not find TensorRT Library")
  33. endif()
  34. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  35. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  36. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  37. if (TensorRT_MAJOR STREQUAL "")
  38. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  39. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  40. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  41. endif()
  42. string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}")
  43. string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MINOR "${TensorRT_MINOR}")
  44. string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1" TensorRT_VERSION_PATCH "${TensorRT_PATCH}")
  45. set(TRT_VERSION_STRING "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
  46. if(MGE_CUDA_USE_STATIC)
  47. add_library(libnvinfer STATIC IMPORTED)
  48. else()
  49. add_library(libnvinfer SHARED IMPORTED)
  50. endif()
  51. set_target_properties(libnvinfer PROPERTIES
  52. IMPORTED_LOCATION ${TRT_LIBRARY}
  53. INTERFACE_INCLUDE_DIRECTORIES ${TRT_INCLUDE_DIR}
  54. )
  55. message(STATUS "Found TensorRT: ${__found_trt_root} (found version: ${TRT_VERSION_STRING})")
  56. if(TensorRT_VERSION_MAJOR GREATER_EQUAL 7)
  57. if(MGE_CUDA_USE_STATIC)
  58. find_library(LIBMYELIN_COMPILER
  59. NAMES libmyelin_compiler_static.a myelin_compiler_static.lib
  60. PATHS ${__found_trt_root}/lib
  61. )
  62. if(LIBMYELIN_COMPILER STREQUAL "LIBMYELIN_COMPILER-NOTFOUND")
  63. message(FATAL_ERROR "Can not find LIBMYELIN_COMPILER Library")
  64. else()
  65. message(STATUS "Found TensorRT myelin_compiler: ${LIBMYELIN_COMPILER}")
  66. endif()
  67. add_library(libmyelin_compiler STATIC IMPORTED)
  68. set_target_properties(libmyelin_compiler PROPERTIES
  69. IMPORTED_LOCATION ${LIBMYELIN_COMPILER}
  70. )
  71. find_library(LIBMYELIN_EXECUTOR
  72. NAMES libmyelin_executor_static.a myelin_executor_static.lib
  73. PATHS ${__found_trt_root}/lib
  74. )
  75. if(LIBMYELIN_EXECUTOR STREQUAL "LIBMYELIN_EXECUTOR-NOTFOUND")
  76. message(FATAL_ERROR "Can not find LIBMYELIN_EXECUTOR Library")
  77. else()
  78. message(STATUS "Found TensorRT libmyelin_executor: ${LIBMYELIN_EXECUTOR}")
  79. endif()
  80. add_library(libmyelin_executor STATIC IMPORTED)
  81. set_target_properties(libmyelin_executor PROPERTIES
  82. IMPORTED_LOCATION ${LIBMYELIN_EXECUTOR}
  83. )
  84. find_library(LIBMYELIN_PATTERN_RUNTIME
  85. NAMES libmyelin_pattern_runtime_static.a myelin_pattern_runtime_static.lib
  86. PATHS ${__found_trt_root}/lib
  87. )
  88. if(LIBMYELIN_PATTERN_RUNTIME STREQUAL "LIBMYELIN_PATTERN_RUNTIME-NOTFOUND")
  89. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_RUNTIME Library")
  90. else()
  91. message(STATUS "Found TensorRT libmyelin_pattern_runtime: ${LIBMYELIN_PATTERN_RUNTIME}")
  92. endif()
  93. add_library(libmyelin_pattern_runtime STATIC IMPORTED)
  94. set_target_properties(libmyelin_pattern_runtime PROPERTIES
  95. IMPORTED_LOCATION ${LIBMYELIN_PATTERN_RUNTIME}
  96. )
  97. find_library(LIBMYELIN_PATTERN_LIBRARY
  98. NAMES libmyelin_pattern_library_static.a myelin_pattern_library_static.lib
  99. PATHS ${__found_trt_root}/lib
  100. )
  101. if(LIBMYELIN_PATTERN_LIBRARY STREQUAL "LIBMYELIN_PATTERN_LIBRARY-NOTFOUND")
  102. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_LIBRARY Library")
  103. else()
  104. message(STATUS "Found TensorRT libmyelin_pattern_library: ${LIBMYELIN_PATTERN_LIBRARY}")
  105. endif()
  106. add_library(libmyelin_pattern_library STATIC IMPORTED)
  107. set_target_properties(libmyelin_pattern_library PROPERTIES
  108. IMPORTED_LOCATION ${LIBMYELIN_PATTERN_LIBRARY}
  109. )
  110. else()
  111. find_library(LIBMYELIN_SHARED
  112. NAMES libmyelin.so myelin.dll
  113. PATHS ${__found_trt_root}/lib
  114. )
  115. if(LIBMYELIN_SHARED STREQUAL "LIBMYELIN_SHARED-NOTFOUND")
  116. message(FATAL_ERROR "Can not find LIBMYELIN_SHARED Library")
  117. else()
  118. message(STATUS "Found TensorRT libmyelin_shared: ${LIBMYELIN_SHARED}")
  119. endif()
  120. add_library(libmyelin SHARED IMPORTED)
  121. set_target_properties(libmyelin PROPERTIES
  122. IMPORTED_LOCATION ${LIBMYELIN_SHARED}
  123. )
  124. endif()
  125. endif()

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