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