From bc6b43d5fad201fed314a434a12812631383853b Mon Sep 17 00:00:00 2001 From: Alexey Suhov Date: Thu, 3 Oct 2019 16:11:44 +0300 Subject: [PATCH] CMAKE: moved GNA var setting to proper place; removed find_package when build python in sources; fixed output path for python in case of Developer package Added multi device plugn config --- .../cmake/developer_package_config.cmake.in | 8 ++-- inference-engine/ie_bridges/python/CMakeLists.txt | 43 ++++++++------------- .../src/openvino/inference_engine/CMakeLists.txt | 35 +++++++++-------- .../tools/statistics_collector/CMakeLists.txt | 45 ++++++++++------------ .../include/multi-device/multi_device_config.hpp | 36 +++++++++++++++++ .../statistics_collector/CMakeLists.txt | 25 ++++++------ 6 files changed, 105 insertions(+), 87 deletions(-) create mode 100644 inference-engine/include/multi-device/multi_device_config.hpp diff --git a/inference-engine/cmake/developer_package_config.cmake.in b/inference-engine/cmake/developer_package_config.cmake.in index 0b6df96..0b616b6 100644 --- a/inference-engine/cmake/developer_package_config.cmake.in +++ b/inference-engine/cmake/developer_package_config.cmake.in @@ -13,10 +13,6 @@ find_package(OpenCV COMPONENTS imgcodecs) find_package(Threads REQUIRED) find_package(gflags REQUIRED PATHS "@InferenceEngine_BINARY_DIR@/samples/thirdparty/gflags") -if(ENABLE_GNA) - set(GNA "@GNA@") -endif() - # Targets include("${CMAKE_CURRENT_LIST_DIR}/targets_developer.cmake") @@ -48,6 +44,10 @@ foreach(option IN LISTS ie_options) endforeach() message("") +if(ENABLE_GNA) + set(GNA "@GNA@") +endif() + # # Common cmake includes # diff --git a/inference-engine/ie_bridges/python/CMakeLists.txt b/inference-engine/ie_bridges/python/CMakeLists.txt index bba853f..55b71e7 100644 --- a/inference-engine/ie_bridges/python/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/CMakeLists.txt @@ -1,9 +1,12 @@ +# Copyright (C) 2019 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # Defines the CMake commands/policies cmake_minimum_required (VERSION 3.3) # Set the project name project (ie_python_api) -set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake) +set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake") string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} ARCH) if(ARCH STREQUAL "x86_64" OR ARCH STREQUAL "amd64") # Windows detects Intel's 64-bit CPU as AMD64 @@ -12,43 +15,29 @@ elseif(ARCH STREQUAL "i386") set(ARCH ia32) endif() -# in case of independent python api build (out of Inference Engine root Cmake) -if (NOT DEFINED IE_MAIN_SOURCE_DIR) - if("${CMAKE_BUILD_TYPE}" STREQUAL "") - message(STATUS "CMAKE_BUILD_TYPE not defined, 'Release' will be used") - set(CMAKE_BUILD_TYPE "Release") - endif() - message(STATUS "BUILD_CONFIGURATION: ${CMAKE_BUILD_TYPE}") - - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${ARCH}) - if(NOT(WIN32)) - set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}) - endif() +if(DEFINED IE_MAIN_SOURCE_DIR) + set(InferenceEngine_LIBRARIES inference_engine) else() - if (UNIX OR APPLE) - # cython generated files requires public visibility. Force visibility required. - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility=default") - endif() + find_package(InferenceEngineDeveloperPackage REQUIRED) +endif() + +if(UNIX) + # cython generated files requires public visibility. Force visibility required. + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility=default") endif() include (UseCython) -if (PYTHONINTERP_FOUND) - set (PYTHON_VERSION python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) +if(PYTHONINTERP_FOUND) + set(PYTHON_VERSION python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) else() message(FATAL_ERROR "Python Interpretator was not found!") endif() if(WIN32) - set (PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/$/python_api/${PYTHON_VERSION}/openvino) + set(PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/$/python_api/${PYTHON_VERSION}/openvino) else() - set (PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/python_api/${PYTHON_VERSION}/openvino) -endif() - -if(DEFINED IE_MAIN_SOURCE_DIR) - find_package(InferenceEngine REQUIRED) -else() - find_package(InferenceEngineDeveloperPackage REQUIRED) + set(PYTHON_BRIDGE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/python_api/${PYTHON_VERSION}/openvino) endif() set (PYTHON_BRIDGE_SRC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt index 1f46013..90aae8b 100644 --- a/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/src/openvino/inference_engine/CMakeLists.txt @@ -1,30 +1,31 @@ -# If the pyx file is a C++ file, we should specify that here. -set (CMAKE_INCLUDE_CURRENT_DIR ON) -set (TARGET_NAME "ie_api") +# Copyright (C) 2019 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 -set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) -set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) +set(TARGET_NAME "ie_api") + +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/inference_engine) file(GLOB SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/*.pyx - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp - ) + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) -set_source_files_properties(${SOURCE} PROPERTIES CYTHON_IS_CXX TRUE -) +set_source_files_properties(${SOURCE} PROPERTIES CYTHON_IS_CXX ON) -## Compatibility with python 2.7 which has deprecated "register" specifier -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_definitions("-Wno-register") -endif() +# create target -cython_add_module (${TARGET_NAME} ${SOURCE}) +cython_add_module(${TARGET_NAME} ${SOURCE}) -set_target_properties (${TARGET_NAME} PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) -target_link_libraries (${TARGET_NAME} PRIVATE ${InferenceEngine_LIBRARIES}) +target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") +set_target_properties(${TARGET_NAME} PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) +target_link_libraries(${TARGET_NAME} PRIVATE ${InferenceEngine_LIBRARIES}) + +# Compatibility with python 2.7 which has deprecated "register" specifier +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(${TARGET_NAME} PRIVATE "-Wno-register") +endif() # perform copy -ADD_CUSTOM_COMMAND (TARGET ${TARGET_NAME} +add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/inference_engine/__init__.py ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/__init__.py COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/requirements.txt ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/../../requirements.txt diff --git a/inference-engine/ie_bridges/python/src/openvino/tools/statistics_collector/CMakeLists.txt b/inference-engine/ie_bridges/python/src/openvino/tools/statistics_collector/CMakeLists.txt index bdd6a3f..72ddfea 100644 --- a/inference-engine/ie_bridges/python/src/openvino/tools/statistics_collector/CMakeLists.txt +++ b/inference-engine/ie_bridges/python/src/openvino/tools/statistics_collector/CMakeLists.txt @@ -1,29 +1,24 @@ -# If the pyx file is a C++ file, we should specify that here. -set (CMAKE_INCLUDE_CURRENT_DIR ON) -set (TARGET_NAME "statistics_collector_api") - -set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/tools/statistics_collector) -set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) - -file(GLOB SOURCE - ${CMAKE_CURRENT_SOURCE_DIR}/*.pyx - ) - -set_source_files_properties(${SOURCE} PROPERTIES CYTHON_IS_CXX TRUE -) -include_directories ( - ${IE_MAIN_SOURCE_DIR}/samples/common -) - -## Compatibility with python 2.7 which has deprecated "register" specifier -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_definitions("-Wno-register") -endif() +# Copyright (C) 2019 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +set(TARGET_NAME "statistics_collector_api") + +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYTHON_BRIDGE_OUTPUT_DIRECTORY}/tools/statistics_collector) + +file(GLOB SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/*.pyx) -cython_add_module (${TARGET_NAME} ${SOURCE}) +set_source_files_properties(${SOURCE} PROPERTIES CYTHON_IS_CXX ON) -set_target_properties (${TARGET_NAME} PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) -target_link_libraries (${TARGET_NAME} PRIVATE ${InferenceEngine_LIBRARIES}) +# create target + +cython_add_module(${TARGET_NAME} ${SOURCE}) + +set_target_properties(${TARGET_NAME} PROPERTIES CXX_STANDARD 11 LINKER_LANGUAGE CXX) + +# Compatibility with python 2.7 which has deprecated "register" specifier +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(${TARGET_NAME} PRIVATE "-Wno-register") +endif() if(TARGET IE::statistics_collector_s) target_link_libraries(${TARGET_NAME} PRIVATE IE::statistics_collector_s) @@ -32,7 +27,7 @@ else() endif() # perform copy -ADD_CUSTOM_COMMAND (TARGET ${TARGET_NAME} +add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/tools/__init__.py ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/../__init__.py COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_BRIDGE_SRC_ROOT}/src/openvino/tools/statistics_collector/__init__.py ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/__init__.py diff --git a/inference-engine/include/multi-device/multi_device_config.hpp b/inference-engine/include/multi-device/multi_device_config.hpp new file mode 100644 index 0000000..a5f037a --- /dev/null +++ b/inference-engine/include/multi-device/multi_device_config.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2018-2019 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +/** + * @brief A header that defines advanced related properties for Multi_Device plugin. + * These properties should be used in SetConfig() and LoadNetwork() methods + * + * @file multi_device_config.hpp + */ + +#pragma once + +#include +#include "ie_plugin_config.hpp" + +namespace InferenceEngine { + +namespace MultiDeviceConfigParams { + +/** + * @def MULTI_CONFIG_KEY(name) + * @brief A macro which provides a MULTI-mangled name for configuration key with name `name` + */ +#define MULTI_CONFIG_KEY(name) InferenceEngine::MultiDeviceConfigParams::_CONFIG_KEY(MULTI_##name) + +#define DECLARE_MULTI_CONFIG_KEY(name) DECLARE_CONFIG_KEY(MULTI_##name) +#define DECLARE_MULTI_CONFIG_VALUE(name) DECLARE_CONFIG_VALUE(MULTI_##name) + +/** + * @brief Device Priorities config option, with comma-separated devices listed in the desired priority + */ +DECLARE_MULTI_CONFIG_KEY(DEVICE_PRIORITIES); + +} // namespace MultiDeviceConfigParams +} // namespace InferenceEngine diff --git a/inference-engine/tools/calibration_tool/statistics_collector/CMakeLists.txt b/inference-engine/tools/calibration_tool/statistics_collector/CMakeLists.txt index ceba117..2729e14 100644 --- a/inference-engine/tools/calibration_tool/statistics_collector/CMakeLists.txt +++ b/inference-engine/tools/calibration_tool/statistics_collector/CMakeLists.txt @@ -27,31 +27,28 @@ file (GLOB PUBLIC_HEADERS_LIB source_group("src" FILES ${SRC_LIB}) source_group("include" FILES ${PUBLIC_HEADERS_LIB}) -include_directories ( - ${IE_MAIN_SOURCE_DIR}/samples - ${IE_MAIN_SOURCE_DIR}/samples/common - ${IE_MAIN_SOURCE_DIR}/thirdparty - ${IE_MAIN_SOURCE_DIR}/include - ${IE_MAIN_SOURCE_DIR}/src - ${PROJECT_BINARY_DIR}/samples/thirdparty/gflags/include -) - # Create library file from sources. add_library(${TARGET_NAME_LIB} STATIC ${SRC_LIB} ${PUBLIC_HEADERS_LIB}) add_executable(${TARGET_NAME} main.cpp) +target_include_directories (${TARGET_NAME_LIB} PUBLIC + ${IE_MAIN_SOURCE_DIR}/samples/common + ${IE_MAIN_SOURCE_DIR}/src +) + add_dependencies(${TARGET_NAME} gflags) -set_target_properties(${TARGET_NAME} PROPERTIES - POSITION_INDEPENDENT_CODE ON - COMPILE_PDB_NAME ${TARGET_NAME}) +if(WIN32) + set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}) +endif() target_include_directories(${TARGET_NAME_LIB} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(${TARGET_NAME_LIB} PUBLIC inference_engine ${OpenCV_LIBRARIES}) -target_link_libraries(${TARGET_NAME} ${TARGET_NAME_LIB} gflags) +target_link_libraries(${TARGET_NAME} PRIVATE ${TARGET_NAME_LIB} gflags) if(UNIX) - target_link_libraries(${TARGET_NAME} ${LIB_DL} pthread) + find_package(Threads REQUIRED) + target_link_libraries(${TARGET_NAME} PRIVATE Threads::Threads) endif() set_ie_threading_interface_for(${TARGET_NAME_LIB}) -- 2.7.4