Merge pull request #261 from joey12300/add_ort_path

Add ORT_DIRECTORY compiler option
This commit is contained in:
Jack Zhou
2022-09-22 11:36:18 +08:00
committed by GitHub
7 changed files with 69 additions and 37 deletions

View File

@@ -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)

View File

@@ -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})

View File

@@ -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})

View File

@@ -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后端如若编译时未开启这两个后端则推理时会提示无可用后端)。

View File

@@ -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:

View File

@@ -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':

View File

@@ -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"