[IE Python API] Add set_config for executable_network (#7796)

* [IE Python API] Add set_config for executable_network

* fix test

* fix test comment
This commit is contained in:
Anastasia Kuporosova 2021-11-01 12:12:31 +03:00 committed by GitHub
parent 6c00da6e48
commit 58d845f351
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 0 deletions

View File

@ -1011,6 +1011,22 @@ cdef class ExecutableNetwork:
def get_config(self, config_name: str):
return deref(self.impl).getConfig(config_name.encode())
## Sets configuration for current executable network.
#
# @param config: a dictionary of configuration parameters as keys and their values
# @return None
#
# Usage example:\n
# ```python
# ie = IECore()
# net = ie.read_network(model=path_to_xml_file, weights=path_to_bin_file)
# exec_net = ie.load_network(net, "GNA")
# config = exec_net.set_config({"DEVICE_MODE" : "GNA_SW_EXACT"})
# ```
def set_config(self, config: dict):
cdef map[string, string] c_config = dict_to_c_map(config)
deref(self.impl).setConfig(c_config)
## Exports the current executable network.
# @param model_file Full path to the target exported file location
# @return None

View File

@ -358,6 +358,14 @@ PyObject* InferenceEnginePython::IEExecNetwork::getConfig(const std::string& nam
return parse_parameter(actual->GetConfig(name));
}
void InferenceEnginePython::IEExecNetwork::setConfig(const std::map<std::string, std::string>& config) {
std::map<std::string, InferenceEngine::Parameter> newConfig;
for (const auto& item : config) {
newConfig[item.first] = InferenceEngine::Parameter(item.second);
}
actual->SetConfig(newConfig);
}
void InferenceEnginePython::IEExecNetwork::exportNetwork(const std::string& model_file) {
actual->Export(model_file);
}

View File

@ -146,6 +146,7 @@ struct IEExecNetwork {
PyObject* getMetric(const std::string& metric_name);
PyObject* getConfig(const std::string& name);
void setConfig(const std::map<std::string, std::string>& config);
int wait(int num_requests, int64_t timeout);
int getIdleRequestId();

View File

@ -161,6 +161,7 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython":
void exportNetwork(const string & model_file) except +
object getMetric(const string & metric_name) except +
object getConfig(const string & metric_name) except +
void setConfig(const map[string, string]& config) except +
int wait(int num_requests, int64_t timeout) nogil
int getIdleRequestId()
shared_ptr[CExecutableNetwork] getPluginLink() except +

View File

@ -309,6 +309,19 @@ def test_get_config(device):
assert config == "NO"
@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "GNA", reason="Device dependent test")
def test_set_config(device):
ie_core = ie.IECore()
net = ie_core.read_network(model=test_net_xml, weights=test_net_bin)
exec_net = ie_core.load_network(net, device)
exec_net.set_config({"DEVICE_MODE" : "GNA_HW"})
parameter = exec_net.get_config("DEVICE_MODE")
assert parameter == "GNA_HW"
exec_net.set_config({"DEVICE_MODE" : "GNA_SW_EXACT"})
parameter = exec_net.get_config("DEVICE_MODE")
assert parameter == "GNA_SW_EXACT"
# issue 28996
# checks that objects can deallocate in this order, if not - segfault happends
def test_input_info_deallocation(device):