mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-06 00:57:33 +08:00
[Other] Use symbolic link pointed to TensorRT library (#1461)
* Add force rpath * update to dev-6 * remove force-rpath * remove nvinfer so * Add symbol link creation when import fastdeploy first * Add dst * update symbol link creation * Add logging * logging -> logger * update tips * Set logging level * Add --force-rpath
This commit is contained in:
@@ -374,7 +374,7 @@ if(ENABLE_TRT_BACKEND)
|
|||||||
endif()
|
endif()
|
||||||
if(UNIX AND (NOT APPLE) AND (NOT ANDROID))
|
if(UNIX AND (NOT APPLE) AND (NOT ANDROID))
|
||||||
execute_process(COMMAND sh -c "ls *.so*" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/tensorrt/lib
|
execute_process(COMMAND sh -c "ls *.so*" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/tensorrt/lib
|
||||||
COMMAND sh -c "xargs ${PATCHELF_EXE} --set-rpath '$ORIGIN'" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/tensorrt/lib
|
COMMAND sh -c "xargs ${PATCHELF_EXE} --force-rpath --set-rpath '$ORIGIN'" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/tensorrt/lib
|
||||||
RESULT_VARIABLE result
|
RESULT_VARIABLE result
|
||||||
OUTPUT_VARIABLE curr_out
|
OUTPUT_VARIABLE curr_out
|
||||||
ERROR_VARIABLE curr_out)
|
ERROR_VARIABLE curr_out)
|
||||||
|
@@ -80,7 +80,7 @@ if(PADDLEINFERENCE_DIRECTORY)
|
|||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
set(PADDLEINFERENCE_URL_BASE "https://bj.bcebos.com/fastdeploy/third_libs/")
|
set(PADDLEINFERENCE_URL_BASE "https://bj.bcebos.com/fastdeploy/third_libs/")
|
||||||
set(PADDLEINFERENCE_VERSION "2.4-dev5")
|
set(PADDLEINFERENCE_VERSION "2.4-dev6")
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
if (WITH_GPU)
|
if (WITH_GPU)
|
||||||
set(PADDLEINFERENCE_FILE "paddle_inference-win-x64-gpu-trt-${PADDLEINFERENCE_VERSION}.zip")
|
set(PADDLEINFERENCE_FILE "paddle_inference-win-x64-gpu-trt-${PADDLEINFERENCE_VERSION}.zip")
|
||||||
|
@@ -16,6 +16,32 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# Create a symbol link to tensorrt library.
|
||||||
|
trt_directory = os.path.join(
|
||||||
|
os.path.dirname(os.path.abspath(__file__)),
|
||||||
|
"libs/third_libs/tensorrt/lib/")
|
||||||
|
if os.name != "nt" and os.path.exists(trt_directory):
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
for trt_lib in [
|
||||||
|
"libnvcaffe_parser.so", "libnvinfer_plugin.so", "libnvinfer.so",
|
||||||
|
"libnvonnxparser.so", "libnvparsers.so"
|
||||||
|
]:
|
||||||
|
dst = os.path.join(trt_directory, trt_lib)
|
||||||
|
src = os.path.join(trt_directory, trt_lib + ".8")
|
||||||
|
if not os.path.exists(dst):
|
||||||
|
try:
|
||||||
|
os.symlink(src, dst)
|
||||||
|
logging.info(
|
||||||
|
f"Create a symbolic link pointing to {src} named {dst}.")
|
||||||
|
except OSError as e:
|
||||||
|
logging.warning(
|
||||||
|
f"Failed to create a symbolic link pointing to {src} by an unprivileged user. "
|
||||||
|
"It may failed when you use Paddle TensorRT backend. "
|
||||||
|
"Please use administator privilege to import fastdeploy at first time."
|
||||||
|
)
|
||||||
|
break
|
||||||
|
logging.basicConfig(level=logging.NOTSET)
|
||||||
|
|
||||||
# Note(zhoushunjie): Fix the import order of paddle and fastdeploy library.
|
# Note(zhoushunjie): Fix the import order of paddle and fastdeploy library.
|
||||||
# This solution will be removed it when the confilct of paddle and
|
# This solution will be removed it when the confilct of paddle and
|
||||||
# fastdeploy is fixed.
|
# fastdeploy is fixed.
|
||||||
|
@@ -183,12 +183,12 @@ def process_libraries(current_dir):
|
|||||||
remain = False
|
remain = False
|
||||||
filename = os.path.split(f)[-1]
|
filename = os.path.split(f)[-1]
|
||||||
# Note(zhoushunjie): To add the trt libs below will increase the size of whl package by 450M.
|
# Note(zhoushunjie): To add the trt libs below will increase the size of whl package by 450M.
|
||||||
# if filename in [
|
if filename in [
|
||||||
# "libnvinfer_plugin.so",
|
"libnvinfer_plugin.so",
|
||||||
# "libnvinfer.so", "libnvonnxparser.so",
|
"libnvinfer.so", "libnvonnxparser.so",
|
||||||
# "libnvparsers.so", "libnvcaffe_parser.so"
|
"libnvparsers.so", "libnvcaffe_parser.so"
|
||||||
# ]:
|
]:
|
||||||
# continue
|
continue
|
||||||
|
|
||||||
for lib_prefix in ["libnvinfer_plugin.so.8.",
|
for lib_prefix in ["libnvinfer_plugin.so.8.",
|
||||||
"libnvinfer.so.8.", "libnvonnxparser.so.8.",
|
"libnvinfer.so.8.", "libnvonnxparser.so.8.",
|
||||||
|
@@ -30,8 +30,8 @@ def process_paddle_inference(paddle_inference_so_file):
|
|||||||
]
|
]
|
||||||
|
|
||||||
patchelf_exe = os.getenv("PATCHELF_EXE", "patchelf")
|
patchelf_exe = os.getenv("PATCHELF_EXE", "patchelf")
|
||||||
command = "{} --set-rpath '{}' {}".format(patchelf_exe, ":".join(rpaths),
|
command = "{} --force-rpath --set-rpath '{}' {}".format(
|
||||||
paddle_inference_so_file)
|
patchelf_exe, ":".join(rpaths), paddle_inference_so_file)
|
||||||
if platform.machine() != 'sw_64' and platform.machine() != 'mips64':
|
if platform.machine() != 'sw_64' and platform.machine() != 'mips64':
|
||||||
assert os.system(
|
assert os.system(
|
||||||
command) == 0, "patchelf {} failed, the command: {}".format(
|
command) == 0, "patchelf {} failed, the command: {}".format(
|
||||||
|
Reference in New Issue
Block a user