LTO for frontends and python (#12890)

This commit is contained in:
Ilya Lavrenov authored and GitHub committed 2022-09-05 08:10:11 +04:00
1 parent 57a9d7ce7b
commit 836765874e
14 files changed
+27 -15

No files matched your search

@@ -173,6 +173,10 @@ macro(ov_add_frontend)
"-DGetAPIVersion=GetAPIVersion${OV_FRONTEND_NAME}")
endif()
# enable LTO
set_target_properties(${TARGET_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
if(OV_FRONTEND_SKIP_NCC_STYLE)
# frontend's CMakeLists.txt must define its own custom 'ov_ncc_naming_style' step
else()
@@ -21,6 +21,7 @@ set_source_files_properties(${PYX_SOURCES} PROPERTIES CYTHON_IS_CXX ON)
cython_add_module(${TARGET_NAME} ${SOURCES})
ov_python_disable_intel_warnings(${TARGET_NAME})
set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
set(INSTALLED_TARGETS ${TARGET_NAME})
list(REMOVE_ITEM PYX_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ie_api.pyx")
@@ -34,6 +35,7 @@ foreach(PYX_FILE IN LISTS PYX_SOURCES)
target_link_libraries(${PYX_NAME} PRIVATE openvino::runtime)
list(APPEND INSTALLED_TARGETS ${PYX_NAME})
ie_python_minimal_api(${PYX_NAME})
set_target_properties(${PYX_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
endforeach()
if(COMMAND ie_add_vs_version_file)
@@ -52,12 +52,14 @@ endif()
file(GLOB_RECURSE SOURCES *.cpp)
pybind11_add_module(_${PROJECT_NAME} MODULE ${SOURCES})
pybind11_add_module(_${PROJECT_NAME} MODULE NO_EXTRAS ${SOURCES})
target_include_directories(_${PROJECT_NAME} PRIVATE "../" "${OpenVINO_SOURCE_DIR}/src/common/transformations/include")
target_link_libraries(_${PROJECT_NAME} PRIVATE openvino::runtime)
set_target_properties(_${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
# perform copy
if(OpenVINO_SOURCE_DIR)
add_custom_command(TARGET _${PROJECT_NAME}
@@ -65,7 +65,7 @@ endif()
file(GLOB_RECURSE SOURCES core/*.cpp graph/*.cpp frontend/*.cpp utils/*cpp pyopenvino.cpp)
list(FILTER SOURCES EXCLUDE REGEX frontend/onnx|tensorflow|paddle/* )
pybind11_add_module(${PROJECT_NAME} MODULE ${SOURCES})
pybind11_add_module(${PROJECT_NAME} MODULE NO_EXTRAS ${SOURCES})
if(TARGET offline_transformations)
set(OFFLINE_TRANSFORMATIONS_LIB offline_transformations)
@@ -77,6 +77,7 @@ endif()
target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
target_link_libraries(${PROJECT_NAME} PRIVATE openvino::runtime::dev openvino::runtime ${OFFLINE_TRANSFORMATIONS_LIB})
set_target_properties(${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
addVersionDefines(pyopenvino.cpp CI_BUILD_NUMBER)
@@ -19,7 +19,7 @@ function(frontend_module TARGET FRAMEWORK INSTALL_COMPONENT)
# create target
pybind11_add_module(${TARGET_NAME} MODULE ${SOURCES})
pybind11_add_module(${TARGET_NAME} MODULE NO_EXTRAS ${SOURCES})
add_dependencies(${TARGET_NAME} pyopenvino)
add_dependencies(py_ov_frontends ${TARGET_NAME})
@@ -28,6 +28,8 @@ function(frontend_module TARGET FRAMEWORK INSTALL_COMPONENT)
"${PYTHON_SOURCE_DIR}/pyopenvino/utils/")
target_link_libraries(${TARGET_NAME} PRIVATE openvino::runtime openvino::frontend::${FRAMEWORK})
set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
# Compatibility with python 2.7 which has deprecated "register" specifier
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(${TARGET_NAME} PRIVATE "-Wno-error=register")
@@ -18,6 +18,7 @@ namespace py = pybind11;
using namespace ov::frontend::tensorflow;
void regclass_frontend_tensorflow_ConversionExtension(py::module m) {
py::class_<ConversionExtension, ConversionExtension::Ptr, ov::frontend::ConversionExtensionBase> _ext(
m,
@@ -14,7 +14,7 @@ file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test_utils.cpp)
# create target
pybind11_add_module(${TARGET_NAME} MODULE ${SOURCES})
pybind11_add_module(${TARGET_NAME} MODULE NO_EXTRAS ${SOURCES})
add_dependencies(${TARGET_NAME} pyopenvino)
@@ -8,7 +8,7 @@ set(PYBIND_FE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/pyngraph_mock_frontend_api.cpp)
source_group("src" FILES ${PYBIND_FE_SRC})
pybind11_add_module(${PYBIND_FE_NAME} MODULE ${PYBIND_FE_SRC})
pybind11_add_module(${PYBIND_FE_NAME} MODULE NO_EXTRAS ${PYBIND_FE_SRC})
set(DEPENDENCIES openvino_mock_py_frontend openvino::runtime)
set(DEFINITIONS IMPLEMENT_OPENVINO_API)
+2 -3
View File
@@ -2,9 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
#
if(ENABLE_LTO)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
endif()
# enable LTO globally for all libraries below
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
add_definitions(-DIN_OV_CORE_LIBRARY)
-4
View File
@@ -2,10 +2,6 @@
# SPDX-License-Identifier: Apache-2.0
#
if(ENABLE_LTO)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
endif()
add_subdirectory(common)
if(ENABLE_TESTS)
+2
View File
@@ -38,6 +38,8 @@ if(NOT BUILD_SHARED_LIBS)
endif()
target_link_libraries(${TARGET_NAME}_obj PRIVATE openvino::util openvino::core::dev)
# TODO: fix lto
set_target_properties(${TARGET_NAME}_obj PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF)
@@ -3,6 +3,8 @@
#
set(TARGET_NAME ov_protobuf_shutdown)
add_library(${TARGET_NAME} STATIC shutdown_protobuf.cpp)
target_sources(${TARGET_NAME} INTERFACE shutdown_protobuf.cpp)
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE $<BUILD_INTERFACE:${Protobuf_INCLUDE_DIRS}>)
set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
@@ -17,7 +17,8 @@ source_group("include" FILES ${PUBLIC_HEADERS} ${PUBLIC_HEADERS})
add_library(${TARGET_NAME} STATIC ${LIBRARY_SRC} ${PUBLIC_HEADERS})
# TODO Add handling ie_faster_build
set_target_properties(${TARGET_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
set(ONNX_COMMON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(ONNX_COMMON_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
@@ -32,7 +32,7 @@ add_subdirectory(${OpenVINO_SOURCE_DIR}/src/bindings/python/thirdparty/pybind11
${CMAKE_CURRENT_BINARY_DIR}/pybind11_build
EXCLUDE_FROM_ALL)
pybind11_add_module(${PYBIND_FE_NAME} MODULE ${PYBIND_FE_SRC})
pybind11_add_module(${PYBIND_FE_NAME} MODULE NO_EXTRAS ${PYBIND_FE_SRC})
target_link_libraries(${PYBIND_FE_NAME} PRIVATE openvino::runtime)
target_link_libraries(${PYBIND_FE_NAME} PRIVATE ${TARGET_FE_NAME})