Files
paddlepaddle--paddle/cmake/external/openvino.cmake
T
2026-07-13 12:40:42 +08:00

176 lines
6.5 KiB
CMake

# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if(NOT LINUX)
message(STATUS "OpenVINO only support Linux.")
set(WITH_OPENVINO OFF)
return()
endif()
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_INC_DIR
"${OPENVINO_INSTALL_DIR}/runtime/include"
CACHE PATH "OpenVINO include directory." FORCE)
set(SOURCE_DIR ${PADDLE_SOURCE_DIR}/third_party/openvino)
set(TBB_INC_DIR
"${OPENVINO_INSTALL_DIR}/runtime/3rdparty/tbb/include"
CACHE PATH "OpenVINO TBB include directory." FORCE)
# Introduce variables:
# * CMAKE_INSTALL_LIBDIR
include(GNUInstallDirs)
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} ARCH)
if(ARCH STREQUAL "x86_64"
OR ARCH STREQUAL "amd64"
OR CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
set(ARCH intel64)
elseif(ARCH STREQUAL "i386")
set(ARCH ia32)
endif()
set(LIBDIR "runtime/lib/${ARCH}")
set(TBBDIR "runtime/3rdparty/tbb/lib")
set(OPENVINO_LIB_NAME
"libopenvino.so.2500"
CACHE PATH "libopenvino name." FORCE)
set(OPENVINO_PADDLE_LIB_NAME
"libopenvino_paddle_frontend.so.2500"
CACHE PATH "libopenvino_paddle_frontend name." FORCE)
set(OPENVINO_CPU_PLUGIN_LIB_NAME
"libopenvino_intel_cpu_plugin.so"
CACHE PATH "libopenvino_intel_cpu_plugin name." FORCE)
set(TBB_LIB_NAME
"libtbb.so.12"
CACHE PATH "libtbb name." FORCE)
message(STATUS "Set ${OPENVINO_INSTALL_DIR}/${LIBDIR} to runtime path")
message(STATUS "Set ${OPENVINO_INSTALL_DIR}/${TBBDIR} to runtime path")
set(OPENVINO_LIB_DIR ${OPENVINO_INSTALL_DIR}/${LIBDIR})
set(TBB_LIB_DIR ${OPENVINO_INSTALL_DIR}/${TBBDIR})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}" "${OPENVINO_LIB_DIR}"
"${TBB_LIB_DIR}")
include_directories(${OPENVINO_INC_DIR}
)# For OpenVINO code to include internal headers.
include_directories(${TBB_INC_DIR}
)# For OpenVINO TBB code to include third_party headers.
if(LINUX)
set(OPENVINO_LIB
"${OPENVINO_INSTALL_DIR}/${LIBDIR}/${OPENVINO_LIB_NAME}"
CACHE FILEPATH "OpenVINO library." FORCE)
set(OPENVINO_PADDLE_LIB
"${OPENVINO_INSTALL_DIR}/${LIBDIR}/${OPENVINO_PADDLE_LIB_NAME}"
CACHE FILEPATH "OpenVINO paddle frontend library." FORCE)
set(OPENVINO_CPU_PLUGIN_LIB
"${OPENVINO_INSTALL_DIR}/${LIBDIR}/${OPENVINO_CPU_PLUGIN_LIB_NAME}"
CACHE FILEPATH "OpenVINO cpu inference library." FORCE)
set(TBB_LIB
"${OPENVINO_INSTALL_DIR}/${TBBDIR}/${TBB_LIB_NAME}"
CACHE FILEPATH "TBB library." FORCE)
else()
message(ERROR "Only support Linux.")
endif()
if(LINUX)
set(BUILD_BYPRODUCTS_ARGS ${OPENVINO_LIB} ${TBB_LIB} ${OPENVINO_PADDLE_LIB}
${OPENVINO_CPU_PLUGIN_LIB})
else()
set(BUILD_BYPRODUCTS_ARGS "")
endif()
set(OPENVINO_COMMIT 07ecdf07d2974410dc1d67d9fa2d3433dcab7865)
file(TO_NATIVE_PATH ${PADDLE_SOURCE_DIR}/patches/openvino/convert.patch
native_convert)
set(OPENVINO_PATCH_COMMAND
git checkout -- . && git fetch --depth=1 origin ${OPENVINO_COMMIT} && git
checkout ${OPENVINO_COMMIT} && patch -Np1 -d ${SOURCE_DIR} <
${native_convert} || true)
ExternalProject_Add(
${OPENVINO_PROJECT}
${EXTERNAL_PROJECT_LOG_ARGS}
SOURCE_DIR ${SOURCE_DIR}
DEPENDS ${OPENVINO_DEPENDS}
PREFIX ${OPENVINO_PREFIX_DIR}
UPDATE_COMMAND ""
#BUILD_ALWAYS 1
PATCH_COMMAND ${OPENVINO_PATCH_COMMAND}
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_FLAGS=${ONEDNN_CXXFLAG}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
-DCMAKE_CXX_FLAGS_RELEASE=${ONEDNN_CXXFLAG_RELEASE}
-DCMAKE_C_FLAGS=${ONEDNN_CFLAG}
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
-DCMAKE_C_FLAGS_RELEASE=${ONEDNN_CFLAG_RELEASE}
-DCMAKE_INSTALL_PREFIX=${OPENVINO_INSTALL_DIR}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DTHREADING=TBB
-DENABLE_INTEL_CPU=ON
-DENABLE_INTEL_GPU=OFF
-DENABLE_INTEL_NPU=OFF
-DENABLE_HETERO=OFF
-DENABLE_MULTI=OFF
-DENABLE_AUTO=OFF
-DENABLE_TEMPLATE=OFF
-DENABLE_AUTO_BATCH=OFF
-DENABLE_PROXY=OFF
-DENABLE_OV_ONNX_FRONTEND=OFF
-DENABLE_OV_TF_FRONTEND=OFF
-DENABLE_OV_TF_LITE_FRONTEND=OFF
-DENABLE_OV_PYTORCH_FRONTEND=OFF
-DENABLE_OV_JAX_FRONTEND=OFF
-DENABLE_OV_IR_FRONTEND=OFF
-DENABLE_SAMPLES=OFF
-DENABLE_TESTS=OFF
-DENABLE_PYTHON=OFF
-DENABLE_WHEEL=OFF
-DENABLE_DOCS=OFF
-DENABLE_CPPLINT=OFF
-DENABLE_CLANG_FORMAT=OFF
-DENABLE_NCC_STYLE=OFF
CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${OPENVINO_INSTALL_DIR}
BUILD_BYPRODUCTS ${BUILD_BYPRODUCTS_ARGS})
message(STATUS "OpenVINO library: ${OPENVINO_LIB}")
message(STATUS "OpenVINO Paddle library: ${OPENVINO_PADDLE_LIB}")
message(STATUS "OpenVINO CPU Inference library: ${OPENVINO_CPU_PLUGIN_LIB}")
message(STATUS "OpenVINO TBB library: ${TBB_LIB}")
add_definitions(-DPADDLE_WITH_OPENVINO)
add_library(openvino SHARED IMPORTED GLOBAL)
add_library(openvino_paddle SHARED IMPORTED GLOBAL)
add_library(openvino_cpu_plugin SHARED IMPORTED GLOBAL)
add_library(tbb SHARED IMPORTED GLOBAL)
set_property(TARGET openvino PROPERTY IMPORTED_LOCATION ${OPENVINO_LIB})
set_property(TARGET openvino_paddle PROPERTY IMPORTED_LOCATION
${OPENVINO_PADDLE_LIB})
set_property(TARGET openvino_cpu_plugin PROPERTY IMPORTED_LOCATION
${OPENVINO_CPU_PLUGIN_LIB})
set_property(TARGET tbb PROPERTY IMPORTED_LOCATION ${TBB_LIB})
add_dependencies(openvino ${OPENVINO_PROJECT})
add_dependencies(openvino_paddle ${OPENVINO_PROJECT})
add_dependencies(openvino_cpu_plugin ${OPENVINO_PROJECT})
add_dependencies(tbb ${OPENVINO_PROJECT})