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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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. find_library(
  21. TRT_LIBRARY
  22. NAMES libnvinfer.so libnvinfer.dylib nvinfer.dll
  23. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  24. HINTS ${ALTER_LIBRARY_PATHS}
  25. PATH_SUFFIXES lib lib64
  26. DOC "TRT library.")
  27. find_library(
  28. TRT_PLUGIN_LIBRARY
  29. NAMES libnvinfer_plugin.so libnvinfer_plugin.dylib nvinfer_plugin.dll
  30. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  31. HINTS ${ALTER_LIBRARY_PATHS}
  32. PATH_SUFFIXES lib lib64
  33. DOC "TRT plugin library.")
  34. endif()
  35. if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND")
  36. message(
  37. FATAL_ERROR
  38. "Can not find TensorRT Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  39. )
  40. endif()
  41. if(TRT_PLUGIN_LIBRARY STREQUAL "TRT_PLUGIN_LIBRARY-NOTFOUND")
  42. message(
  43. FATAL_ERROR
  44. "Can not find TensorRT Plugin Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  45. )
  46. endif()
  47. get_filename_component(__found_trt_root ${TRT_LIBRARY}/../.. REALPATH)
  48. find_path(
  49. TRT_INCLUDE_DIR
  50. NAMES NvInfer.h
  51. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  52. PATH_SUFFIXES include
  53. DOC "Path to TRT include directory.")
  54. find_path(
  55. TRT_PLUGIN_INCLUDE_DIR
  56. NAMES NvInferPlugin.h
  57. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  58. PATH_SUFFIXES include
  59. DOC "Path to TRT plugin include directory.")
  60. if(TRT_INCLUDE_DIR STREQUAL "TRT_INCLUDE_DIR-NOTFOUND")
  61. message(
  62. FATAL_ERROR
  63. "Can not find TensorRT INCLUDE, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  64. )
  65. endif()
  66. if(TRT_PLUGIN_INCLUDE_DIR STREQUAL "TRT_PLUGIN_INCLUDE_DIR-NOTFOUND")
  67. message(
  68. FATAL_ERROR
  69. "Can not find TensorRT Plugin INCLUDE, please refer to scripts/cmake-build/BUILD_README.md to init TRT env"
  70. )
  71. endif()
  72. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MAJOR
  73. REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  74. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MINOR
  75. REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  76. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_PATCH
  77. REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  78. if(TensorRT_MAJOR STREQUAL "")
  79. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MAJOR
  80. REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  81. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MINOR
  82. REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  83. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_PATCH
  84. REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  85. endif()
  86. string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1"
  87. TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}")
  88. string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1"
  89. TensorRT_VERSION_MINOR "${TensorRT_MINOR}")
  90. string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1"
  91. TensorRT_VERSION_PATCH "${TensorRT_PATCH}")
  92. set(TRT_VERSION_STRING
  93. "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
  94. if(MGE_CUDA_USE_STATIC)
  95. add_library(libnvinfer STATIC IMPORTED)
  96. add_library(libnvinfer_plugin STATIC IMPORTED)
  97. else()
  98. add_library(libnvinfer SHARED IMPORTED)
  99. add_library(libnvinfer_plugin SHARED IMPORTED)
  100. endif()
  101. set_target_properties(
  102. libnvinfer PROPERTIES IMPORTED_LOCATION ${TRT_LIBRARY} INTERFACE_INCLUDE_DIRECTORIES
  103. ${TRT_INCLUDE_DIR})
  104. set_target_properties(
  105. libnvinfer_plugin PROPERTIES IMPORTED_LOCATION ${TRT_PLUGIN_LIBRARY}
  106. INTERFACE_INCLUDE_DIRECTORIES ${TRT_PLUGIN_INCLUDE_DIR})
  107. message(
  108. STATUS "Found TensorRT: ${__found_trt_root} (found version: ${TRT_VERSION_STRING})")
  109. if(TensorRT_VERSION_MAJOR GREATER_EQUAL 7)
  110. if(MGE_CUDA_USE_STATIC)
  111. find_library(
  112. LIBMYELIN_COMPILER
  113. NAMES libmyelin_compiler_static.a myelin_compiler_static.lib
  114. PATHS ${__found_trt_root}/lib)
  115. if(LIBMYELIN_COMPILER STREQUAL "LIBMYELIN_COMPILER-NOTFOUND")
  116. message(FATAL_ERROR "Can not find LIBMYELIN_COMPILER Library")
  117. else()
  118. message(STATUS "Found TensorRT myelin_compiler: ${LIBMYELIN_COMPILER}")
  119. endif()
  120. add_library(libmyelin_compiler STATIC IMPORTED)
  121. set_target_properties(libmyelin_compiler PROPERTIES IMPORTED_LOCATION
  122. ${LIBMYELIN_COMPILER})
  123. find_library(
  124. LIBMYELIN_EXECUTOR
  125. NAMES libmyelin_executor_static.a myelin_executor_static.lib
  126. PATHS ${__found_trt_root}/lib)
  127. if(LIBMYELIN_EXECUTOR STREQUAL "LIBMYELIN_EXECUTOR-NOTFOUND")
  128. message(FATAL_ERROR "Can not find LIBMYELIN_EXECUTOR Library")
  129. else()
  130. message(STATUS "Found TensorRT libmyelin_executor: ${LIBMYELIN_EXECUTOR}")
  131. endif()
  132. add_library(libmyelin_executor STATIC IMPORTED)
  133. set_target_properties(libmyelin_executor PROPERTIES IMPORTED_LOCATION
  134. ${LIBMYELIN_EXECUTOR})
  135. find_library(
  136. LIBMYELIN_PATTERN_RUNTIME
  137. NAMES libmyelin_pattern_runtime_static.a myelin_pattern_runtime_static.lib
  138. PATHS ${__found_trt_root}/lib)
  139. if(LIBMYELIN_PATTERN_RUNTIME STREQUAL "LIBMYELIN_PATTERN_RUNTIME-NOTFOUND")
  140. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_RUNTIME Library")
  141. else()
  142. message(
  143. STATUS "Found TensorRT libmyelin_pattern_runtime: ${LIBMYELIN_PATTERN_RUNTIME}")
  144. endif()
  145. add_library(libmyelin_pattern_runtime STATIC IMPORTED)
  146. set_target_properties(libmyelin_pattern_runtime
  147. PROPERTIES IMPORTED_LOCATION ${LIBMYELIN_PATTERN_RUNTIME})
  148. find_library(
  149. LIBMYELIN_PATTERN_LIBRARY
  150. NAMES libmyelin_pattern_library_static.a myelin_pattern_library_static.lib
  151. PATHS ${__found_trt_root}/lib)
  152. if(LIBMYELIN_PATTERN_LIBRARY STREQUAL "LIBMYELIN_PATTERN_LIBRARY-NOTFOUND")
  153. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_LIBRARY Library")
  154. else()
  155. message(
  156. STATUS "Found TensorRT libmyelin_pattern_library: ${LIBMYELIN_PATTERN_LIBRARY}")
  157. endif()
  158. add_library(libmyelin_pattern_library STATIC IMPORTED)
  159. set_target_properties(libmyelin_pattern_library
  160. PROPERTIES IMPORTED_LOCATION ${LIBMYELIN_PATTERN_LIBRARY})
  161. else()
  162. find_library(
  163. LIBMYELIN_SHARED
  164. NAMES libmyelin.so myelin.dll
  165. PATHS ${__found_trt_root}/lib)
  166. if(LIBMYELIN_SHARED STREQUAL "LIBMYELIN_SHARED-NOTFOUND")
  167. message(FATAL_ERROR "Can not find LIBMYELIN_SHARED Library")
  168. else()
  169. message(STATUS "Found TensorRT libmyelin_shared: ${LIBMYELIN_SHARED}")
  170. endif()
  171. add_library(libmyelin SHARED IMPORTED)
  172. set_target_properties(libmyelin PROPERTIES IMPORTED_LOCATION ${LIBMYELIN_SHARED})
  173. endif()
  174. endif()