diff --git a/CMakeLists.txt b/CMakeLists.txt index fc1ab3a9..af6dfc53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -814,8 +814,7 @@ if(MGE_WITH_CUDA) list(APPEND MGE_CUDA_LIBS ${TRT_LIBRARY} ${TRT_PLUGIN_LIBRARY}) else() if(TensorRT_VERSION_MAJOR GREATER_EQUAL 8) - list(APPEND MGE_CUDA_LIBS -Wl,--whole-archive libnvinfer.so - libnvinfer_plugin.so -Wl,--no-whole-archive) + list(APPEND MGE_CUDA_LIBS libnvinfer libnvinfer_plugin) else() list(APPEND MGE_CUDA_LIBS -Wl,--whole-archive libnvinfer libnvinfer_plugin -Wl,--no-whole-archive) diff --git a/cmake/tensorrt.cmake b/cmake/tensorrt.cmake index 2da37bb6..51bbde54 100644 --- a/cmake/tensorrt.cmake +++ b/cmake/tensorrt.cmake @@ -36,7 +36,6 @@ else() PATH_SUFFIXES lib lib64 DOC "TRT plugin library.") endif() -message(STATUS "TRT_LIBRARY: ${TRT_LIBRARY}") if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND") message( FATAL_ERROR @@ -102,7 +101,42 @@ string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1" set(TRT_VERSION_STRING "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}") -if(MGE_CUDA_USE_STATIC) +if(TensorRT_VERSION_MAJOR GREATER_EQUAL 8 AND NOT (MSVC OR WIN32)) + set(TRT_LIBRARY "TRT_LIBRARY-NOTFOUND") + set(TRT_PLUGIN_LIBRARY "TRT_PLUGIN_LIBRARY-NOTFOUND") + find_library( + TRT_LIBRARY + NAMES libnvinfer.so nvinfer + PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX} + HINTS ${ALTER_LIBRARY_PATHS} + PATH_SUFFIXES lib lib64 + DOC "TRT library.") + find_library( + TRT_PLUGIN_LIBRARY + NAMES libnvinfer_plugin.so nvinfer_plugin + PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX} + HINTS ${ALTER_LIBRARY_PATHS} + PATH_SUFFIXES lib lib64 + DOC "TRT plugin library.") + message(STATUS "TensorRT8 has been changed to dynamic linking") + if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND") + message( + FATAL_ERROR + "Can not find TensorRT Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env" + ) + endif() + if(TRT_PLUGIN_LIBRARY STREQUAL "TRT_PLUGIN_LIBRARY-NOTFOUND") + message( + FATAL_ERROR + "Can not find TensorRT Plugin Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env" + ) + endif() +endif() + +message(STATUS "TRT_LIBRARY: ${TRT_LIBRARY}") + +if(MGE_CUDA_USE_STATIC AND NOT (TensorRT_VERSION_MAJOR GREATER_EQUAL 8 + AND NOT (MSVC OR WIN32))) add_library(libnvinfer STATIC IMPORTED) add_library(libnvinfer_plugin STATIC IMPORTED) else() diff --git a/scripts/cmake-build/host_build.sh b/scripts/cmake-build/host_build.sh index 2daaf2ca..d9c33fa6 100755 --- a/scripts/cmake-build/host_build.sh +++ b/scripts/cmake-build/host_build.sh @@ -235,8 +235,6 @@ function prepare_env_for_windows_build() { export CUDA_BIN_PATH=$CUDA_PATH export PC_CUDNN_INCLUDE_DIRS=$NIVIDA_INSTALL_PRE/${CUDNN_V}/cuda/include export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NIVIDA_INSTALL_PRE/${TRT_V}/lib:$NIVIDA_INSTALL_PRE/CUDA/${CUDA_V}/lib/x64:$NIVIDA_INSTALL_PRE/${CUDNN_V}/cuda/lib/x64 - export CPATH=$CPATH:$NIVIDA_INSTALL_PRE/${TRT_V}/include:$NIVIDA_INSTALL_PRE/CUDA/${CUDA_V}/include:$NIVIDA_INSTALL_PRE/CUDA/${CUDA_V}/include/nvtx3:$PC_CUDNN_INCLUDE_DIRS - export LIBRARY_PATH=$LIBRARY_PATH:$LD_LIBRARY_PATH export INCLUDE=$INCLUDE:$CPATH export CUDNN_ROOT_DIR=${NIVIDA_INSTALL_PRE}/${CUDNN_V}/cuda export TRT_ROOT_DIR=${NIVIDA_INSTALL_PRE}/${TRT_V} diff --git a/scripts/whl/manylinux2014/Dockerfile b/scripts/whl/manylinux2014/Dockerfile index 2c8addd6..b337b1e6 100644 --- a/scripts/whl/manylinux2014/Dockerfile +++ b/scripts/whl/manylinux2014/Dockerfile @@ -2,9 +2,7 @@ FROM quay.io/pypa/manylinux2014_x86_64:2020-12-31-56195b3 ENV UID=1024 \ PATH=${PATH}:/usr/local/cuda/bin \ - LIBRARY_PATH=${LIBRARY_PATH}:/usr/local/cuda/lib64:/usr/local/cuda/lib64/stubs:/opt/cudnn/lib64:/opt/tensorrt/lib \ - LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:/usr/local/cuda/lib64/stubs:/opt/cudnn/lib64:/opt/tensorrt/lib \ - CPATH=${CPATH}:/usr/local/cuda/include:/opt/cudnn/include:/opt/tensorrt/include + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:/usr/local/cuda/lib64/stubs:/opt/cudnn/lib64:/opt/tensorrt/lib ARG platform COPY setup_mirror.sh .