Configurable G-API preprocessing in static build (#8631)

* Added cmake option todisable G-API preprocessing

* Enabled PDPD, TF on Windows

* Revert "Enabled PDPD, TF on Windows"

This reverts commit 2851cba056.
This commit is contained in:
Ilya Lavrenov
2021-11-18 16:40:53 +03:00
committed by GitHub
parent 9972410aa3
commit 90e10e369d
18 changed files with 90 additions and 30 deletions

View File

@@ -119,7 +119,7 @@ jobs:
- script: |
set PATH=$(WORK_DIR)\ninja-win;%PATH%
call "$(MSVS_VARS_PATH)" && cmake -GNinja -DENABLE_CLDNN=$(CMAKE_BUILD_SHARED_LIBS) -DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_REQUIREMENTS_INSTALL=OFF -DENABLE_FASTER_BUILD=ON -DENABLE_TEMPLATE_PLUGIN=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DENABLE_TESTS=ON -DENABLE_STRICT_DEPENDENCIES=OFF -DENABLE_PYTHON=ON -DPYTHON_EXECUTABLE="C:\hostedtoolcache\windows\Python\3.7.6\x64\python.exe" -DIE_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)\modules -DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" -DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" $(REPO_DIR)
call "$(MSVS_VARS_PATH)" && cmake -GNinja -DENABLE_CLDNN=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_GAPI_PREPROCESSING=$(CMAKE_BUILD_SHARED_LIBS) -DBUILD_SHARED_LIBS=$(CMAKE_BUILD_SHARED_LIBS) -DENABLE_REQUIREMENTS_INSTALL=OFF -DENABLE_FASTER_BUILD=ON -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DENABLE_TESTS=ON -DENABLE_STRICT_DEPENDENCIES=OFF -DENABLE_PYTHON=ON -DPYTHON_EXECUTABLE="C:\hostedtoolcache\windows\Python\3.7.6\x64\python.exe" -DIE_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)\modules -DCMAKE_C_COMPILER:PATH="$(MSVC_COMPILER_PATH)" -DCMAKE_CXX_COMPILER:PATH="$(MSVC_COMPILER_PATH)" $(REPO_DIR)
workingDirectory: $(BUILD_DIR)
displayName: 'CMake'

View File

@@ -106,6 +106,8 @@ endif()
ie_option (ENABLE_IR_V7_READER "Enables IR v7 reader" ${ENABLE_IR_V7_READER_DEFAULT})
ie_option (ENABLE_GAPI_PREPROCESSING "Enables G-API preprocessing" ON)
ie_option (ENABLE_MULTI "Enables Multi Device Plugin" ON)
ie_option (ENABLE_HETERO "Enables Hetero Device Plugin" ON)
@@ -118,7 +120,7 @@ ie_dependent_option (ENABLE_MYRIAD "myriad targeted plugin for inference engine"
ie_dependent_option (ENABLE_MYRIAD_NO_BOOT "myriad plugin will skip device boot" OFF "ENABLE_MYRIAD" OFF)
ie_dependent_option (ENABLE_GAPI_TESTS "tests for GAPI kernels" ON "ENABLE_TESTS" OFF)
ie_dependent_option (ENABLE_GAPI_TESTS "tests for GAPI kernels" ON "ENABLE_GAPI_PREPROCESSING;ENABLE_TESTS" OFF)
ie_dependent_option (GAPI_TEST_PERF "if GAPI unit tests should examine performance" OFF "ENABLE_GAPI_TESTS" OFF)

View File

@@ -4,6 +4,8 @@
#include "behavior/preprocessing/preprocessing.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace BehaviorTestsDefinitions;
namespace {
@@ -36,3 +38,5 @@ INSTANTIATE_TEST_SUITE_P(smoke_Behavior_PreprocessingPrecisionConvertTestsViaGet
PreprocessingPrecisionConvertTest::getTestCaseName);
} // namespace
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -4,6 +4,8 @@
#include "behavior/preprocessing/set_preprocess.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace BehaviorTestsDefinitions;
namespace {
@@ -89,4 +91,6 @@ INSTANTIATE_TEST_SUITE_P(smoke_BehaviorTests, InferRequestPreprocessDynamicallyI
::testing::ValuesIn(configs)),
InferRequestPreprocessDynamicallyInSetBlobTest::getTestCaseName);
} // namespace
} // namespace
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -13,6 +13,8 @@
#include "base_reference_cnn_test.hpp"
#include "ngraph_functions/builders.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace ov;
using namespace ov::preprocess;
using namespace reference_tests;
@@ -178,4 +180,6 @@ TEST_F(ConvertNV12WithLegacyTest, convert_nv12_full_color_range) {
TEST_F(ConvertNV12WithLegacyTest, convert_nv12_colored) {
auto input_yuv = std::vector<uint8_t> {235, 81, 235, 81, 109, 184};
SetupAndExec(2, 2, input_yuv);
}
}
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -13,16 +13,12 @@ endif()
add_executable(${TARGET_NAME} ie_c_api_test.cpp test_model_repo.hpp)
target_link_libraries(${TARGET_NAME}
PRIVATE
inference_engine
inference_engine_c_api
${OpenCV_LIBRARIES}
commonTestUtils
)
target_link_libraries(${TARGET_NAME} PRIVATE inference_engine_c_api ${OpenCV_LIBRARIES}
commonTestUtils gtest_main)
target_compile_definitions(${TARGET_NAME}
PUBLIC ${ARGV}
PRIVATE
$<$<BOOL:${ENABLE_GAPI_PREPROCESSING}>:ENABLE_GAPI_PREPROCESSING>
DATA_PATH=\"${DATA_PATH}\"
MODELS_PATH=\"${MODELS_PATH}\" )

View File

@@ -1873,6 +1873,8 @@ TEST(ie_blob_make_memory_nv12, NV12BlobInvalidAfterDeallocateUVPlane) {
ie_blob_free(&blob_nv12);
}
#ifdef ENABLE_GAPI_PREPROCESSING
TEST(ie_blob_make_memory_nv12, inferRequestWithNV12Blob) {
ie_core_t *core = nullptr;
IE_ASSERT_OK(ie_core_create("", &core));
@@ -1944,6 +1946,8 @@ TEST(ie_blob_make_memory_nv12, inferRequestWithNV12Blob) {
free(img_data);
}
#endif // ENABLE_GAPI_PREPROCESSING
TEST(ie_blob_make_memory_i420, makeI420Blob) {
dimensions_t dim_y = {4, {1, 1, 8, 12}}, dim_u = {4, {1, 1, 4, 6}}, dim_v = {4, {1, 1, 4, 6}};
tensor_desc tensor_y, tensor_u, tensor_v;
@@ -2176,6 +2180,8 @@ TEST(ie_blob_make_memory_i420, I420BlobInvalidAfterDeallocateVPlane) {
ie_blob_free(&blob_i420);
}
#ifdef ENABLE_GAPI_PREPROCESSING
TEST(ie_blob_make_memory_i420, inferRequestWithI420) {
ie_core_t *core = nullptr;
IE_ASSERT_OK(ie_core_create("", &core));
@@ -2246,8 +2252,4 @@ TEST(ie_blob_make_memory_i420, inferRequestWithI420) {
free(img_data);
}
int main(int argc, char *argv[]){
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -112,6 +112,9 @@ target_include_directories(${TARGET_NAME}_plugin_api INTERFACE
$<BUILD_INTERFACE:${PUBLIC_HEADERS_DIR}>
$<BUILD_INTERFACE:${PUBLIC_HEADERS_DIR}/ie>)
target_compile_definitions(${TARGET_NAME}_plugin_api INTERFACE
$<TARGET_PROPERTY:${TARGET_NAME}_preproc,INTERFACE_COMPILE_DEFINITIONS>)
target_link_libraries(${TARGET_NAME}_plugin_api INTERFACE pugixml::static openvino::itt openvino::util)
set_ie_threading_interface_for(${TARGET_NAME}_plugin_api)
@@ -134,7 +137,8 @@ ie_faster_build(${TARGET_NAME}_obj
target_compile_definitions(${TARGET_NAME}_obj PRIVATE IMPLEMENT_INFERENCE_ENGINE_API
$<TARGET_PROPERTY:ngraph,INTERFACE_COMPILE_DEFINITIONS>
$<TARGET_PROPERTY:frontend_manager::static,INTERFACE_COMPILE_DEFINITIONS>)
$<TARGET_PROPERTY:frontend_manager::static,INTERFACE_COMPILE_DEFINITIONS>
$<TARGET_PROPERTY:${TARGET_NAME}_preproc,INTERFACE_COMPILE_DEFINITIONS>)
target_include_directories(${TARGET_NAME}_obj SYSTEM PRIVATE $<TARGET_PROPERTY:ngraph,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:pugixml::static,INTERFACE_INCLUDE_DIRECTORIES>

View File

@@ -47,9 +47,7 @@ target_link_libraries(${TARGET_NAME} PRIVATE mkldnn
ov_shape_inference)
target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_EXTENSION_API)
target_include_directories(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE
$<TARGET_PROPERTY:mkldnn,INCLUDE_DIRECTORIES>)
@@ -86,6 +84,7 @@ set_ie_threading_interface_for(${TARGET_NAME}_obj)
target_compile_definitions(${TARGET_NAME}_obj PRIVATE
USE_STATIC_IE IMPLEMENT_INFERENCE_ENGINE_PLUGIN IMPLEMENT_INFERENCE_EXTENSION_API
$<TARGET_PROPERTY:ngraph,INTERFACE_COMPILE_DEFINITIONS>
$<TARGET_PROPERTY:inference_engine_plugin_api,INTERFACE_COMPILE_DEFINITIONS>
)
set_target_properties(${TARGET_NAME}_obj PROPERTIES EXCLUDE_FROM_ALL ON)

View File

@@ -100,7 +100,8 @@ ie_faster_build(${TARGET_NAME}_obj
target_compile_definitions(${TARGET_NAME}_obj PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN
$<TARGET_PROPERTY:inference_engine,INTERFACE_COMPILE_DEFINITIONS>
$<TARGET_PROPERTY:fluid,INTERFACE_COMPILE_DEFINITIONS>)
$<TARGET_PROPERTY:fluid,INTERFACE_COMPILE_DEFINITIONS>
$<$<BOOL:${ENABLE_GAPI_PREPROCESSING}>:ENABLE_GAPI_PREPROCESSING>)
target_include_directories(${TARGET_NAME}_obj SYSTEM PRIVATE $<TARGET_PROPERTY:ocv_hal,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:fluid,INTERFACE_INCLUDE_DIRECTORIES>
@@ -116,21 +117,30 @@ add_cpplint_target(${TARGET_NAME}_obj_cpplint FOR_TARGETS ${TARGET_NAME}_obj)
# Create module library file from object library
set(library_sources $<TARGET_OBJECTS:${TARGET_NAME}_obj>)
if(BUILD_SHARED_LIBS)
set(library_type MODULE)
else()
set(library_type STATIC)
if(ENABLE_GAPI_PREPROCESSING)
set(library_type STATIC)
else()
set(library_type INTERFACE)
unset(library_sources)
endif()
endif()
add_library(${TARGET_NAME} ${library_type}
$<TARGET_OBJECTS:${TARGET_NAME}_obj>)
add_library(${TARGET_NAME} ${library_type} ${library_sources})
ie_add_vs_version_file(NAME ${TARGET_NAME}
FILEDESCRIPTION "Inference Engine Preprocessing plugin")
set_ie_threading_interface_for(${TARGET_NAME})
target_link_libraries(${TARGET_NAME} PRIVATE fluid openvino::itt openvino::util)
if(ENABLE_GAPI_PREPROCESSING)
target_compile_definitions(${TARGET_NAME} PUBLIC ENABLE_GAPI_PREPROCESSING)
target_link_libraries(${TARGET_NAME} PRIVATE fluid openvino::itt openvino::util)
endif()
if(BUILD_SHARED_LIBS)
# for static linkage the dependencies are in opposite order
@@ -149,7 +159,7 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS_RELEASE "-Wno-error=maybe-uninitialized -Wno-maybe-uninitialized")
endif()
if(WIN32)
if(WIN32 AND NOT library_type STREQUAL "INTERFACE")
set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME})
endif()
@@ -177,9 +187,14 @@ set_target_properties(${TARGET_NAME}_s PROPERTIES EXCLUDE_FROM_ALL ON)
# LTO
set_target_properties(${TARGET_NAME} ${TARGET_NAME}_obj ${TARGET_NAME}_s
set_target_properties(${TARGET_NAME}_obj ${TARGET_NAME}_s
PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
if(NOT library_type STREQUAL "INTERFACE")
set_target_properties(${TARGET_NAME}
PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
endif()
# developer package
openvino_developer_export_targets(COMPONENT inference_engine TARGETS ${TARGET_NAME})

View File

@@ -70,9 +70,14 @@ class PreProcessDataPlugin {
public:
PreProcessDataPlugin() {
#ifdef OPENVINO_STATIC_LIBRARY
# ifdef ENABLE_GAPI_PREPROCESSING
CreatePreProcessData(_ptr);
if (!_ptr)
IE_THROW() << "Failed to create IPreProcessData for G-API based preprocessing";
# else
IE_THROW() << "OpenVINO Runtime is compiled without G-API preprocessing support.\n"
"Use 'cmake -DENABLE_GAPI_PREPROCESSING=ON ...'";
# endif // ENABLE_GAPI_PREPROCESSING
#else
ov::util::FilePath libraryName = ov::util::to_file_path(std::string("inference_engine_preproc") + std::string(IE_BUILD_POSTFIX));
ov::util::FilePath preprocLibraryPath = FileUtils::makePluginLibraryName(getInferenceEngineLibraryPath(), libraryName);

View File

@@ -200,6 +200,8 @@ function(ie_headers_compilation_with_custom_flags)
$<TARGET_PROPERTY:openvino::itt,INTERFACE_INCLUDE_DIRECTORIES>)
target_include_directories(${target_name} PRIVATE
$<TARGET_PROPERTY:inference_engine_plugin_api,INTERFACE_INCLUDE_DIRECTORIES>)
target_compile_definitions(${target_name} PRIVATE
$<TARGET_PROPERTY:inference_engine_plugin_api,INTERFACE_COMPILE_DEFINITIONS>)
else()
# OpenCL headers if any
if(OPENCL_HEADERS_DIR)

View File

@@ -4,6 +4,8 @@
#include "behavior/preprocessing/preprocessing.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace BehaviorTestsDefinitions;
namespace {
@@ -35,3 +37,5 @@ INSTANTIATE_TEST_SUITE_P(BehaviourPreprocessingTestsViaGetBlob, PreprocessingPre
::testing::ValuesIn(configs)),
PreprocessingPrecisionConvertTest::getTestCaseName);
} // namespace
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -4,6 +4,8 @@
#include "behavior/preprocessing/set_preprocess.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace BehaviorTestsDefinitions;
namespace {
const std::vector<InferenceEngine::Precision> netPrecisions = {
@@ -180,4 +182,6 @@ namespace {
::testing::ValuesIn(multiConfigs)),
InferRequestPreprocessDynamicallyInSetBlobTest::getTestCaseName);
} // namespace
} // namespace
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -5,6 +5,8 @@
#include <base/behavior_test_utils.hpp>
#include "behavior/preprocessing/set_preprocess.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace BehaviorTestsDefinitions;
namespace {
using PreprocessBehTest = BehaviorTestsUtils::BehaviorTestsBasic;
@@ -92,3 +94,5 @@ namespace {
InferRequestPreprocessDynamicallyInSetBlobTest::getTestCaseName);
} // namespace
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -5,6 +5,8 @@
#include <base/behavior_test_utils.hpp>
#include "behavior/preprocessing/set_preprocess.hpp"
#ifdef ENABLE_GAPI_PREPROCESSING
using namespace BehaviorTestsDefinitions;
namespace {
using PreprocessBehTest = BehaviorTestsUtils::BehaviorTestsBasic;
@@ -77,4 +79,6 @@ namespace {
InferRequestPreprocessDynamicallyInSetBlobTest::getTestCaseName);
} // namespace
} // namespace
#endif // ENABLE_GAPI_PREPROCESSING

View File

@@ -58,6 +58,10 @@ addIeTarget(
${DEPENDENCIES}
)
if(ENABLE_GAPI_PREPROCESSING)
target_compile_definitions(${TARGET_NAME} PUBLIC ENABLE_GAPI_PREPROCESSING)
endif()
# CVS-55376
set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/src/low_precision_transformations/layer_transformation.cpp"
PROPERTIES INCLUDE_DIRECTORIES

View File

@@ -23,6 +23,9 @@ target_include_directories(${TARGET} PRIVATE
$<TARGET_PROPERTY:inference_engine_plugin_api,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:inference_engine_preproc,INTERFACE_INCLUDE_DIRECTORIES>)
target_compile_definitions(${TARGET} PRIVATE
$<TARGET_PROPERTY:inference_engine_preproc,INTERFACE_COMPILE_DEFINITIONS>)
target_link_libraries(${TARGET} PRIVATE opencv_core opencv_imgproc openvino::util
inference_engine fluid_test_computations gtest gtest_main)