Removed auto plugin (#7310)
* Try to remove auto plugin * Auto is registered as MULTI * Register MultiDevicePlugin as AUTO * More explicit config
This commit is contained in:
1 parent
b86984fb30
commit
005e7da325
18 files changed
+114
-168
No files matched your search
@@ -2,6 +2,8 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
cmake_policy(SET CMP0007 NEW)
|
||||
|
||||
set(newContent " <plugin name=\"${IE_DEVICE_NAME}\" location=\"${IE_PLUGIN_LIBRARY_NAME}\">")
|
||||
|
||||
if(IE_PLUGIN_PROPERTIES)
|
||||
@@ -9,10 +11,11 @@ if(IE_PLUGIN_PROPERTIES)
|
||||
<properties>")
|
||||
|
||||
foreach(props IN LISTS IE_PLUGIN_PROPERTIES)
|
||||
string(REPLACE "," ";" props "${props}")
|
||||
string(REPLACE ":" ";" props "${props}")
|
||||
|
||||
list(GET props 0 key)
|
||||
list(GET props 1 value)
|
||||
|
||||
set(newContent "${newContent}
|
||||
<property key=\"${key}\" value=\"${value}\"/>")
|
||||
endforeach()
|
||||
|
||||
@@ -20,19 +20,18 @@ endif()
|
||||
#
|
||||
# ie_add_plugin(NAME <targetName>
|
||||
# DEVICE_NAME <deviceName>
|
||||
# SOURCES <sources>
|
||||
# OBJECT_LIBRARIES <object_libs>
|
||||
# VERSION_DEFINES_FOR <source>
|
||||
# SKIP_INSTALL
|
||||
# [PSEUDO]
|
||||
# [DEFAULT_CONFIG <key:value;...>]
|
||||
# [SOURCES <sources>]
|
||||
# [OBJECT_LIBRARIES <object_libs>]
|
||||
# [VERSION_DEFINES_FOR <source>]
|
||||
# [SKIP_INSTALL]
|
||||
# )
|
||||
#
|
||||
function(ie_add_plugin)
|
||||
set(options
|
||||
SKIP_INSTALL
|
||||
ADD_CLANG_FORMAT
|
||||
)
|
||||
set(options SKIP_INSTALL ADD_CLANG_FORMAT PSEUDO_PLUGIN)
|
||||
set(oneValueArgs NAME DEVICE_NAME VERSION_DEFINES_FOR)
|
||||
set(multiValueArgs SOURCES OBJECT_LIBRARIES CPPLINT_FILTERS)
|
||||
set(multiValueArgs DEFAULT_CONFIG SOURCES OBJECT_LIBRARIES CPPLINT_FILTERS)
|
||||
cmake_parse_arguments(IE_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if(NOT IE_PLUGIN_NAME)
|
||||
@@ -45,41 +44,73 @@ function(ie_add_plugin)
|
||||
|
||||
# create and configure target
|
||||
|
||||
if(IE_PLUGIN_VERSION_DEFINES_FOR)
|
||||
addVersionDefines(${IE_PLUGIN_VERSION_DEFINES_FOR} CI_BUILD_NUMBER)
|
||||
endif()
|
||||
if(NOT IE_PLUGIN_PSEUDO_PLUGIN)
|
||||
if(IE_PLUGIN_VERSION_DEFINES_FOR)
|
||||
addVersionDefines(${IE_PLUGIN_VERSION_DEFINES_FOR} CI_BUILD_NUMBER)
|
||||
endif()
|
||||
|
||||
set(input_files ${IE_PLUGIN_SOURCES})
|
||||
foreach(obj_lib IN LISTS IE_PLUGIN_OBJECT_LIBRARIES)
|
||||
list(APPEND input_files $<TARGET_OBJECTS:${obj_lib}>)
|
||||
add_cpplint_target(${obj_lib}_cpplint FOR_TARGETS ${obj_lib})
|
||||
endforeach()
|
||||
set(input_files ${IE_PLUGIN_SOURCES})
|
||||
foreach(obj_lib IN LISTS IE_PLUGIN_OBJECT_LIBRARIES)
|
||||
list(APPEND input_files $<TARGET_OBJECTS:${obj_lib}>)
|
||||
add_cpplint_target(${obj_lib}_cpplint FOR_TARGETS ${obj_lib})
|
||||
endforeach()
|
||||
|
||||
add_library(${IE_PLUGIN_NAME} MODULE ${input_files})
|
||||
target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN)
|
||||
add_library(${IE_PLUGIN_NAME} MODULE ${input_files})
|
||||
target_compile_definitions(${IE_PLUGIN_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLUGIN)
|
||||
|
||||
ie_add_vs_version_file(NAME ${IE_PLUGIN_NAME}
|
||||
FILEDESCRIPTION "Inference Engine ${IE_PLUGIN_DEVICE_NAME} device plugin library")
|
||||
ie_add_vs_version_file(NAME ${IE_PLUGIN_NAME}
|
||||
FILEDESCRIPTION "Inference Engine ${IE_PLUGIN_DEVICE_NAME} device plugin library")
|
||||
|
||||
if(TARGET IE::inference_engine_plugin_api)
|
||||
target_link_libraries(${IE_PLUGIN_NAME} PRIVATE IE::inference_engine_plugin_api)
|
||||
else()
|
||||
target_link_libraries(${IE_PLUGIN_NAME} PRIVATE inference_engine_plugin_api)
|
||||
endif()
|
||||
if(TARGET IE::inference_engine_plugin_api)
|
||||
target_link_libraries(${IE_PLUGIN_NAME} PRIVATE IE::inference_engine_plugin_api)
|
||||
else()
|
||||
target_link_libraries(${IE_PLUGIN_NAME} PRIVATE inference_engine_plugin_api)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set_target_properties(${IE_PLUGIN_NAME} PROPERTIES COMPILE_PDB_NAME ${IE_PLUGIN_NAME})
|
||||
endif()
|
||||
if(WIN32)
|
||||
set_target_properties(${IE_PLUGIN_NAME} PROPERTIES COMPILE_PDB_NAME ${IE_PLUGIN_NAME})
|
||||
endif()
|
||||
|
||||
set(custom_filter "")
|
||||
foreach(filter IN LISTS IE_PLUGIN_CPPLINT_FILTERS)
|
||||
string(CONCAT custom_filter "${custom_filter}" "," "${filter}")
|
||||
endforeach()
|
||||
set(custom_filter "")
|
||||
foreach(filter IN LISTS IE_PLUGIN_CPPLINT_FILTERS)
|
||||
string(CONCAT custom_filter "${custom_filter}" "," "${filter}")
|
||||
endforeach()
|
||||
|
||||
if (IE_PLUGIN_ADD_CLANG_FORMAT)
|
||||
add_clang_format_target(${IE_PLUGIN_NAME}_clang FOR_TARGETS ${IE_PLUGIN_NAME})
|
||||
else()
|
||||
add_cpplint_target(${IE_PLUGIN_NAME}_cpplint FOR_TARGETS ${IE_PLUGIN_NAME} CUSTOM_FILTERS ${custom_filter})
|
||||
if (IE_PLUGIN_ADD_CLANG_FORMAT)
|
||||
add_clang_format_target(${IE_PLUGIN_NAME}_clang FOR_TARGETS ${IE_PLUGIN_NAME})
|
||||
else()
|
||||
add_cpplint_target(${IE_PLUGIN_NAME}_cpplint FOR_TARGETS ${IE_PLUGIN_NAME} CUSTOM_FILTERS ${custom_filter})
|
||||
endif()
|
||||
|
||||
add_dependencies(ie_plugins ${IE_PLUGIN_NAME})
|
||||
if(TARGET inference_engine_preproc)
|
||||
add_dependencies(${IE_PLUGIN_NAME} inference_engine_preproc)
|
||||
endif()
|
||||
|
||||
# fake dependencies to build in the following order:
|
||||
# IE -> IE readers -> IE inference plugins -> IE-based apps
|
||||
if(TARGET inference_engine_ir_reader)
|
||||
add_dependencies(${IE_PLUGIN_NAME} inference_engine_ir_reader)
|
||||
endif()
|
||||
if(TARGET inference_engine_ir_v7_reader)
|
||||
add_dependencies(${IE_PLUGIN_NAME} inference_engine_ir_v7_reader)
|
||||
endif()
|
||||
if(TARGET onnx_ngraph_frontend)
|
||||
add_dependencies(${IE_PLUGIN_NAME} onnx_ngraph_frontend)
|
||||
endif()
|
||||
if(TARGET paddlepaddle_ngraph_frontend)
|
||||
add_dependencies(${IE_PLUGIN_NAME} paddlepaddle_ngraph_frontend)
|
||||
endif()
|
||||
|
||||
# install rules
|
||||
if(NOT IE_PLUGIN_SKIP_INSTALL)
|
||||
string(TOLOWER "${IE_PLUGIN_DEVICE_NAME}" install_component)
|
||||
ie_cpack_add_component(${install_component} REQUIRED DEPENDS core)
|
||||
|
||||
install(TARGETS ${IE_PLUGIN_NAME}
|
||||
LIBRARY DESTINATION ${IE_CPACK_RUNTIME_PATH}
|
||||
COMPONENT ${install_component})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# check that plugin with such name is not registered
|
||||
@@ -98,33 +129,7 @@ function(ie_add_plugin)
|
||||
|
||||
list(APPEND PLUGIN_FILES "${IE_PLUGIN_DEVICE_NAME}:${IE_PLUGIN_NAME}")
|
||||
set(PLUGIN_FILES "${PLUGIN_FILES}" CACHE INTERNAL "" FORCE)
|
||||
|
||||
add_dependencies(ie_plugins ${IE_PLUGIN_NAME})
|
||||
if(TARGET inference_engine_preproc)
|
||||
add_dependencies(${IE_PLUGIN_NAME} inference_engine_preproc)
|
||||
endif()
|
||||
|
||||
# fake dependencies to build in the following order:
|
||||
# IE -> IE readers -> IE inference plugins -> IE-based apps
|
||||
if(TARGET inference_engine_ir_reader)
|
||||
add_dependencies(${IE_PLUGIN_NAME} inference_engine_ir_reader)
|
||||
endif()
|
||||
if(TARGET inference_engine_ir_v7_reader)
|
||||
add_dependencies(${IE_PLUGIN_NAME} inference_engine_ir_v7_reader)
|
||||
endif()
|
||||
if(TARGET onnx_ngraph_frontend)
|
||||
add_dependencies(${IE_PLUGIN_NAME} onnx_ngraph_frontend)
|
||||
endif()
|
||||
|
||||
# install rules
|
||||
|
||||
if(NOT IE_PLUGIN_SKIP_INSTALL)
|
||||
string(TOLOWER "${IE_PLUGIN_DEVICE_NAME}" install_component)
|
||||
ie_cpack_add_component(${install_component} REQUIRED DEPENDS core)
|
||||
|
||||
install(TARGETS ${IE_PLUGIN_NAME}
|
||||
LIBRARY DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT ${install_component})
|
||||
endif()
|
||||
set(${IE_PLUGIN_DEVICE_NAME}_CONFIG "${IE_PLUGIN_DEFAULT_CONFIG}" CACHE INTERNAL "" FORCE)
|
||||
endfunction()
|
||||
|
||||
#
|
||||
@@ -168,7 +173,7 @@ macro(ie_register_plugins)
|
||||
list(GET name 1 name)
|
||||
|
||||
# create plugin file
|
||||
set(config_file_name "${CMAKE_BINARY_DIR}/plugins/${name}.xml")
|
||||
set(config_file_name "${CMAKE_BINARY_DIR}/plugins/${device_name}.xml")
|
||||
ie_plugin_get_file_name(${name} library_name)
|
||||
|
||||
add_custom_command(TARGET ${IE_REGISTER_MAIN_TARGET} POST_BUILD
|
||||
@@ -176,9 +181,10 @@ macro(ie_register_plugins)
|
||||
"${CMAKE_COMMAND}"
|
||||
-D "IE_CONFIG_OUTPUT_FILE=${config_file_name}"
|
||||
-D "IE_DEVICE_NAME=${device_name}"
|
||||
-D "IE_PLUGIN_PROPERTIES=${${device_name}_CONFIG}"
|
||||
-D "IE_PLUGIN_LIBRARY_NAME=${library_name}"
|
||||
-P "${IEDevScripts_DIR}/plugins/create_plugin_file.cmake"
|
||||
COMMENT "Register ${name} plugin"
|
||||
COMMENT "Register ${device_name} device as ${library_name}"
|
||||
VERBATIM)
|
||||
|
||||
list(APPEND plugin_files_local "${config_file_name}")
|
||||
|
||||
@@ -65,12 +65,6 @@ LIB_INSTALL_CFG = {
|
||||
'install_dir': PLUGINS_LIBS_DIR,
|
||||
'rpath': LIBS_RPATH,
|
||||
},
|
||||
'auto_plugin': {
|
||||
'name': 'auto',
|
||||
'prefix': 'libs.plugins',
|
||||
'install_dir': PLUGINS_LIBS_DIR,
|
||||
'rpath': LIBS_RPATH,
|
||||
},
|
||||
'myriad_plugin': {
|
||||
'name': 'myriad',
|
||||
'prefix': 'libs.plugins',
|
||||
|
||||
@@ -30,8 +30,6 @@ endif()
|
||||
|
||||
add_subdirectory(hetero_plugin)
|
||||
|
||||
add_subdirectory(auto_plugin)
|
||||
|
||||
add_subdirectory(multi_device)
|
||||
|
||||
add_subdirectory(transformations)
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# Copyright (C) 2018-2021 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
set (TARGET_NAME "AutoPlugin")
|
||||
|
||||
file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
|
||||
file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp)
|
||||
|
||||
ie_add_plugin(NAME ${TARGET_NAME}
|
||||
DEVICE_NAME "AUTO"
|
||||
SOURCES ${SOURCES} ${HEADERS}
|
||||
VERSION_DEFINES_FOR auto_plugin.cpp)
|
||||
|
||||
target_link_libraries(${TARGET_NAME} PRIVATE ngraph inference_engine inference_engine_transformations)
|
||||
|
||||
ie_add_api_validator_post_build_step(TARGET ${TARGET_NAME})
|
||||
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO})
|
||||
@@ -1,11 +0,0 @@
|
||||
// Copyright (C) 2018-2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "auto_plugin.hpp"
|
||||
|
||||
namespace AutoPlugin {
|
||||
// define CreatePluginEngine to create plugin instance
|
||||
static const InferenceEngine::Version version = {{2, 1}, CI_BUILD_NUMBER, "AutoPlugin"};
|
||||
IE_DEFINE_PLUGIN_CREATE_FUNCTION(AutoInferencePlugin, version)
|
||||
} // namespace AutoPlugin
|
||||
@@ -1,17 +0,0 @@
|
||||
// Copyright (C) 2018-2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cpp_interfaces/interface/ie_internal_plugin_config.hpp>
|
||||
#include <cpp_interfaces/interface/ie_iplugin_internal.hpp>
|
||||
|
||||
namespace AutoPlugin {
|
||||
class AutoInferencePlugin : public InferenceEngine::IInferencePlugin {
|
||||
public:
|
||||
AutoInferencePlugin() = default;
|
||||
~AutoInferencePlugin() = default;
|
||||
};
|
||||
|
||||
} // namespace AutoPlugin
|
||||
@@ -64,16 +64,14 @@ Parsed<T> parseDeviceNameIntoConfig(const std::string& deviceName, const std::ma
|
||||
deviceName_ = "MULTI";
|
||||
config_[InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES] = deviceName.substr(6);
|
||||
} else if (deviceName.find("AUTO") == 0) {
|
||||
deviceName_ = "MULTI";
|
||||
deviceName_ = "AUTO";
|
||||
if (deviceName.find("AUTO:") == 0) {
|
||||
config_[InferenceEngine::MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES] =
|
||||
deviceName.substr(std::string("AUTO:").size());
|
||||
}
|
||||
config_.insert({CONFIG_KEY_INTERNAL(WORK_MODE), ""});
|
||||
} else {
|
||||
if (deviceName_ == "AUTO") {
|
||||
deviceName_ = "MULTI";
|
||||
config_.insert({CONFIG_KEY_INTERNAL(WORK_MODE), ""});
|
||||
if (deviceName_.empty()) {
|
||||
deviceName_ = "AUTO";
|
||||
}
|
||||
InferenceEngine::DeviceIDParser parser(deviceName_);
|
||||
deviceName_ = parser.getDeviceName();
|
||||
@@ -584,17 +582,12 @@ public:
|
||||
{
|
||||
if (deviceName.find("AUTO:") == 0) {
|
||||
IE_THROW()
|
||||
<< "You can get specific metrics with the GetMetric only for the MULTI itself (without devices). "
|
||||
<< "You can get specific metrics with the GetMetric only for the AUTO itself (without devices). "
|
||||
"To get individual devices's metrics call GetMetric for each device separately";
|
||||
}
|
||||
}
|
||||
|
||||
std::string pluginName = deviceName;
|
||||
if (pluginName == "AUTO") {
|
||||
pluginName = "MULTI";
|
||||
}
|
||||
|
||||
auto parsed = parseDeviceNameIntoConfig(pluginName);
|
||||
auto parsed = parseDeviceNameIntoConfig(deviceName);
|
||||
|
||||
// we need to return a copy of Parameter object which is created on Core side,
|
||||
// not in InferenceEngine plugin side, which can be unloaded from Core in a parallel thread
|
||||
@@ -649,9 +642,6 @@ public:
|
||||
|
||||
std::lock_guard<std::mutex> lock(pluginsMutex);
|
||||
auto deviceName = pluginName;
|
||||
if (deviceName == "AUTO") {
|
||||
deviceName = "MULTI";
|
||||
}
|
||||
auto it = pluginRegistry.find(deviceName);
|
||||
if (it == pluginRegistry.end()) {
|
||||
IE_THROW() << "Device with \"" << deviceName << "\" name is not registered in the InferenceEngine";
|
||||
@@ -876,7 +866,7 @@ public:
|
||||
if (pos != std::string::npos) {
|
||||
deviceNames = InferenceEngine::DeviceIDParser::getMultiDevices(deviceName.substr(pos + 1));
|
||||
}
|
||||
deviceNames.emplace_back("MULTI");
|
||||
deviceNames.emplace_back("AUTO");
|
||||
} else {
|
||||
deviceNames.push_back(deviceName);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,11 @@ ie_add_plugin(NAME ${TARGET_NAME}
|
||||
SOURCES ${SOURCES} ${HEADERS}
|
||||
VERSION_DEFINES_FOR multi_device_plugin.cpp)
|
||||
|
||||
ie_add_plugin(NAME ${TARGET_NAME}
|
||||
DEVICE_NAME "AUTO"
|
||||
PSEUDO_PLUGIN
|
||||
DEFAULT_CONFIG "MULTI_WORK_MODE_AS_AUTO:YES")
|
||||
|
||||
target_link_libraries(${TARGET_NAME} PRIVATE inference_engine ngraph inference_engine_transformations)
|
||||
|
||||
set_ie_threading_interface_for(${TARGET_NAME})
|
||||
|
||||
@@ -169,7 +169,7 @@ std::shared_ptr<InferenceEngine::IRemoteContext> MultiDeviceExecutableNetwork::G
|
||||
} catch (const NotImplemented&) {}
|
||||
}
|
||||
IE_THROW(NotImplemented) << "None of the devices in the MULTI has an associated remote context."
|
||||
<< " Current list of devices allowed via the DEVICE_PRIORITIES config: " << devices_names;
|
||||
<< " Current list of devices allowed via the DEVICE_PRIORITIES config: " << devices_names;
|
||||
}
|
||||
|
||||
InferenceEngine::IInferRequestInternal::Ptr MultiDeviceExecutableNetwork::CreateInferRequestImpl(InferenceEngine::InputsDataMap networkInputs,
|
||||
@@ -221,8 +221,7 @@ void MultiDeviceExecutableNetwork::SetConfig(const std::map<std::string, Inferen
|
||||
if (_networksPerDevice.find(device.deviceName) == _networksPerDevice.end()) {
|
||||
IE_THROW(NotFound) << "You can only change device priorities but not add new devices with"
|
||||
<< " the Network's SetConfig(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES. "
|
||||
<< device.deviceName <<
|
||||
" device was not in the original device list!";
|
||||
<< device.deviceName << " device was not in the original device list!";
|
||||
}
|
||||
}
|
||||
_devicePriorities = metaDevices;
|
||||
|
||||
@@ -56,9 +56,9 @@ namespace {
|
||||
}
|
||||
return config;
|
||||
}
|
||||
std::vector<std::string> supported_configKeys = {
|
||||
const std::vector<std::string> supported_configKeys = {
|
||||
MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES,
|
||||
CONFIG_KEY_INTERNAL(WORK_MODE)
|
||||
CONFIG_KEY_INTERNAL(MULTI_WORK_MODE_AS_AUTO)
|
||||
};
|
||||
} // namespace
|
||||
|
||||
@@ -167,7 +167,7 @@ InferenceEngine::Parameter MultiDeviceInferencePlugin::GetMetric(const std::stri
|
||||
metrics.push_back(METRIC_KEY(SUPPORTED_CONFIG_KEYS));
|
||||
IE_SET_METRIC_RETURN(SUPPORTED_METRICS, metrics);
|
||||
} else if (name == METRIC_KEY(FULL_DEVICE_NAME)) {
|
||||
std::string device_name = { "MULTI" };
|
||||
std::string device_name = { GetName() };
|
||||
IE_SET_METRIC_RETURN(FULL_DEVICE_NAME, device_name);
|
||||
} else if (name == METRIC_KEY(SUPPORTED_CONFIG_KEYS)) {
|
||||
IE_SET_METRIC_RETURN(SUPPORTED_CONFIG_KEYS, supported_configKeys);
|
||||
@@ -185,7 +185,7 @@ IExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadNetwork(const st
|
||||
IExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadExeNetworkImpl(const CNNNetwork &network,
|
||||
const std::map<std::string, std::string>& config) {
|
||||
if (network.getFunction() == nullptr) {
|
||||
IE_THROW() << "MULTI device supports just ngraph network representation";
|
||||
IE_THROW() << GetName() << " device supports just ngraph network representation";
|
||||
}
|
||||
|
||||
auto networkPrecision = GetNetworkPrecision(network);
|
||||
@@ -197,23 +197,24 @@ IExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadNetworkImpl(cons
|
||||
const std::map<std::string, std::string>& config,
|
||||
const std::string &networkPrecision) {
|
||||
if (GetCore() == nullptr) {
|
||||
IE_THROW() << "Please, work with MULTI device via InferenceEngine::Core object";
|
||||
IE_THROW() << "Please, work with " << GetName() << " device via InferenceEngine::Core object";
|
||||
}
|
||||
|
||||
if (modelPath.empty() && network.getFunction() == nullptr) {
|
||||
IE_THROW() << "MULTI device supports just ngraph network representation";
|
||||
IE_THROW() << GetName() << " device supports just ngraph network representation";
|
||||
}
|
||||
|
||||
auto fullConfig = mergeConfigs(_config, config);
|
||||
// collect the settings that are applicable to the devices we are loading the network to
|
||||
std::unordered_map<std::string, InferenceEngine::Parameter> multiNetworkConfig;
|
||||
std::vector<DeviceInformation> metaDevices;
|
||||
auto workMode = fullConfig.find(CONFIG_KEY_INTERNAL(WORK_MODE));
|
||||
auto workMode = fullConfig.find(CONFIG_KEY_INTERNAL(MULTI_WORK_MODE_AS_AUTO));
|
||||
bool workModeAuto = workMode != fullConfig.end() && workMode->second == InferenceEngine::PluginConfigParams::YES;
|
||||
auto priorities = fullConfig.find(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES);
|
||||
|
||||
// not found device priorities for -d AUTO use case
|
||||
if (priorities == fullConfig.end()) {
|
||||
if (workMode != fullConfig.end()) {
|
||||
if (workModeAuto) {
|
||||
std::string allDevices;
|
||||
auto availableDevices = GetCore()->GetAvailableDevices();
|
||||
if (availableDevices.empty()) {
|
||||
@@ -226,16 +227,15 @@ IExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadNetworkImpl(cons
|
||||
metaDevices = ParseMetaDevices(allDevices, fullConfig);
|
||||
multiNetworkConfig.insert({MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES, allDevices});
|
||||
} else {
|
||||
IE_THROW() << "KEY_MULTI_DEVICE_PRIORITIES key is not set for MULTI device";
|
||||
IE_THROW() << "KEY_MULTI_DEVICE_PRIORITIES key is not set for " << GetName() << " device";
|
||||
}
|
||||
} else { // for use case -d MULTI:xPU or -d AUTO:xPU
|
||||
metaDevices = ParseMetaDevices(priorities->second, fullConfig);
|
||||
multiNetworkConfig.insert(*priorities);
|
||||
}
|
||||
// check if it is -d AUTO or -d AUTO:xPU use case
|
||||
if (workMode != fullConfig.end()) {
|
||||
if (workModeAuto) {
|
||||
auto targetDevice = SelectDevice(metaDevices, networkPrecision);
|
||||
// std::cout << "!!! DEBUG: select device is " << targetDevice.deviceName << std::endl;
|
||||
metaDevices = { targetDevice };
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ IExecutableNetworkInternal::Ptr MultiDeviceInferencePlugin::LoadNetworkImpl(cons
|
||||
executor->runAndWait(loads);
|
||||
if (executableNetworkPerDevice.empty())
|
||||
IE_THROW(NotFound) << "Failed to load network to any device "
|
||||
<< "that the MULTI device is initialized to work with";
|
||||
<< "that the " << GetName() << " device is initialized to work with";
|
||||
|
||||
// checking the perf counters config from the loaded network to respect both device's plugin and load-specific setting
|
||||
size_t num_plugins_supporting_perf_counters = 0;
|
||||
@@ -302,11 +302,11 @@ QueryNetworkResult MultiDeviceInferencePlugin::QueryNetwork(const CNNNetwork&
|
||||
QueryNetworkResult queryResult;
|
||||
|
||||
if (GetCore() == nullptr) {
|
||||
IE_THROW() << "Please, work with MULTI device via InferencEngine::Core object";
|
||||
IE_THROW() << "Please, work with " << GetName() << " device via InferencEngine::Core object";
|
||||
}
|
||||
|
||||
if (network.getFunction() == nullptr) {
|
||||
IE_THROW() << "MULTI device supports just ngraph network representation";
|
||||
IE_THROW() << GetName() << " device supports just ngraph network representation";
|
||||
}
|
||||
|
||||
queryResult.rc = StatusCode::OK;
|
||||
@@ -315,7 +315,7 @@ QueryNetworkResult MultiDeviceInferencePlugin::QueryNetwork(const CNNNetwork&
|
||||
auto fullConfig = mergeConfigs(_config, config);
|
||||
auto priorities = fullConfig.find(MultiDeviceConfigParams::KEY_MULTI_DEVICE_PRIORITIES);
|
||||
if (priorities == fullConfig.end()) {
|
||||
IE_THROW() << "KEY_MULTI_DEVICE_PRIORITIES key is not set for MULTI device";
|
||||
IE_THROW() << "KEY_MULTI_DEVICE_PRIORITIES key is not set for " << GetName() << " device";
|
||||
}
|
||||
auto metaDevices = ParseMetaDevices(priorities->second, fullConfig);
|
||||
std::unordered_set<std::string> supportedLayers;
|
||||
@@ -338,7 +338,7 @@ QueryNetworkResult MultiDeviceInferencePlugin::QueryNetwork(const CNNNetwork&
|
||||
|
||||
DeviceInformation MultiDeviceInferencePlugin::SelectDevice(const std::vector<DeviceInformation>& metaDevices, const std::string& networkPrecision) {
|
||||
if (metaDevices.empty()) {
|
||||
IE_THROW(NotFound) << "No available device to select in AUTO plugin";
|
||||
IE_THROW(NotFound) << "No available device to select in " << GetName() << " plugin";
|
||||
}
|
||||
if (metaDevices.size() == 1) {
|
||||
return metaDevices.at(0);
|
||||
|
||||
+8
-5
@@ -26,6 +26,13 @@ namespace PluginConfigInternalParams {
|
||||
*/
|
||||
#define CONFIG_KEY_INTERNAL(name) ::InferenceEngine::PluginConfigInternalParams::_CONFIG_KEY(name)
|
||||
|
||||
/**
|
||||
* @def CONFIG_VALUE_INTERNAL(name)
|
||||
* @ingroup ie_dev_api_plugin_api
|
||||
* @brief Shortcut for defining internal configuration values
|
||||
*/
|
||||
#define CONFIG_VALUE_INTERNAL(name) ::InferenceEngine::PluginConfigInternalParams::name
|
||||
|
||||
/**
|
||||
* @brief Defines a low precision mode key
|
||||
* @ingroup ie_dev_api_plugin_api
|
||||
@@ -47,12 +54,8 @@ DECLARE_CONFIG_KEY(FORCE_DISABLE_CACHE);
|
||||
|
||||
/**
|
||||
* @brief The name for setting work mode internal in MULTI device plugin option.
|
||||
*
|
||||
* This option should be used with value only:
|
||||
* PluginConfigInternalParams::MULTI_MODE_AUTO or PluginConfigInternalParams::MULTI_MODE_LEGACY
|
||||
*/
|
||||
DECLARE_CONFIG_KEY(WORK_MODE);
|
||||
DECLARE_CONFIG_VALUE(MULTI_MODE_AUTO);
|
||||
DECLARE_CONFIG_KEY(MULTI_WORK_MODE_AS_AUTO);
|
||||
|
||||
} // namespace PluginConfigInternalParams
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ set(DEPENDENCIES
|
||||
inference_engine_ir_reader
|
||||
inference_engine_ir_v7_reader
|
||||
HeteroPlugin
|
||||
AutoPlugin
|
||||
MultiDevicePlugin
|
||||
template_extension
|
||||
lptNgraphFunctions
|
||||
|
||||
@@ -9,7 +9,7 @@ add_library(cpuSpecificRtInfo STATIC ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin/uti
|
||||
target_link_libraries(cpuSpecificRtInfo PRIVATE ngraph)
|
||||
|
||||
set(INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${IE_MAIN_SOURCE_DIR}/src/mkldnn_plugin)
|
||||
set(DEPENDENCIES MKLDNNPlugin AutoPlugin)
|
||||
set(DEPENDENCIES MKLDNNPlugin)
|
||||
set(LINK_LIBRARIES funcSharedTests cpuSpecificRtInfo)
|
||||
if (NGRAPH_ONNX_FRONTEND_ENABLE)
|
||||
list(APPEND INCLUDES "${OpenVINO_SOURCE_DIR}/docs/onnx_custom_op")
|
||||
|
||||
@@ -13,7 +13,6 @@ addIeTargetTest(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDENCIES
|
||||
clDNNPlugin
|
||||
AutoPlugin
|
||||
LINK_LIBRARIES
|
||||
funcSharedTests
|
||||
OpenCL
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"deployment_tools/inference_engine/lib/intel64/libinference_engine_preproc.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libinference_engine_ir_reader.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libinference_engine_c_api.dylib",
|
||||
"deployment_tools/inference_engine/lib/intel64/libAutoPlugin.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libHeteroPlugin.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libMultiDevicePlugin.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/plugins.xml",
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
"deployment_tools/inference_engine/lib/intel64/libinference_engine_preproc.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libinference_engine_ir_reader.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libinference_engine_c_api.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libAutoPlugin.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libHeteroPlugin.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/libMultiDevicePlugin.so",
|
||||
"deployment_tools/inference_engine/lib/intel64/plugins.xml",
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"deployment_tools/inference_engine/bin/intel64/Release/inference_engine_preproc.dll",
|
||||
"deployment_tools/inference_engine/bin/intel64/Release/inference_engine_ir_reader.dll",
|
||||
"deployment_tools/inference_engine/bin/intel64/Release/inference_engine_c_api.dll",
|
||||
"deployment_tools/inference_engine/bin/intel64/Release/AutoPlugin.dll",
|
||||
"deployment_tools/inference_engine/lib/intel64/Release/HeteroPlugin.dll",
|
||||
"deployment_tools/inference_engine/lib/intel64/Release/MultiDevicePlugin.dll",
|
||||
"deployment_tools/inference_engine/bin/intel64/Release/plugins.xml",
|
||||
|
||||
Reference in new issue
Block a user