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 9.0 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. if("${TRT_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{TRT_ROOT_DIR}" STREQUAL "")
  2. set(TRT_ROOT_DIR $ENV{TRT_ROOT_DIR})
  3. endif()
  4. if(MGE_CUDA_USE_STATIC)
  5. find_library(
  6. TRT_LIBRARY
  7. NAMES libnvinfer_static.a nvinfer.lib
  8. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  9. HINTS ${ALTER_LIBRARY_PATHS}
  10. PATH_SUFFIXES lib lib64
  11. DOC "TRT library.")
  12. find_library(
  13. TRT_PLUGIN_LIBRARY
  14. NAMES libnvinfer_plugin_static.a nvinfer_plugin.lib
  15. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  16. HINTS ${ALTER_LIBRARY_PATHS}
  17. PATH_SUFFIXES lib lib64
  18. DOC "TRT plugin library.")
  19. else()
  20. if(MSVC)
  21. set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
  22. endif()
  23. find_library(
  24. TRT_LIBRARY
  25. NAMES libnvinfer.so libnvinfer.dylib nvinfer.dll nvinfer
  26. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  27. HINTS ${ALTER_LIBRARY_PATHS}
  28. PATH_SUFFIXES lib lib64
  29. DOC "TRT library.")
  30. find_library(
  31. TRT_PLUGIN_LIBRARY
  32. NAMES libnvinfer_plugin.so libnvinfer_plugin.dylib nvinfer_plugin.dll nvinfer_plugin
  33. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  34. HINTS ${ALTER_LIBRARY_PATHS}
  35. PATH_SUFFIXES lib lib64
  36. DOC "TRT plugin library.")
  37. endif()
  38. if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND")
  39. message(
  40. FATAL_ERROR
  41. "Can not find TensorRT Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  42. )
  43. endif()
  44. if(TRT_PLUGIN_LIBRARY STREQUAL "TRT_PLUGIN_LIBRARY-NOTFOUND")
  45. message(
  46. FATAL_ERROR
  47. "Can not find TensorRT Plugin Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  48. )
  49. endif()
  50. get_filename_component(__found_trt_root ${TRT_LIBRARY}/../.. REALPATH)
  51. find_path(
  52. TRT_INCLUDE_DIR
  53. NAMES NvInfer.h
  54. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  55. PATH_SUFFIXES include
  56. DOC "Path to TRT include directory.")
  57. find_path(
  58. TRT_PLUGIN_INCLUDE_DIR
  59. NAMES NvInferPlugin.h
  60. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  61. PATH_SUFFIXES include
  62. DOC "Path to TRT plugin include directory.")
  63. if(TRT_INCLUDE_DIR STREQUAL "TRT_INCLUDE_DIR-NOTFOUND")
  64. message(
  65. FATAL_ERROR
  66. "Can not find TensorRT INCLUDE, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  67. )
  68. endif()
  69. if(TRT_PLUGIN_INCLUDE_DIR STREQUAL "TRT_PLUGIN_INCLUDE_DIR-NOTFOUND")
  70. message(
  71. FATAL_ERROR
  72. "Can not find TensorRT Plugin INCLUDE, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  73. )
  74. endif()
  75. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MAJOR
  76. REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  77. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MINOR
  78. REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  79. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_PATCH
  80. REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  81. if(TensorRT_MAJOR STREQUAL "")
  82. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MAJOR
  83. REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  84. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MINOR
  85. REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  86. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_PATCH
  87. REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  88. endif()
  89. string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1"
  90. TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}")
  91. string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1"
  92. TensorRT_VERSION_MINOR "${TensorRT_MINOR}")
  93. string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1"
  94. TensorRT_VERSION_PATCH "${TensorRT_PATCH}")
  95. set(TRT_VERSION_STRING
  96. "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
  97. if(TensorRT_VERSION_MAJOR GREATER_EQUAL 8 AND NOT (MSVC OR WIN32))
  98. set(TRT_LIBRARY "TRT_LIBRARY-NOTFOUND")
  99. set(TRT_PLUGIN_LIBRARY "TRT_PLUGIN_LIBRARY-NOTFOUND")
  100. find_library(
  101. TRT_LIBRARY
  102. NAMES libnvinfer.so nvinfer
  103. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  104. HINTS ${ALTER_LIBRARY_PATHS}
  105. PATH_SUFFIXES lib lib64
  106. DOC "TRT library.")
  107. find_library(
  108. TRT_PLUGIN_LIBRARY
  109. NAMES libnvinfer_plugin.so nvinfer_plugin
  110. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  111. HINTS ${ALTER_LIBRARY_PATHS}
  112. PATH_SUFFIXES lib lib64
  113. DOC "TRT plugin library.")
  114. message(STATUS "TensorRT8 has been changed to dynamic linking")
  115. if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND")
  116. message(
  117. FATAL_ERROR
  118. "Can not find TensorRT Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  119. )
  120. endif()
  121. if(TRT_PLUGIN_LIBRARY STREQUAL "TRT_PLUGIN_LIBRARY-NOTFOUND")
  122. message(
  123. FATAL_ERROR
  124. "Can not find TensorRT Plugin Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  125. )
  126. endif()
  127. endif()
  128. message(STATUS "TRT_LIBRARY: ${TRT_LIBRARY}")
  129. if(MGE_CUDA_USE_STATIC AND NOT (TensorRT_VERSION_MAJOR GREATER_EQUAL 8
  130. AND NOT (MSVC OR WIN32)))
  131. add_library(libnvinfer STATIC IMPORTED)
  132. add_library(libnvinfer_plugin STATIC IMPORTED)
  133. else()
  134. add_library(libnvinfer SHARED IMPORTED)
  135. add_library(libnvinfer_plugin SHARED IMPORTED)
  136. endif()
  137. set_target_properties(
  138. libnvinfer PROPERTIES IMPORTED_LOCATION ${TRT_LIBRARY} INTERFACE_INCLUDE_DIRECTORIES
  139. ${TRT_INCLUDE_DIR})
  140. set_target_properties(
  141. libnvinfer_plugin PROPERTIES IMPORTED_LOCATION ${TRT_PLUGIN_LIBRARY}
  142. INTERFACE_INCLUDE_DIRECTORIES ${TRT_PLUGIN_INCLUDE_DIR})
  143. message(
  144. STATUS "Found TensorRT: ${__found_trt_root} (found version: ${TRT_VERSION_STRING})")
  145. if(TensorRT_VERSION_MAJOR STREQUAL 7)
  146. if(MGE_CUDA_USE_STATIC)
  147. find_library(
  148. LIBMYELIN_COMPILER
  149. NAMES libmyelin_compiler_static.a myelin_compiler_static.lib myelin64_1.lib
  150. myelin64_1
  151. PATHS ${__found_trt_root}/lib)
  152. if(LIBMYELIN_COMPILER STREQUAL "LIBMYELIN_COMPILER-NOTFOUND")
  153. message(FATAL_ERROR "Can not find LIBMYELIN_COMPILER Library")
  154. else()
  155. message(STATUS "Found TensorRT myelin_compiler: ${LIBMYELIN_COMPILER}")
  156. endif()
  157. add_library(libmyelin_compiler STATIC IMPORTED)
  158. set_target_properties(libmyelin_compiler PROPERTIES IMPORTED_LOCATION
  159. ${LIBMYELIN_COMPILER})
  160. find_library(
  161. LIBMYELIN_EXECUTOR
  162. NAMES libmyelin_executor_static.a myelin_executor_static.lib myelin64_1.lib
  163. myelin64_1
  164. PATHS ${__found_trt_root}/lib)
  165. if(LIBMYELIN_EXECUTOR STREQUAL "LIBMYELIN_EXECUTOR-NOTFOUND")
  166. message(FATAL_ERROR "Can not find LIBMYELIN_EXECUTOR Library")
  167. else()
  168. message(STATUS "Found TensorRT libmyelin_executor: ${LIBMYELIN_EXECUTOR}")
  169. endif()
  170. add_library(libmyelin_executor STATIC IMPORTED)
  171. set_target_properties(libmyelin_executor PROPERTIES IMPORTED_LOCATION
  172. ${LIBMYELIN_EXECUTOR})
  173. find_library(
  174. LIBMYELIN_PATTERN_RUNTIME
  175. NAMES libmyelin_pattern_runtime_static.a myelin_pattern_runtime_static.lib
  176. myelin64_1.lib myelin64_1
  177. PATHS ${__found_trt_root}/lib)
  178. if(LIBMYELIN_PATTERN_RUNTIME STREQUAL "LIBMYELIN_PATTERN_RUNTIME-NOTFOUND")
  179. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_RUNTIME Library")
  180. else()
  181. message(
  182. STATUS "Found TensorRT libmyelin_pattern_runtime: ${LIBMYELIN_PATTERN_RUNTIME}")
  183. endif()
  184. add_library(libmyelin_pattern_runtime STATIC IMPORTED)
  185. set_target_properties(libmyelin_pattern_runtime
  186. PROPERTIES IMPORTED_LOCATION ${LIBMYELIN_PATTERN_RUNTIME})
  187. find_library(
  188. LIBMYELIN_PATTERN_LIBRARY
  189. NAMES libmyelin_pattern_library_static.a myelin_pattern_library_static.lib
  190. myelin64_1.lib myelin64_1
  191. PATHS ${__found_trt_root}/lib)
  192. if(LIBMYELIN_PATTERN_LIBRARY STREQUAL "LIBMYELIN_PATTERN_LIBRARY-NOTFOUND")
  193. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_LIBRARY Library")
  194. else()
  195. message(
  196. STATUS "Found TensorRT libmyelin_pattern_library: ${LIBMYELIN_PATTERN_LIBRARY}")
  197. endif()
  198. add_library(libmyelin_pattern_library STATIC IMPORTED)
  199. set_target_properties(libmyelin_pattern_library
  200. PROPERTIES IMPORTED_LOCATION ${LIBMYELIN_PATTERN_LIBRARY})
  201. else()
  202. find_library(
  203. LIBMYELIN_SHARED
  204. NAMES libmyelin.so myelin.dll myelin64_1.dll myelin64_1
  205. PATHS ${__found_trt_root}/lib)
  206. if(LIBMYELIN_SHARED STREQUAL "LIBMYELIN_SHARED-NOTFOUND")
  207. message(FATAL_ERROR "Can not find LIBMYELIN_SHARED Library")
  208. else()
  209. message(STATUS "Found TensorRT libmyelin_shared: ${LIBMYELIN_SHARED}")
  210. endif()
  211. add_library(libmyelin SHARED IMPORTED)
  212. set_target_properties(libmyelin PROPERTIES IMPORTED_LOCATION ${LIBMYELIN_SHARED})
  213. endif()
  214. endif()