mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-12-24 13:28:13 +08:00
Merge pull request #261 from joey12300/add_ort_path
Add ORT_DIRECTORY compiler option
This commit is contained in:
@@ -51,6 +51,7 @@ option(ENABLE_VISION_VISUALIZE "Whether to enable visualize vision model result
|
||||
option(ENABLE_TEXT "Whether to enable text models usage." OFF)
|
||||
option(WITH_TESTING "Whether to compile with unittest." OFF)
|
||||
option(OPENCV_DIRECTORY "User can specify the installed opencv directory.")
|
||||
option(ORT_DIRECTORY "User can specify the installed onnxruntime directory.")
|
||||
|
||||
# Please don't open this flag now, some bugs exists.
|
||||
# option(ENABLE_OPENCV_CUDA "Whether to enable opencv with cuda, this will allow process image with GPU." OFF)
|
||||
|
||||
@@ -13,6 +13,7 @@ set(ENABLE_TEXT @ENABLE_TEXT@)
|
||||
# set(ENABLE_OPENCV_CUDA @ENABLE_OPENCV_CUDA@)
|
||||
set(LIBRARY_NAME @LIBRARY_NAME@)
|
||||
set(OPENCV_DIRECTORY @OPENCV_DIRECTORY@)
|
||||
set(ORT_DIRECTORY @ORT_DIRECTORY@)
|
||||
|
||||
set(FASTDEPLOY_LIBS "")
|
||||
set(FASTDEPLOY_INCS "")
|
||||
@@ -26,7 +27,13 @@ find_library(FDLIB ${LIBRARY_NAME} ${CMAKE_CURRENT_LIST_DIR}/lib NO_DEFAULT_PATH
|
||||
list(APPEND FASTDEPLOY_LIBS ${FDLIB})
|
||||
|
||||
if(ENABLE_ORT_BACKEND)
|
||||
find_library(ORT_LIB onnxruntime ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/onnxruntime/lib NO_DEFAULT_PATH)
|
||||
if (ORT_DIRECTORY)
|
||||
set(ORT_LIB_PATH ${ORT_DIRECTORY}/lib)
|
||||
else()
|
||||
set(ORT_LIB_PATH ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/onnxruntime/lib)
|
||||
endif()
|
||||
message(STATUS "The path of ONNXRuntime is ${ORT_LIB_PATH}.")
|
||||
find_library(ORT_LIB onnxruntime ${ORT_LIB_PATH} NO_DEFAULT_PATH)
|
||||
list(APPEND FASTDEPLOY_LIBS ${ORT_LIB})
|
||||
endif()
|
||||
|
||||
@@ -81,6 +88,7 @@ if(ENABLE_VISION)
|
||||
if (OPENCV_DIRECTORY)
|
||||
set(OpenCV_DIR ${OPENCV_DIRECTORY})
|
||||
endif()
|
||||
message(STATUS "The path of OpenCV is ${OpenCV_DIR}.")
|
||||
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR})
|
||||
list(APPEND FASTDEPLOY_INCS ${OpenCV_INCLUDE_DIRS})
|
||||
list(APPEND FASTDEPLOY_LIBS ${OpenCV_LIBS})
|
||||
|
||||
@@ -19,12 +19,26 @@ set(ONNXRUNTIME_PREFIX_DIR ${THIRD_PARTY_PATH}/onnxruntime)
|
||||
set(ONNXRUNTIME_SOURCE_DIR
|
||||
${THIRD_PARTY_PATH}/onnxruntime/src/${ONNXRUNTIME_PROJECT})
|
||||
set(ONNXRUNTIME_INSTALL_DIR ${THIRD_PARTY_PATH}/install/onnxruntime)
|
||||
set(ONNXRUNTIME_INC_DIR
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/include"
|
||||
|
||||
if (ORT_DIRECTORY)
|
||||
message(STATUS "Use the onnxruntime lib specified by user. The ONNXRuntime path: ${ORT_DIRECTORY}")
|
||||
STRING(REGEX REPLACE "\\\\" "/" ORT_DIRECTORY ${ORT_DIRECTORY})
|
||||
set(ONNXRUNTIME_INC_DIR
|
||||
"${ORT_DIRECTORY}/include"
|
||||
CACHE PATH "onnxruntime include directory." FORCE)
|
||||
set(ONNXRUNTIME_LIB_DIR
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/lib"
|
||||
|
||||
set(ONNXRUNTIME_LIB_DIR
|
||||
"${ORT_DIRECTORY}/lib"
|
||||
CACHE PATH "onnxruntime lib directory." FORCE)
|
||||
else()
|
||||
message(STATUS "Use the default onnxruntime lib. The ONNXRuntime path: ${ONNXRUNTIME_INSTALL_DIR}")
|
||||
set(ONNXRUNTIME_INC_DIR
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/include"
|
||||
CACHE PATH "onnxruntime include directory." FORCE)
|
||||
set(ONNXRUNTIME_LIB_DIR
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/lib"
|
||||
CACHE PATH "onnxruntime lib directory." FORCE)
|
||||
endif()
|
||||
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${ONNXRUNTIME_LIB_DIR}")
|
||||
|
||||
set(ONNXRUNTIME_VERSION "1.12.0")
|
||||
@@ -68,34 +82,36 @@ include_directories(${ONNXRUNTIME_INC_DIR}
|
||||
|
||||
if(WIN32)
|
||||
set(ONNXRUNTIME_LIB
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/lib/onnxruntime.lib"
|
||||
CACHE FILEPATH "ONNXRUNTIME static library." FORCE)
|
||||
"${ONNXRUNTIME_LIB_DIR}/onnxruntime.lib"
|
||||
CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
|
||||
elseif(APPLE)
|
||||
set(ONNXRUNTIME_LIB
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/lib/libonnxruntime.dylib"
|
||||
CACHE FILEPATH "ONNXRUNTIME static library." FORCE)
|
||||
"${ONNXRUNTIME_LIB_DIR}/libonnxruntime.dylib"
|
||||
CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
|
||||
else()
|
||||
set(ONNXRUNTIME_LIB
|
||||
"${ONNXRUNTIME_INSTALL_DIR}/lib/libonnxruntime.so"
|
||||
CACHE FILEPATH "ONNXRUNTIME static library." FORCE)
|
||||
"${ONNXRUNTIME_LIB_DIR}/libonnxruntime.so"
|
||||
CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(
|
||||
${ONNXRUNTIME_PROJECT}
|
||||
${EXTERNAL_PROJECT_LOG_ARGS}
|
||||
URL ${ONNXRUNTIME_URL}
|
||||
PREFIX ${ONNXRUNTIME_PREFIX_DIR}
|
||||
DOWNLOAD_NO_PROGRESS 1
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
INSTALL_COMMAND
|
||||
${CMAKE_COMMAND} -E remove_directory ${ONNXRUNTIME_INSTALL_DIR} &&
|
||||
${CMAKE_COMMAND} -E make_directory ${ONNXRUNTIME_INSTALL_DIR} &&
|
||||
${CMAKE_COMMAND} -E rename ${ONNXRUNTIME_SOURCE_DIR}/lib/ ${ONNXRUNTIME_INSTALL_DIR}/lib &&
|
||||
${CMAKE_COMMAND} -E copy_directory ${ONNXRUNTIME_SOURCE_DIR}/include
|
||||
${ONNXRUNTIME_INC_DIR}
|
||||
BUILD_BYPRODUCTS ${ONNXRUNTIME_LIB})
|
||||
if (NOT ORT_DIRECTORY)
|
||||
ExternalProject_Add(
|
||||
${ONNXRUNTIME_PROJECT}
|
||||
${EXTERNAL_PROJECT_LOG_ARGS}
|
||||
URL ${ONNXRUNTIME_URL}
|
||||
PREFIX ${ONNXRUNTIME_PREFIX_DIR}
|
||||
DOWNLOAD_NO_PROGRESS 1
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
INSTALL_COMMAND
|
||||
${CMAKE_COMMAND} -E remove_directory ${ONNXRUNTIME_INSTALL_DIR} &&
|
||||
${CMAKE_COMMAND} -E make_directory ${ONNXRUNTIME_INSTALL_DIR} &&
|
||||
${CMAKE_COMMAND} -E rename ${ONNXRUNTIME_SOURCE_DIR}/lib/ ${ONNXRUNTIME_INSTALL_DIR}/lib &&
|
||||
${CMAKE_COMMAND} -E copy_directory ${ONNXRUNTIME_SOURCE_DIR}/include
|
||||
${ONNXRUNTIME_INC_DIR}
|
||||
BUILD_BYPRODUCTS ${ONNXRUNTIME_LIB})
|
||||
endif()
|
||||
|
||||
add_library(external_onnxruntime STATIC IMPORTED GLOBAL)
|
||||
set_property(TARGET external_onnxruntime PROPERTY IMPORTED_LOCATION ${ONNXRUNTIME_LIB})
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
| TRT_DIRECTORY | 当启用TensorRT推理后端时,需通过此参数指定TensorRT路径 | TensorRT 8.4及以上 |
|
||||
| ENABLE_VISION | 启用视觉模型模块,默认为ON | |
|
||||
| ENABLE_TEXT | 启用文本模型模块,默认为ON | |
|
||||
| OPENCV_DIRECTORY | 指定已安装OpenCV库的路径,默认为空| 若没指定OpenCV库路径,则会自动下载安装OpenCV |
|
||||
| ORT_DIRECTORY | 指定已安装ONNXRuntime库的路径,默认为空| 若没指定ONNXRuntime库路径,则会自动下载安装ONNXRuntime |
|
||||
|
||||
|
||||
FastDeploy支持在编译时,用户选择自己的后端进行编译, 目前已经支持Paddle Inference、ONNXRuntime、TensorRT(加载ONNX格式)。FastDeploy已支持的模型已完成在不同后端上的验证工作,会自动根据编译时支持的后端进行选择,如若无可用后端则会给出相应提示(如YOLOv7目前仅支持ONNXRuntime/TensorRT后端,如若编译时未开启这两个后端,则推理时会提示无可用后端)。
|
||||
FastDeploy支持在编译时,用户选择自己的后端进行编译, 目前已经支持Paddle Inference、ONNXRuntime、TensorRT(加载ONNX格式)。FastDeploy已支持的模型已完成在不同后端上的验证工作,会自动根据编译时支持的后端进行选择,如若无可用后端则会给出相应提示(如YOLOv7目前仅支持ONNXRuntime/TensorRT后端,如若编译时未开启这两个后端,则推理时会提示无可用后端)。
|
||||
|
||||
@@ -16,7 +16,7 @@ import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
user_specified_dirs = ['@OPENCV_DIRECTORY@', ]
|
||||
user_specified_dirs = ['@OPENCV_DIRECTORY@', '@ORT_DIRECTORY@', ]
|
||||
|
||||
|
||||
def is_built_with_gpu() -> bool:
|
||||
@@ -147,11 +147,12 @@ if os.name == "nt":
|
||||
third_libs_dir = os.path.join(dirname, "libs")
|
||||
all_dirs = user_specified_dirs + [third_libs_dir]
|
||||
for dir in all_dirs:
|
||||
add_dll_search_dir(dir)
|
||||
for root, dirs, filenames in os.walk(dir):
|
||||
for d in dirs:
|
||||
if d == "lib" or d == "bin":
|
||||
add_dll_search_dir(os.path.join(dirname, root, d))
|
||||
if os.path.exists(dir):
|
||||
add_dll_search_dir(dir)
|
||||
for root, dirs, filenames in os.walk(dir):
|
||||
for d in dirs:
|
||||
if d == "lib" or d == "bin":
|
||||
add_dll_search_dir(os.path.join(dirname, root, d))
|
||||
|
||||
|
||||
try:
|
||||
|
||||
@@ -18,7 +18,7 @@ import shutil
|
||||
import subprocess
|
||||
import platform
|
||||
|
||||
user_specified_dirs = ['@OPENCV_DIRECTORY@', ]
|
||||
user_specified_dirs = ['@OPENCV_DIRECTORY@', '@ORT_DIRECTORY@', ]
|
||||
|
||||
def process_on_linux(current_dir):
|
||||
rpaths = ["$ORIGIN:$ORIGIN/libs"]
|
||||
@@ -39,9 +39,12 @@ def process_on_linux(current_dir):
|
||||
if d not in ["lib", "lib64"]:
|
||||
continue
|
||||
rel_path = os.path.relpath(os.path.join(root, d), libs_path)
|
||||
rpath = "$ORIGIN/" + rel_path
|
||||
if path in user_specified_dirs:
|
||||
# Note(zhoushunjie): Use the absolute path for user_specified_dirs
|
||||
rpath = os.path.join(root, d)
|
||||
else:
|
||||
rpath = "$ORIGIN/" + rel_path
|
||||
rpaths.append(rpath)
|
||||
|
||||
for lib in fd_libs:
|
||||
command = "patchelf --set-rpath '{}' {}".format(":".join(rpaths), lib)
|
||||
if platform.machine() != 'sw_64' and platform.machine() != 'mips64':
|
||||
|
||||
@@ -63,6 +63,7 @@ setup_configs["CUDA_DIRECTORY"] = os.getenv("CUDA_DIRECTORY",
|
||||
setup_configs["LIBRARY_NAME"] = PACKAGE_NAME
|
||||
setup_configs["PY_LIBRARY_NAME"] = PACKAGE_NAME + "_main"
|
||||
setup_configs["OPENCV_DIRECTORY"] = os.getenv("OPENCV_DIRECTORY", "")
|
||||
setup_configs["ORT_DIRECTORY"] = os.getenv("ORT_DIRECTORY", "")
|
||||
|
||||
if setup_configs["WITH_GPU"] == "ON":
|
||||
wheel_name = "fastdeploy-gpu-python"
|
||||
|
||||
Reference in New Issue
Block a user