From 9671005e8412f2d34297851fa51e0fc94fe17881 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Wed, 21 Sep 2022 22:27:03 +0800 Subject: [PATCH 01/18] add message status --- cmake/openvino.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index e5e276c91..aac2404fb 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -56,6 +56,7 @@ if(WIN32) elseif(APPLE) message(FATAL_ERROR "FastDeploy cannot ENABLE_OPENVINO_BACKEND in Mac OSX now.") if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64") + message("Cannot compile with openvino while in osx arm64 platform right now") set(OPENVINO_FILENAME "openvino-osx-arm64-${OPENVINO_VERSION}.tgz") else() set(OPENVINO_FILENAME "openvino-osx-x86_64-${OPENVINO_VERSION}.tgz") From 523610da685e18335df14fb0d65dd5c613680011 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 11:36:55 +0800 Subject: [PATCH 02/18] Update openvino url --- cmake/openvino.cmake | 104 +++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 62 deletions(-) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index aac2404fb..425caba65 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -21,35 +21,15 @@ set(OPENVINO_INSTALL_INC_DIR "${OPENVINO_INSTALL_DIR}/include" CACHE PATH "openvino install include directory." FORCE) -if (WIN32) - set(OPENVINO_SOURCE_DIR - ${THIRD_PARTY_PATH}/openvino/src/${OPENVINO_PROJECT}/openvino-win-x64-2022.1.0) - set(OPENVINO_INC_DIR - "${OPENVINO_INSTALL_DIR}/include" - "${OPENVINO_INSTALL_DIR}/include/ie" - CACHE PATH "openvino include directory." FORCE) - set(OPENVINO_LIB_DIR - "${OPENVINO_INSTALL_DIR}/lib/" - CACHE PATH "openvino lib directory." FORCE) -else() - set(OPENVINO_SOURCE_DIR - ${THIRD_PARTY_PATH}/openvino/src/${OPENVINO_PROJECT}) - set(OPENVINO_INC_DIR - "${OPENVINO_INSTALL_DIR}/include" - CACHE PATH "openvino include directory." FORCE) - set(OPENVINO_LIB_DIR - "${OPENVINO_INSTALL_DIR}/lib/" - CACHE PATH "openvino lib directory." FORCE) -endif() - - set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${OPENVINO_LIB_DIR}") -set(OPENVINO_VERSION "2022.3.0") +set(OPENVINO_VERSION "2022.2.0.dev20220829") set(OPENVINO_URL_PREFIX "https://bj.bcebos.com/fastdeploy/third_libs/") +set(COMPRESSED_SUFFIX ".tgz") if(WIN32) - set(OPENVINO_FILENAME "openvino-win-x64-${OPENVINO_VERSION}.zip") + set(OPENVINO_FILENAME "w_openvino_toolkit_windows_${OPENVINO_VERSION}") + set(COMPRESSED_SUFFIX ".zip") if(NOT CMAKE_CL_64) message(FATAL_ERROR "FastDeploy cannot ENABLE_OPENVINO_BACKEND in win32 now.") endif() @@ -57,56 +37,61 @@ elseif(APPLE) message(FATAL_ERROR "FastDeploy cannot ENABLE_OPENVINO_BACKEND in Mac OSX now.") if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64") message("Cannot compile with openvino while in osx arm64 platform right now") - set(OPENVINO_FILENAME "openvino-osx-arm64-${OPENVINO_VERSION}.tgz") else() - set(OPENVINO_FILENAME "openvino-osx-x86_64-${OPENVINO_VERSION}.tgz") + set(OPENVINO_FILENAME "m_openvino_toolkit_osx_${OPENVINO_VERSION}") endif() else() if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") message("Cannot compile with openvino while in linux-aarch64 platform") else() - set(OPENVINO_FILENAME "openvino-linux-x64-${OPENVINO_VERSION}.tgz") + set(OPENVINO_FILENAME "l_openvino_toolkit_ubuntu18_${OPENVINO_VERSION}") endif() endif() -set(OPENVINO_URL "${OPENVINO_URL_PREFIX}${OPENVINO_FILENAME}") +set(OPENVINO_URL "${OPENVINO_URL_PREFIX}${OPENVINO_FILENAME}${COMPRESSED_SUFFIX}") -include_directories(${OPENVINO_INC_DIR} -)# For OPENVINO code to include internal headers. +set(OPENVINO_SOURCE_DIR + ${THIRD_PARTY_PATH}/openvino/src/${OPENVINO_PROJECT}/runtime) +set(OPENVINO_INC_DIR + "${OPENVINO_INSTALL_DIR}/include" + "${OPENVINO_INSTALL_DIR}/include/ie" + CACHE PATH "openvino include directory." FORCE) +set(OPENVINO_LIB_DIR + "${OPENVINO_INSTALL_DIR}/lib/" + CACHE PATH "openvino lib directory." FORCE) + +# For OPENVINO code to include internal headers. +include_directories(${OPENVINO_INC_DIR}) if(WIN32) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/openvino.lib" CACHE FILEPATH "OPENVINO static library." FORCE) -elseif(APPLE) - set(OPENVINO_LIB - "${OPENVINO_INSTALL_DIR}/lib/libopenvino.dylib" - CACHE FILEPATH "OPENVINO static library." FORCE) -else() - set(OPENVINO_LIB - "${OPENVINO_INSTALL_DIR}/lib/libopenvino.so" - CACHE FILEPATH "OPENVINO static library." FORCE) -endif() - -if (WIN32) - ExternalProject_Add( - ${OPENVINO_PROJECT} - ${EXTERNAL_PROJECT_LOG_ARGS} - URL ${OPENVINO_URL} - PREFIX ${OPENVINO_PREFIX_DIR} - DOWNLOAD_NO_PROGRESS 1 - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - UPDATE_COMMAND "" - INSTALL_COMMAND - ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && + set(INSTALL_CMD "${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/bin/intel64/Release ${OPENVINO_INSTALL_DIR}/bin && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty - BUILD_BYPRODUCTS ${OPENVINO_LIB}) + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty") +elseif(APPLE) + set(OPENVINO_LIB + "${OPENVINO_INSTALL_DIR}/lib/libopenvino.dylib" + CACHE FILEPATH "OPENVINO static library." FORCE) + set(INSTALL_CMD "${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && + ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && + ${CMAKE_COMMAND} -E rename ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR}") + else() - ExternalProject_Add( + set(OPENVINO_LIB + "${OPENVINO_INSTALL_DIR}/lib/libopenvino.so" + CACHE FILEPATH "OPENVINO static library." FORCE) + set(INSTALL_CMD "${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && + ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && + ${CMAKE_COMMAND} -E rename ${OPENVINO_SOURCE_DIR}/lib/intel64 ${OPENVINO_INSTALL_DIR}/lib && + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR}") +endif() + +ExternalProject_Add( ${OPENVINO_PROJECT} ${EXTERNAL_PROJECT_LOG_ARGS} URL ${OPENVINO_URL} @@ -115,14 +100,9 @@ else() CONFIGURE_COMMAND "" BUILD_COMMAND "" UPDATE_COMMAND "" - INSTALL_COMMAND - ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E rename ${OPENVINO_SOURCE_DIR}/lib/intel64 ${OPENVINO_INSTALL_DIR}/lib && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include - ${OPENVINO_INSTALL_INC_DIR} + INSTALL_COMMAND ${INSTALL_CMD} BUILD_BYPRODUCTS ${OPENVINO_LIB}) -endif() + if(UNIX) add_custom_target(patchelf_openvino ALL COMMAND bash -c "sh ${PROJECT_SOURCE_DIR}/scripts/patch_lib.sh ${OPENVINO_INSTALL_DIR}/lib" DEPENDS ${LIBRARY_NAME}) From 177da78bb088a0ccb792e1814914d3ba54059f4b Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 15:20:12 +0800 Subject: [PATCH 03/18] Add tbb and tbb malloc dependency for openvino --- CMakeLists.txt | 1 - FastDeploy.cmake.in | 21 +++++++++++++++++---- cmake/openvino.cmake | 45 +++++++++++++++++++++++++++++++------------- 3 files changed, 49 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index daebf8dae..2e6d1ea15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,7 +170,6 @@ if(ENABLE_OPENVINO_BACKEND) add_definitions(-DENABLE_OPENVINO_BACKEND) list(APPEND ALL_DEPLOY_SRCS ${DEPLOY_OPENVINO_SRCS}) include(${PROJECT_SOURCE_DIR}/cmake/openvino.cmake) - list(APPEND DEPEND_LIBS external_openvino) endif() if(WITH_GPU) diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index bc85ff293..1ec0280d1 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -56,8 +56,23 @@ if(ENABLE_PADDLE_BACKEND) endif() if(ENABLE_OPENVINO_BACKEND) - find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/lib/ NO_DEFAULT_PATH) - list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIB}) + find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/lib/ + ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) + # Find tbb libs + set(TBB_LIBS_PREFIX "") + set(TBB_LIBS_SUFFIX "") + if ((NOT WIN32) AND (NOT APPLE)) + set(TBB_LIBS_PREFIX "lib") + set(TBB_LIBS_SUFFIX ".so.2") + endif() + find_library(TBB_LIB NAMES ${TBB_LIBS_PREFIX}tbb${TBB_LIBS_SUFFIX} + PATHS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) + find_library(TBB_MALLOC_LIB NAMES ${TBB_LIBS_PREFIX}tbbmalloc${TBB_LIBS_SUFFIX} + PATHS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) + message(STATUS "The path of openvino is ${OPENVINO_LIB}.") + message(STATUS "The path of tbb is ${TBB_LIB}.") + message(STATUS "The path of tbbmalloc is ${TBB_MALLOC_LIB}.") + list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIB} ${TBB_LIB} ${TBB_MALLOC_LIB}) endif() if(WITH_GPU) @@ -99,8 +114,6 @@ if (ENABLE_TEXT) find_library(FASTER_TOKENIZER_LIB core_tokenizers ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/lib NO_DEFAULT_PATH) list(APPEND FASTDEPLOY_LIBS ${FASTER_TOKENIZER_LIB}) list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/include) - # TODO (zhoushunjie): Will remove it later. - list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/include/faster_tokenizer) list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/faster_tokenizer/third_party/include) endif() diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 425caba65..a51089004 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -44,7 +44,7 @@ else() if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") message("Cannot compile with openvino while in linux-aarch64 platform") else() - set(OPENVINO_FILENAME "l_openvino_toolkit_ubuntu18_${OPENVINO_VERSION}") + set(OPENVINO_FILENAME "l_openvino_toolkit_centos7_${OPENVINO_VERSION}") endif() endif() set(OPENVINO_URL "${OPENVINO_URL_PREFIX}${OPENVINO_FILENAME}${COMPRESSED_SUFFIX}") @@ -65,30 +65,34 @@ include_directories(${OPENVINO_INC_DIR}) if(WIN32) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/openvino.lib" - CACHE FILEPATH "OPENVINO static library." FORCE) - set(INSTALL_CMD "${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && + CACHE FILEPATH "OPENVINO shared library." FORCE) + set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/bin/intel64/Release ${OPENVINO_INSTALL_DIR}/bin && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty") + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty) elseif(APPLE) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/libopenvino.dylib" - CACHE FILEPATH "OPENVINO static library." FORCE) - set(INSTALL_CMD "${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && + CACHE FILEPATH "OPENVINO shared library." FORCE) + set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E rename ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR}") + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty) else() set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/libopenvino.so" - CACHE FILEPATH "OPENVINO static library." FORCE) - set(INSTALL_CMD "${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && + CACHE FILEPATH "OPENVINO shared library." FORCE) + set(TBB_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/lib/libtbb.so.2") + set(TBB_MALLOC_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/lib/libtbbmalloc.so.2") + set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E rename ${OPENVINO_SOURCE_DIR}/lib/intel64 ${OPENVINO_INSTALL_DIR}/lib && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR}") + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64 ${OPENVINO_INSTALL_DIR}/lib && + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && + ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty) endif() ExternalProject_Add( @@ -105,9 +109,24 @@ ExternalProject_Add( if(UNIX) - add_custom_target(patchelf_openvino ALL COMMAND bash -c "sh ${PROJECT_SOURCE_DIR}/scripts/patch_lib.sh ${OPENVINO_INSTALL_DIR}/lib" DEPENDS ${LIBRARY_NAME}) + if (NOT APPLE) + add_custom_target(patchelf_openvino_tbb ALL COMMAND bash -c "patchelf --set-rpath '${ORIGIN}/../third_libs/install/openvino/3rdparty/tbb/lib' ${OPENVINO_INSTALL_DIR}/lib/*.so*" DEPENDS ${OPENVINO_PROJECT}) + endif() endif() add_library(external_openvino STATIC IMPORTED GLOBAL) set_property(TARGET external_openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB}) add_dependencies(external_openvino ${OPENVINO_PROJECT}) + +# # TBB is a multithread lib, can accelarate openvino +add_library(tbb STATIC IMPORTED GLOBAL) +set_property(TARGET tbb PROPERTY IMPORTED_LOCATION ${TBB_LIB}) +add_dependencies(tbb ${OPENVINO_PROJECT}) + +add_library(tbbmalloc STATIC IMPORTED GLOBAL) +set_property(TARGET tbbmalloc PROPERTY IMPORTED_LOCATION ${TBB_MALLOC_LIB}) +add_dependencies(tbbmalloc ${OPENVINO_PROJECT}) + +set(OPENVINO_LIBS external_openvino tbb tbbmalloc) + +list(APPEND DEPEND_LIBS ${OPENVINO_LIBS}) From df18c5647019cb0a60c3e396ee7a81f6938029af Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 15:50:15 +0800 Subject: [PATCH 04/18] Use find_package for tbb --- FastDeploy.cmake.in | 18 ++++-------------- cmake/openvino.cmake | 16 ++++------------ 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index 1ec0280d1..13892474a 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -59,20 +59,10 @@ if(ENABLE_OPENVINO_BACKEND) find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/lib/ ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) # Find tbb libs - set(TBB_LIBS_PREFIX "") - set(TBB_LIBS_SUFFIX "") - if ((NOT WIN32) AND (NOT APPLE)) - set(TBB_LIBS_PREFIX "lib") - set(TBB_LIBS_SUFFIX ".so.2") - endif() - find_library(TBB_LIB NAMES ${TBB_LIBS_PREFIX}tbb${TBB_LIBS_SUFFIX} - PATHS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) - find_library(TBB_MALLOC_LIB NAMES ${TBB_LIBS_PREFIX}tbbmalloc${TBB_LIBS_SUFFIX} - PATHS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) - message(STATUS "The path of openvino is ${OPENVINO_LIB}.") - message(STATUS "The path of tbb is ${TBB_LIB}.") - message(STATUS "The path of tbbmalloc is ${TBB_MALLOC_LIB}.") - list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIB} ${TBB_LIB} ${TBB_MALLOC_LIB}) + find_package(TBB REQUIRED PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/") + set(OPENVINO_LIBS ${OPENVINO_LIB} ${TBB_IMPORTED_TARGETS}) + message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") + list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIBS}) endif() if(WITH_GPU) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index a51089004..7ce2929af 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -86,8 +86,7 @@ else() set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/libopenvino.so" CACHE FILEPATH "OPENVINO shared library." FORCE) - set(TBB_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/lib/libtbb.so.2") - set(TBB_MALLOC_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/lib/libtbbmalloc.so.2") + set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64 ${OPENVINO_INSTALL_DIR}/lib && @@ -118,15 +117,8 @@ add_library(external_openvino STATIC IMPORTED GLOBAL) set_property(TARGET external_openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB}) add_dependencies(external_openvino ${OPENVINO_PROJECT}) -# # TBB is a multithread lib, can accelarate openvino -add_library(tbb STATIC IMPORTED GLOBAL) -set_property(TARGET tbb PROPERTY IMPORTED_LOCATION ${TBB_LIB}) -add_dependencies(tbb ${OPENVINO_PROJECT}) - -add_library(tbbmalloc STATIC IMPORTED GLOBAL) -set_property(TARGET tbbmalloc PROPERTY IMPORTED_LOCATION ${TBB_MALLOC_LIB}) -add_dependencies(tbbmalloc ${OPENVINO_PROJECT}) - -set(OPENVINO_LIBS external_openvino tbb tbbmalloc) +find_package(TBB REQUIRED PATHS "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/") +set(OPENVINO_LIBS external_openvino ${TBB_IMPORTED_TARGETS}) +message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") list(APPEND DEPEND_LIBS ${OPENVINO_LIBS}) From 5251cc2e8eb9cb9ff53ea308010c36f705f77516 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 15:54:52 +0800 Subject: [PATCH 05/18] remove tbb path --- cmake/eigen.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmake/eigen.cmake b/cmake/eigen.cmake index d688adf43..2248ee0fd 100644 --- a/cmake/eigen.cmake +++ b/cmake/eigen.cmake @@ -17,8 +17,7 @@ include(ExternalProject) # update eigen to the commit id f612df27 on 03/16/2021 set(EIGEN_PREFIX_DIR ${THIRD_PARTY_PATH}/eigen3) set(EIGEN_SOURCE_DIR ${THIRD_PARTY_PATH}/eigen3/src/extern_eigen3) -#set(EIGEN_REPOSITORY https://gitlab.com/libeigen/eigen.git) -set(EIGEN_REPOSITORY https://gitee.com/jiangjiajun/eigen.git) +set(EIGEN_REPOSITORY https://gitlab.com/libeigen/eigen.git) set(EIGEN_TAG f612df273689a19d25b45ca4f8269463207c4fee) if(WIN32) @@ -64,4 +63,4 @@ add_dependencies(eigen3 extern_eigen3) # sw not support thread_local semantic if(WITH_SW) add_definitions(-DEIGEN_AVOID_THREAD_LOCAL) -endif() \ No newline at end of file +endif() From 4cf835479bca37bf1b35c9be6631855ce62f3f76 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 15:59:33 +0800 Subject: [PATCH 06/18] remove tbb path --- FastDeploy.cmake.in | 3 +-- cmake/eigen.cmake | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index 13892474a..0cda4457f 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -56,8 +56,7 @@ if(ENABLE_PADDLE_BACKEND) endif() if(ENABLE_OPENVINO_BACKEND) - find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/lib/ - ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/lib/ NO_DEFAULT_PATH) + find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/lib/ NO_DEFAULT_PATH) # Find tbb libs find_package(TBB REQUIRED PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/") set(OPENVINO_LIBS ${OPENVINO_LIB} ${TBB_IMPORTED_TARGETS}) diff --git a/cmake/eigen.cmake b/cmake/eigen.cmake index 2248ee0fd..d1a9332b2 100644 --- a/cmake/eigen.cmake +++ b/cmake/eigen.cmake @@ -18,6 +18,7 @@ include(ExternalProject) set(EIGEN_PREFIX_DIR ${THIRD_PARTY_PATH}/eigen3) set(EIGEN_SOURCE_DIR ${THIRD_PARTY_PATH}/eigen3/src/extern_eigen3) set(EIGEN_REPOSITORY https://gitlab.com/libeigen/eigen.git) +#set(EIGEN_REPOSITORY https://gitee.com/jiangjiajun/eigen.git) set(EIGEN_TAG f612df273689a19d25b45ca4f8269463207c4fee) if(WIN32) From f4b4264d73846f7c60f68472407a79359143acca Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 16:03:41 +0800 Subject: [PATCH 07/18] remove fatal error in mac --- cmake/openvino.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 7ce2929af..5217acd99 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -34,7 +34,6 @@ if(WIN32) message(FATAL_ERROR "FastDeploy cannot ENABLE_OPENVINO_BACKEND in win32 now.") endif() elseif(APPLE) - message(FATAL_ERROR "FastDeploy cannot ENABLE_OPENVINO_BACKEND in Mac OSX now.") if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64") message("Cannot compile with openvino while in osx arm64 platform right now") else() From 13580aeb0d223b7dd2468de7b9ddb35918de8f46 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 17:44:31 +0800 Subject: [PATCH 08/18] use download_and_decompress instead of external_add --- FastDeploy.cmake.in | 5 ++-- cmake/openvino.cmake | 70 +++++++++++++------------------------------- 2 files changed, 23 insertions(+), 52 deletions(-) diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index 0cda4457f..125ce8bd4 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -56,9 +56,10 @@ if(ENABLE_PADDLE_BACKEND) endif() if(ENABLE_OPENVINO_BACKEND) - find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/lib/ NO_DEFAULT_PATH) + set(OPENVINO_FILENAME @OPENVINO_FILENAME@) + find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/lib/ NO_DEFAULT_PATH) # Find tbb libs - find_package(TBB REQUIRED PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/openvino/3rdparty/tbb/") + find_package(TBB REQUIRED PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/3rdparty/tbb/") set(OPENVINO_LIBS ${OPENVINO_LIB} ${TBB_IMPORTED_TARGETS}) message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIBS}) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 5217acd99..06f289f64 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -15,13 +15,6 @@ include(ExternalProject) set(OPENVINO_PROJECT "extern_openvino") -set(OPENVINO_PREFIX_DIR ${THIRD_PARTY_PATH}/openvino) -set(OPENVINO_INSTALL_DIR ${THIRD_PARTY_PATH}/install/openvino) -set(OPENVINO_INSTALL_INC_DIR - "${OPENVINO_INSTALL_DIR}/include" - CACHE PATH "openvino install include directory." FORCE) - -set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${OPENVINO_LIB_DIR}") set(OPENVINO_VERSION "2022.2.0.dev20220829") set(OPENVINO_URL_PREFIX "https://bj.bcebos.com/fastdeploy/third_libs/") @@ -48,73 +41,50 @@ else() endif() set(OPENVINO_URL "${OPENVINO_URL_PREFIX}${OPENVINO_FILENAME}${COMPRESSED_SUFFIX}") -set(OPENVINO_SOURCE_DIR - ${THIRD_PARTY_PATH}/openvino/src/${OPENVINO_PROJECT}/runtime) -set(OPENVINO_INC_DIR + +set(OPENVINO_INSTALL_DIR ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/runtime) +set(OPENVINO_INSTALL_INC_DIR "${OPENVINO_INSTALL_DIR}/include" "${OPENVINO_INSTALL_DIR}/include/ie" - CACHE PATH "openvino include directory." FORCE) + CACHE PATH "openvino install include directory." FORCE) + set(OPENVINO_LIB_DIR "${OPENVINO_INSTALL_DIR}/lib/" + "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/lib/" CACHE PATH "openvino lib directory." FORCE) +set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${OPENVINO_LIB_DIR}") # For OPENVINO code to include internal headers. -include_directories(${OPENVINO_INC_DIR}) +include_directories(${OPENVINO_INSTALL_INC_DIR}) + +download_and_decompress(${OPENVINO_URL} + ${CMAKE_CURRENT_BINARY_DIR}/${OPENVINO_FILENAME}${COMPRESSED_SUFFIX} + ${THIRD_PARTY_PATH}/install) if(WIN32) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/openvino.lib" CACHE FILEPATH "OPENVINO shared library." FORCE) - set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/bin/intel64/Release ${OPENVINO_INSTALL_DIR}/bin && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty) + file(RENAME ${OPENVINO_INSTALL_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib) + file(RENAME ${OPENVINO_INSTALL_DIR}/bin/intel64/Release ${OPENVINO_INSTALL_DIR}/bin) elseif(APPLE) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/libopenvino.dylib" CACHE FILEPATH "OPENVINO shared library." FORCE) - set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty) - + file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/Release/*) + file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) + file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) else() set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/libopenvino.so" CACHE FILEPATH "OPENVINO shared library." FORCE) - - set(INSTALL_CMD ${CMAKE_COMMAND} -E remove_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E make_directory ${OPENVINO_INSTALL_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/lib/intel64 ${OPENVINO_INSTALL_DIR}/lib && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/include ${OPENVINO_INSTALL_INC_DIR} && - ${CMAKE_COMMAND} -E copy_directory ${OPENVINO_SOURCE_DIR}/3rdparty ${OPENVINO_INSTALL_DIR}/3rdparty) -endif() - -ExternalProject_Add( - ${OPENVINO_PROJECT} - ${EXTERNAL_PROJECT_LOG_ARGS} - URL ${OPENVINO_URL} - PREFIX ${OPENVINO_PREFIX_DIR} - DOWNLOAD_NO_PROGRESS 1 - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - UPDATE_COMMAND "" - INSTALL_COMMAND ${INSTALL_CMD} - BUILD_BYPRODUCTS ${OPENVINO_LIB}) - - -if(UNIX) - if (NOT APPLE) - add_custom_target(patchelf_openvino_tbb ALL COMMAND bash -c "patchelf --set-rpath '${ORIGIN}/../third_libs/install/openvino/3rdparty/tbb/lib' ${OPENVINO_INSTALL_DIR}/lib/*.so*" DEPENDS ${OPENVINO_PROJECT}) - endif() + file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/*) + file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) + file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) endif() add_library(external_openvino STATIC IMPORTED GLOBAL) set_property(TARGET external_openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB}) -add_dependencies(external_openvino ${OPENVINO_PROJECT}) find_package(TBB REQUIRED PATHS "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/") set(OPENVINO_LIBS external_openvino ${TBB_IMPORTED_TARGETS}) From 50117fa6d218b8f6cea786afec340b51b6816058 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 19:26:11 +0800 Subject: [PATCH 09/18] Fix mac python lib link --- python/scripts/process_libraries.py.in | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/python/scripts/process_libraries.py.in b/python/scripts/process_libraries.py.in index 223308711..d568c7884 100644 --- a/python/scripts/process_libraries.py.in +++ b/python/scripts/process_libraries.py.in @@ -39,7 +39,7 @@ 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) - if path in user_specified_dirs: + if path in user_specified_dirs: # Note(zhoushunjie): Use the absolute path for user_specified_dirs rpath = os.path.join(root, d) else: @@ -78,14 +78,18 @@ def process_on_mac(current_dir): for d in dirs: if d not in ["lib", "lib64"]: continue - rel_path = rel_path = os.path.relpath(os.path.join(root, d), libs_path) - rpath = "$loader_path/" + rel_path - for lib in fd_libs: - pre_commands.append( - "install_name_tool -delete_rpath '@loader_path/{}' {}".format( - rpath, lib)) - commands.append("install_name_tool -add_rpath 'loader_path/{}' {}". - format(rpath, lib)) + rel_path = os.path.relpath(os.path.join(root, d), libs_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 = "$loader_path/" + rel_path + for lib in fd_libs: + pre_commands.append( + "install_name_tool -delete_rpath '@loader_path/{}' {}".format( + rpath, lib)) + commands.append("install_name_tool -add_rpath 'loader_path/{}' {}". + format(rpath, lib)) for cmd in pre_commands: try: @@ -97,7 +101,6 @@ def process_on_mac(current_dir): assert subprocess.Popen( cmd, shell=True) != 0, "Execute command failed: {}".format(cmd) - def process_on_windows(current_dir): libs_path = os.path.join(current_dir, "fastdeploy", "libs") third_libs_path = os.path.join(libs_path, "third_libs") From 99062df8665ba5a2a21fd3c49e9e57bc3691897c Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Thu, 22 Sep 2022 21:19:49 +0800 Subject: [PATCH 10/18] remove useless file in openvino --- cmake/openvino.cmake | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 06f289f64..8ce8040f4 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -65,8 +65,13 @@ if(WIN32) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/openvino.lib" CACHE FILEPATH "OPENVINO shared library." FORCE) - file(RENAME ${OPENVINO_INSTALL_DIR}/lib/intel64/Release ${OPENVINO_INSTALL_DIR}/lib) - file(RENAME ${OPENVINO_INSTALL_DIR}/bin/intel64/Release ${OPENVINO_INSTALL_DIR}/bin) + file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/Release/*) + file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) + file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) + + file(GLOB_RECURSE OPENVINO_BIN_FILES ${OPENVINO_INSTALL_DIR}/bin/intel64/Release/*) + file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/bin/) + file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/bin/intel64) elseif(APPLE) set(OPENVINO_LIB "${OPENVINO_INSTALL_DIR}/lib/libopenvino.dylib" @@ -83,6 +88,12 @@ else() file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) endif() +file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/docs) +file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/install_dependencies) +file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/samples) +file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/setupvars.sh) +file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/tools) + add_library(external_openvino STATIC IMPORTED GLOBAL) set_property(TARGET external_openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB}) From 749319e2a864040e3007ad240514af812deb53c2 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Sat, 24 Sep 2022 11:01:47 +0800 Subject: [PATCH 11/18] Use omp version in linux --- cmake/openvino.cmake | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 8ce8040f4..a01cd0936 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -96,9 +96,18 @@ file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/tools) add_library(external_openvino STATIC IMPORTED GLOBAL) set_property(TARGET external_openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB}) +set(OPENVINO_LIBS external_openvino) -find_package(TBB REQUIRED PATHS "${OPENVINO_INSTALL_DIR}/3rdparty/tbb/") -set(OPENVINO_LIBS external_openvino ${TBB_IMPORTED_TARGETS}) +find_package(TBB PATHS "${OPENVINO_INSTALL_DIR}/3rdparty/tbb") +if (TBB_FOUND) + list(APPEND OPENVINO_LIBS ${TBB_IMPORTED_TARGETS}) +else() + set(OMP_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/omp/lib/libiomp5.so") + add_library(omp STATIC IMPORTED GLOBAL) + set_property(TARGET omp PROPERTY IMPORTED_LOCATION + ${OMP_LIB}) + list(APPEND OPENVINO_LIBS omp) +endif() message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") list(APPEND DEPEND_LIBS ${OPENVINO_LIBS}) From c53d8fd82c09bc5e44e3c6ba3a309d6d5ad3903a Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Sun, 25 Sep 2022 11:43:16 +0800 Subject: [PATCH 12/18] Fix windows compile bug --- FastDeploy.cmake.in | 13 +++++++++++-- cmake/openvino.cmake | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index 125ce8bd4..5a50fe7ae 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -58,9 +58,18 @@ endif() if(ENABLE_OPENVINO_BACKEND) set(OPENVINO_FILENAME @OPENVINO_FILENAME@) find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/lib/ NO_DEFAULT_PATH) + set(OPENVINO_LIBS ${OPENVINO_LIB}) # Find tbb libs - find_package(TBB REQUIRED PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/3rdparty/tbb/") - set(OPENVINO_LIBS ${OPENVINO_LIB} ${TBB_IMPORTED_TARGETS}) + find_package(TBB PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/3rdparty/tbb/") + if (TBB_FOUND) + list(APPEND OPENVINO_LIBS ${TBB_IMPORTED_TARGETS}) + else() + # TODO(zhoushunjie): Use openvino with tbb on linux in future. + set(OMP_LIB "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/3rdparty/omp/lib/libiomp5.so") + add_library(omp STATIC IMPORTED GLOBAL) + set_property(TARGET omp PROPERTY IMPORTED_LOCATION ${OMP_LIB}) + list(APPEND OPENVINO_LIBS omp) + endif() message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIBS}) endif() diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index a01cd0936..3e3f518b5 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -67,10 +67,11 @@ if(WIN32) CACHE FILEPATH "OPENVINO shared library." FORCE) file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/Release/*) file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) - file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) file(GLOB_RECURSE OPENVINO_BIN_FILES ${OPENVINO_INSTALL_DIR}/bin/intel64/Release/*) file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/bin/) + + file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/bin/intel64) elseif(APPLE) set(OPENVINO_LIB @@ -102,6 +103,7 @@ find_package(TBB PATHS "${OPENVINO_INSTALL_DIR}/3rdparty/tbb") if (TBB_FOUND) list(APPEND OPENVINO_LIBS ${TBB_IMPORTED_TARGETS}) else() + # TODO(zhoushunjie): Use openvino with tbb on linux in future. set(OMP_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/omp/lib/libiomp5.so") add_library(omp STATIC IMPORTED GLOBAL) set_property(TARGET omp PROPERTY IMPORTED_LOCATION From 870c22c8e9dad3013544cbd258641afa1051bb7e Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Sun, 25 Sep 2022 11:56:30 +0800 Subject: [PATCH 13/18] fix windows bug --- cmake/openvino.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 3e3f518b5..03c437ba2 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -67,11 +67,10 @@ if(WIN32) CACHE FILEPATH "OPENVINO shared library." FORCE) file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/Release/*) file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) + file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) file(GLOB_RECURSE OPENVINO_BIN_FILES ${OPENVINO_INSTALL_DIR}/bin/intel64/Release/*) - file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/bin/) - - file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) + file(COPY ${OPENVINO_BIN_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/bin/) file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/bin/intel64) elseif(APPLE) set(OPENVINO_LIB From f142fcdf60008fd5dda9e723d580da2aa50ace72 Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Sun, 25 Sep 2022 18:26:04 +0800 Subject: [PATCH 14/18] Add get_openvino_libs --- CMakeLists.txt | 1 + FastDeploy.cmake.in | 18 +++++------------- FastDeployUtils.cmake | 17 +++++++++++++++++ cmake/openvino.cmake | 32 ++++---------------------------- 4 files changed, 27 insertions(+), 41 deletions(-) create mode 100644 FastDeployUtils.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e6d1ea15..d9995ca69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -353,6 +353,7 @@ install( ${PROJECT_SOURCE_DIR}/ThirdPartyNotices.txt ${PROJECT_SOURCE_DIR}/VERSION_NUMBER ${PROJECT_SOURCE_DIR}/FastDeploy.cmake + ${PROJECT_SOURCE_DIR}/FastDeployUtils.cmake DESTINATION ${CMAKE_INSTALL_PREFIX} ) install( diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index 5a50fe7ae..f11aea9f6 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -19,6 +19,9 @@ set(FASTDEPLOY_LIBS "") set(FASTDEPLOY_INCS "") list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/include) +# Note(zhoushunjie): include some useful utils function +include(${CMAKE_CURRENT_LIST_DIR}/FastDeployUtils.cmake) + if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 11) endif() @@ -57,19 +60,7 @@ endif() if(ENABLE_OPENVINO_BACKEND) set(OPENVINO_FILENAME @OPENVINO_FILENAME@) - find_library(OPENVINO_LIB openvino ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/lib/ NO_DEFAULT_PATH) - set(OPENVINO_LIBS ${OPENVINO_LIB}) - # Find tbb libs - find_package(TBB PATHS "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/3rdparty/tbb/") - if (TBB_FOUND) - list(APPEND OPENVINO_LIBS ${TBB_IMPORTED_TARGETS}) - else() - # TODO(zhoushunjie): Use openvino with tbb on linux in future. - set(OMP_LIB "${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime/3rdparty/omp/lib/libiomp5.so") - add_library(omp STATIC IMPORTED GLOBAL) - set_property(TARGET omp PROPERTY IMPORTED_LOCATION ${OMP_LIB}) - list(APPEND OPENVINO_LIBS omp) - endif() + get_openvino_libs(${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${OPENVINO_FILENAME}/runtime) message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") list(APPEND FASTDEPLOY_LIBS ${OPENVINO_LIBS}) endif() @@ -143,6 +134,7 @@ endif() message(STATUS " ENABLE_TRT_BACKEND : ${ENABLE_TRT_BACKEND}") message(STATUS " ENABLE_VISION : ${ENABLE_VISION}") message(STATUS " ENABLE_TEXT : ${ENABLE_TEXT}") +message(STATUS " DEPENDENCY_LIBS : ${FASTDEPLOY_LIBS}") if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.4.0") diff --git a/FastDeployUtils.cmake b/FastDeployUtils.cmake new file mode 100644 index 000000000..3c392af95 --- /dev/null +++ b/FastDeployUtils.cmake @@ -0,0 +1,17 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 3.12) + +function(get_openvino_libs OPENVINO_RUNTIME_DIR) + set(LIB_LIST "") + find_library(OPENVINO_LIB openvino ${OPENVINO_RUNTIME_DIR}/lib/ NO_DEFAULT_PATH) + list(APPEND LIB_LIST ${OPENVINO_LIB}) + + find_package(TBB PATHS "${OPENVINO_RUNTIME_DIR}/3rdparty/tbb") + if (TBB_FOUND) + list(APPEND LIB_LIST ${TBB_IMPORTED_TARGETS}) + else() + # TODO(zhoushunjie): Use openvino with tbb on linux in future. + set(OMP_LIB "${OPENVINO_RUNTIME_DIR}/3rdparty/omp/lib/libiomp5.so") + list(APPEND LIB_LIST ${OMP_LIB}) + endif() + set(OPENVINO_LIBS ${LIB_LIST} PARENT_SCOPE) +endfunction() \ No newline at end of file diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index 03c437ba2..bba751177 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -41,7 +41,6 @@ else() endif() set(OPENVINO_URL "${OPENVINO_URL_PREFIX}${OPENVINO_FILENAME}${COMPRESSED_SUFFIX}") - set(OPENVINO_INSTALL_DIR ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/runtime) set(OPENVINO_INSTALL_INC_DIR "${OPENVINO_INSTALL_DIR}/include" @@ -62,9 +61,6 @@ download_and_decompress(${OPENVINO_URL} ${THIRD_PARTY_PATH}/install) if(WIN32) - set(OPENVINO_LIB - "${OPENVINO_INSTALL_DIR}/lib/openvino.lib" - CACHE FILEPATH "OPENVINO shared library." FORCE) file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/Release/*) file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) @@ -73,16 +69,10 @@ if(WIN32) file(COPY ${OPENVINO_BIN_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/bin/) file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/bin/intel64) elseif(APPLE) - set(OPENVINO_LIB - "${OPENVINO_INSTALL_DIR}/lib/libopenvino.dylib" - CACHE FILEPATH "OPENVINO shared library." FORCE) file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/Release/*) file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) else() - set(OPENVINO_LIB - "${OPENVINO_INSTALL_DIR}/lib/libopenvino.so" - CACHE FILEPATH "OPENVINO shared library." FORCE) file(GLOB_RECURSE OPENVINO_LIB_FILES ${OPENVINO_INSTALL_DIR}/lib/intel64/*) file(COPY ${OPENVINO_LIB_FILES} DESTINATION ${OPENVINO_INSTALL_DIR}/lib/) file(REMOVE_RECURSE ${OPENVINO_INSTALL_DIR}/lib/intel64) @@ -94,21 +84,7 @@ file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/samples) file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/setupvars.sh) file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/tools) -add_library(external_openvino STATIC IMPORTED GLOBAL) -set_property(TARGET external_openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB}) -set(OPENVINO_LIBS external_openvino) - -find_package(TBB PATHS "${OPENVINO_INSTALL_DIR}/3rdparty/tbb") -if (TBB_FOUND) - list(APPEND OPENVINO_LIBS ${TBB_IMPORTED_TARGETS}) -else() - # TODO(zhoushunjie): Use openvino with tbb on linux in future. - set(OMP_LIB "${OPENVINO_INSTALL_DIR}/3rdparty/omp/lib/libiomp5.so") - add_library(omp STATIC IMPORTED GLOBAL) - set_property(TARGET omp PROPERTY IMPORTED_LOCATION - ${OMP_LIB}) - list(APPEND OPENVINO_LIBS omp) -endif() -message(STATUS "OPENVINO_LIBS = ${OPENVINO_LIBS}") - -list(APPEND DEPEND_LIBS ${OPENVINO_LIBS}) +include(${PROJECT_SOURCE_DIR}/FastDeployUtils.cmake) +get_openvino_libs(${OPENVINO_INSTALL_DIR}) +message("OPENVINO_LIBS = ${OPENVINO_LIBS}") +list(APPEND DEPEND_LIBS ${OPENVINO_LIBS}) \ No newline at end of file From f493bdf500293451609c5a3f9b38c680c1e1ffcb Mon Sep 17 00:00:00 2001 From: leiqing <54695910+leiqing1@users.noreply.github.com> Date: Mon, 26 Sep 2022 09:36:39 +0800 Subject: [PATCH 15/18] Update README_CN.md --- README_CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_CN.md b/README_CN.md index 85f3fa643..662e63cb0 100644 --- a/README_CN.md +++ b/README_CN.md @@ -285,7 +285,7 @@ int main(int argc, char* argv[]) { - **加入社区👬:** 微信扫描二维码,进入**FastDeploy技术交流群**
- +
## Acknowledge From 719ea8f004b1d9b7dd867106e35beda47810814c Mon Sep 17 00:00:00 2001 From: leiqing <54695910+leiqing1@users.noreply.github.com> Date: Mon, 26 Sep 2022 09:37:15 +0800 Subject: [PATCH 16/18] Update README_EN.md --- README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_EN.md b/README_EN.md index 23c3fa6e6..4b6de076a 100644 --- a/README_EN.md +++ b/README_EN.md @@ -299,7 +299,7 @@ Notes: - **Join Us👬:** Scan the QR code via WeChat to join our **FastDeploy technology communication group**
- +
## Acknowledge From ad03e771dd2d6e226d78174c6e9ed35159664d1a Mon Sep 17 00:00:00 2001 From: zhoushunjie Date: Mon, 26 Sep 2022 11:24:57 +0800 Subject: [PATCH 17/18] Add remove_duplicate_libraries function --- CMakeLists.txt | 2 +- FastDeploy.cmake.in | 5 ++++- FastDeployUtils.cmake | 17 ----------------- cmake/openvino.cmake | 1 - cmake/utils.cmake | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 38 insertions(+), 20 deletions(-) delete mode 100644 FastDeployUtils.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index d9995ca69..2b556cdc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -353,7 +353,7 @@ install( ${PROJECT_SOURCE_DIR}/ThirdPartyNotices.txt ${PROJECT_SOURCE_DIR}/VERSION_NUMBER ${PROJECT_SOURCE_DIR}/FastDeploy.cmake - ${PROJECT_SOURCE_DIR}/FastDeployUtils.cmake + ${PROJECT_SOURCE_DIR}/cmake/utils.cmake DESTINATION ${CMAKE_INSTALL_PREFIX} ) install( diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index f11aea9f6..c914ce9c6 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -20,7 +20,7 @@ set(FASTDEPLOY_INCS "") list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/include) # Note(zhoushunjie): include some useful utils function -include(${CMAKE_CURRENT_LIST_DIR}/FastDeployUtils.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/utils.cmake) if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 11) @@ -112,6 +112,9 @@ if(ENABLE_PADDLE_FRONTEND) list(APPEND FASTDEPLOY_LIBS ${PADDLE2ONNX_LIB}) endif() +message("FASTDEPLOY_LIBS = ${FASTDEPLOY_LIBS}") +remove_duplicate_libraries(FASTDEPLOY_LIBS) + # Print compiler information message(STATUS "") message(STATUS "*************FastDeploy Building Summary**********") diff --git a/FastDeployUtils.cmake b/FastDeployUtils.cmake deleted file mode 100644 index 3c392af95..000000000 --- a/FastDeployUtils.cmake +++ /dev/null @@ -1,17 +0,0 @@ -CMAKE_MINIMUM_REQUIRED (VERSION 3.12) - -function(get_openvino_libs OPENVINO_RUNTIME_DIR) - set(LIB_LIST "") - find_library(OPENVINO_LIB openvino ${OPENVINO_RUNTIME_DIR}/lib/ NO_DEFAULT_PATH) - list(APPEND LIB_LIST ${OPENVINO_LIB}) - - find_package(TBB PATHS "${OPENVINO_RUNTIME_DIR}/3rdparty/tbb") - if (TBB_FOUND) - list(APPEND LIB_LIST ${TBB_IMPORTED_TARGETS}) - else() - # TODO(zhoushunjie): Use openvino with tbb on linux in future. - set(OMP_LIB "${OPENVINO_RUNTIME_DIR}/3rdparty/omp/lib/libiomp5.so") - list(APPEND LIB_LIST ${OMP_LIB}) - endif() - set(OPENVINO_LIBS ${LIB_LIST} PARENT_SCOPE) -endfunction() \ No newline at end of file diff --git a/cmake/openvino.cmake b/cmake/openvino.cmake index bba751177..e07259965 100644 --- a/cmake/openvino.cmake +++ b/cmake/openvino.cmake @@ -84,7 +84,6 @@ file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/samples) file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/setupvars.sh) file(REMOVE_RECURSE ${THIRD_PARTY_PATH}/install/${OPENVINO_FILENAME}/tools) -include(${PROJECT_SOURCE_DIR}/FastDeployUtils.cmake) get_openvino_libs(${OPENVINO_INSTALL_DIR}) message("OPENVINO_LIBS = ${OPENVINO_LIBS}") list(APPEND DEPEND_LIBS ${OPENVINO_LIBS}) \ No newline at end of file diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 1a203ee96..3c5833f77 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -26,3 +26,36 @@ function(download_and_decompress url filename decompress_dir) message("Decompress file ${filename} ...") execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${filename} WORKING_DIRECTORY ${decompress_dir}) endfunction() + +function(get_openvino_libs OPENVINO_RUNTIME_DIR) + set(LIB_LIST "") + find_library(OPENVINO_LIB openvino ${OPENVINO_RUNTIME_DIR}/lib/ NO_DEFAULT_PATH) + list(APPEND LIB_LIST ${OPENVINO_LIB}) + + find_package(TBB PATHS "${OPENVINO_RUNTIME_DIR}/3rdparty/tbb") + if (TBB_FOUND) + list(APPEND LIB_LIST ${TBB_IMPORTED_TARGETS}) + else() + # TODO(zhoushunjie): Use openvino with tbb on linux in future. + set(OMP_LIB "${OPENVINO_RUNTIME_DIR}/3rdparty/omp/lib/libiomp5.so") + list(APPEND LIB_LIST ${OMP_LIB}) + endif() + set(OPENVINO_LIBS ${LIB_LIST} PARENT_SCOPE) +endfunction() + +function(remove_duplicate_libraries libraries) + list(LENGTH ${libraries} lib_length) + set(libraries_temp "") + set(full_libraries "") + foreach(lib_path ${${libraries}}) + get_filename_component(lib_name ${lib_path} NAME) + list(FIND libraries_temp ${lib_name} lib_idx) + if (${lib_idx} EQUAL -1) + list(APPEND libraries_temp ${lib_name}) + list(APPEND full_libraries ${lib_path}) + endif() + endforeach() + set(${libraries} ${full_libraries} PARENT_SCOPE) + list(LENGTH full_libraries lib_length) +endfunction() + From 12fed103e6899908b76f4c343fd49341cd7f938d Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 26 Sep 2022 11:31:35 +0800 Subject: [PATCH 18/18] Update eigen.cmake --- cmake/eigen.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/eigen.cmake b/cmake/eigen.cmake index d688adf43..d1a9332b2 100644 --- a/cmake/eigen.cmake +++ b/cmake/eigen.cmake @@ -17,8 +17,8 @@ include(ExternalProject) # update eigen to the commit id f612df27 on 03/16/2021 set(EIGEN_PREFIX_DIR ${THIRD_PARTY_PATH}/eigen3) set(EIGEN_SOURCE_DIR ${THIRD_PARTY_PATH}/eigen3/src/extern_eigen3) -#set(EIGEN_REPOSITORY https://gitlab.com/libeigen/eigen.git) -set(EIGEN_REPOSITORY https://gitee.com/jiangjiajun/eigen.git) +set(EIGEN_REPOSITORY https://gitlab.com/libeigen/eigen.git) +#set(EIGEN_REPOSITORY https://gitee.com/jiangjiajun/eigen.git) set(EIGEN_TAG f612df273689a19d25b45ca4f8269463207c4fee) if(WIN32) @@ -64,4 +64,4 @@ add_dependencies(eigen3 extern_eigen3) # sw not support thread_local semantic if(WITH_SW) add_definitions(-DEIGEN_AVOID_THREAD_LOCAL) -endif() \ No newline at end of file +endif()