145 lines
5.9 KiB
CMake
145 lines
5.9 KiB
CMake
if(NOT WITH_GPU OR NOT WITH_TENSORRT)
|
|
return()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
string(REPLACE "\\" "/" TENSORRT_ROOT "${TENSORRT_ROOT}")
|
|
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)"
|
|
TENSORRT_VERSION ${TENSORRT_ROOT})
|
|
if(NOT TENSORRT_VERSION)
|
|
set(MAJOR_VERSION "unknown")
|
|
else()
|
|
message(STATUS "TensorRT Full Version: ${TENSORRT_VERSION}")
|
|
string(REGEX MATCH "^[0-9]+" MAJOR_VERSION ${TENSORRT_VERSION})
|
|
endif()
|
|
if(MAJOR_VERSION STREQUAL "10")
|
|
message(STATUS "TensorRT version is 10, applying specific settings.")
|
|
set(TR_INFER_LIB nvinfer_10.lib)
|
|
set(TR_INFER_RT nvinfer_10.dll)
|
|
set(TR_INFER_PLUGIN_RT nvinfer_plugin_10.dll)
|
|
else()
|
|
message(STATUS "TensorRT version is not 10, using default settings.")
|
|
set(TR_INFER_LIB nvinfer.lib)
|
|
set(TR_INFER_RT nvinfer.dll)
|
|
set(TR_INFER_PLUGIN_RT nvinfer_plugin.dll)
|
|
endif()
|
|
else()
|
|
set(TENSORRT_ROOT
|
|
"/usr"
|
|
CACHE PATH "TENSORRT ROOT")
|
|
set(TR_INFER_LIB libnvinfer.a)
|
|
set(TR_INFER_RT libnvinfer.so)
|
|
set(TR_INFER_PLUGIN_RT libnvinfer_plugin.so)
|
|
endif()
|
|
|
|
find_path(
|
|
TENSORRT_INCLUDE_DIR NvInfer.h
|
|
PATHS ${TENSORRT_ROOT}
|
|
${TENSORRT_ROOT}/include
|
|
${TENSORRT_ROOT}/include/${CMAKE_LIBRARY_ARCHITECTURE}
|
|
$ENV{TENSORRT_ROOT}
|
|
$ENV{TENSORRT_ROOT}/include
|
|
$ENV{TENSORRT_ROOT}/include/${CMAKE_LIBRARY_ARCHITECTURE}
|
|
NO_DEFAULT_PATH)
|
|
|
|
find_path(
|
|
TENSORRT_LIBRARY_DIR
|
|
NAMES ${TR_INFER_LIB} ${TR_INFER_RT}
|
|
PATHS ${TENSORRT_ROOT}
|
|
${TENSORRT_ROOT}/lib
|
|
${TENSORRT_ROOT}/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
|
$ENV{TENSORRT_ROOT}
|
|
$ENV{TENSORRT_ROOT}/lib
|
|
$ENV{TENSORRT_ROOT}/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
|
NO_DEFAULT_PATH
|
|
DOC "Path to TensorRT library.")
|
|
|
|
find_library(
|
|
TENSORRT_LIBRARY
|
|
NAMES ${TR_INFER_LIB} ${TR_INFER_RT}
|
|
PATHS ${TENSORRT_LIBRARY_DIR}
|
|
NO_DEFAULT_PATH
|
|
DOC "Path to TensorRT library.")
|
|
|
|
if(TENSORRT_INCLUDE_DIR AND TENSORRT_LIBRARY)
|
|
set(TENSORRT_FOUND ON)
|
|
else()
|
|
set(TENSORRT_FOUND OFF)
|
|
message(
|
|
WARNING
|
|
"TensorRT is disabled. You are compiling PaddlePaddle with option -DWITH_TENSORRT=ON, but TensorRT is not found, please configure path to TensorRT with option -DTENSORRT_ROOT or install it."
|
|
)
|
|
endif()
|
|
|
|
if(TENSORRT_FOUND)
|
|
file(READ ${TENSORRT_INCLUDE_DIR}/NvInfer.h TENSORRT_VERSION_FILE_CONTENTS)
|
|
string(REGEX MATCH "define NV_TENSORRT_MAJOR +([0-9]+)"
|
|
TENSORRT_MAJOR_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define NV_TENSORRT_MINOR +([0-9]+)"
|
|
TENSORRT_MINOR_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define NV_TENSORRT_PATCH +([0-9]+)"
|
|
TENSORRT_PATCH_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define NV_TENSORRT_BUILD +([0-9]+)"
|
|
TENSORRT_BUILD_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
|
|
set(TRT_ENTERPRISE "OFF")
|
|
if("${TENSORRT_MAJOR_VERSION}" STREQUAL "")
|
|
file(READ ${TENSORRT_INCLUDE_DIR}/NvInferVersion.h
|
|
TENSORRT_VERSION_FILE_CONTENTS)
|
|
string(REGEX MATCH "define NV_TENSORRT_MAJOR +([0-9]+)"
|
|
TENSORRT_MAJOR_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define NV_TENSORRT_MINOR +([0-9]+)"
|
|
TENSORRT_MINOR_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define NV_TENSORRT_PATCH +([0-9]+)"
|
|
TENSORRT_PATCH_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define NV_TENSORRT_BUILD +([0-9]+)"
|
|
TENSORRT_BUILD_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
|
|
# In TensorRT 10.12.0.36, the version macros is TRT_*_ENTERPRISE.
|
|
if("${TENSORRT_MAJOR_VERSION}" STREQUAL "")
|
|
string(REGEX MATCH "define TRT_MAJOR_ENTERPRISE +([0-9]+)"
|
|
TENSORRT_MAJOR_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define TRT_MINOR_ENTERPRISE +([0-9]+)"
|
|
TENSORRT_MINOR_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define TRT_PATCH_ENTERPRISE +([0-9]+)"
|
|
TENSORRT_PATCH_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
string(REGEX MATCH "define TRT_BUILD_ENTERPRISE +([0-9]+)"
|
|
TENSORRT_BUILD_VERSION "${TENSORRT_VERSION_FILE_CONTENTS}")
|
|
set(TRT_ENTERPRISE "ON")
|
|
endif()
|
|
endif()
|
|
|
|
if("${TENSORRT_MAJOR_VERSION}" STREQUAL "")
|
|
message(SEND_ERROR "Failed to detect TensorRT version.")
|
|
endif()
|
|
|
|
string(REGEX REPLACE "define NV_TENSORRT_MAJOR +([0-9]+)" "\\1"
|
|
TENSORRT_MAJOR_VERSION "${TENSORRT_MAJOR_VERSION}")
|
|
string(REGEX REPLACE "define NV_TENSORRT_MINOR +([0-9]+)" "\\1"
|
|
TENSORRT_MINOR_VERSION "${TENSORRT_MINOR_VERSION}")
|
|
string(REGEX REPLACE "define NV_TENSORRT_PATCH +([0-9]+)" "\\1"
|
|
TENSORRT_PATCH_VERSION "${TENSORRT_PATCH_VERSION}")
|
|
string(REGEX REPLACE "define NV_TENSORRT_BUILD +([0-9]+)" "\\1"
|
|
TENSORRT_BUILD_VERSION "${TENSORRT_BUILD_VERSION}")
|
|
|
|
if("${TRT_ENTERPRISE}" STREQUAL "ON")
|
|
string(REGEX REPLACE "define TRT_MAJOR_ENTERPRISE +([0-9]+)" "\\1"
|
|
TENSORRT_MAJOR_VERSION "${TENSORRT_MAJOR_VERSION}")
|
|
string(REGEX REPLACE "define TRT_MINOR_ENTERPRISE +([0-9]+)" "\\1"
|
|
TENSORRT_MINOR_VERSION "${TENSORRT_MINOR_VERSION}")
|
|
string(REGEX REPLACE "define TRT_PATCH_ENTERPRISE +([0-9]+)" "\\1"
|
|
TENSORRT_PATCH_VERSION "${TENSORRT_PATCH_VERSION}")
|
|
string(REGEX REPLACE "define TRT_BUILD_ENTERPRISE +([0-9]+)" "\\1"
|
|
TENSORRT_BUILD_VERSION "${TENSORRT_BUILD_VERSION}")
|
|
endif()
|
|
|
|
message(
|
|
STATUS
|
|
"Current TensorRT header is ${TENSORRT_INCLUDE_DIR}/NvInfer.h. "
|
|
"Current TensorRT version is v${TENSORRT_MAJOR_VERSION}.${TENSORRT_MINOR_VERSION}.${TENSORRT_PATCH_VERSION}.${TENSORRT_BUILD_VERSION} "
|
|
)
|
|
include_directories(${TENSORRT_INCLUDE_DIR})
|
|
link_directories(${TENSORRT_LIBRARY})
|
|
add_definitions(-DPADDLE_WITH_TENSORRT)
|
|
endif()
|