From 1b495e3221e33ade737396508d5baff2bb04bced Mon Sep 17 00:00:00 2001 From: Xuejun Zhai Date: Fri, 23 Jun 2023 13:10:55 +0800 Subject: [PATCH] [Remote Context] Add operate () overload method in class RemoteContext (#18186) * [Remote Context] Add operate () overload method in class RemoteContext to check is initialized or not Signed-off-by: Zhai, Xuejun * [Remote Context] fix format issue Signed-off-by: Zhai, Xuejun --------- Signed-off-by: Zhai, Xuejun --- .../include/openvino/runtime/remote_context.hpp | 6 ++++++ src/inference/src/cpp/ie_remote_context.cpp | 4 ++++ src/inference/src/dev/core_impl.cpp | 10 +++++----- src/inference/src/dev/icompiled_model.cpp | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/inference/include/openvino/runtime/remote_context.hpp b/src/inference/include/openvino/runtime/remote_context.hpp index 42b7ceb0e20..6de4686cc57 100644 --- a/src/inference/include/openvino/runtime/remote_context.hpp +++ b/src/inference/include/openvino/runtime/remote_context.hpp @@ -101,6 +101,12 @@ public: */ RemoteContext& operator=(RemoteContext&& other) = default; + /** + * @brief Checks if current RemoteContext object is initialized + * @return `true` if current RemoteContext object is initialized, `false` - otherwise + */ + operator bool() const noexcept; + /** * @brief Destructor that preserves unloading order of implementation object and reference to the library. */ diff --git a/src/inference/src/cpp/ie_remote_context.cpp b/src/inference/src/cpp/ie_remote_context.cpp index c768b0fb4ab..02ed3406b56 100644 --- a/src/inference/src/cpp/ie_remote_context.cpp +++ b/src/inference/src/cpp/ie_remote_context.cpp @@ -50,6 +50,10 @@ void RemoteContext::type_check(const RemoteContext& context, } } +RemoteContext::operator bool() const noexcept { + return (!!_impl); +} + RemoteContext::~RemoteContext() { _impl = {}; } diff --git a/src/inference/src/dev/core_impl.cpp b/src/inference/src/dev/core_impl.cpp index bcfec41f2e8..347f2737a65 100644 --- a/src/inference/src/dev/core_impl.cpp +++ b/src/inference/src/dev/core_impl.cpp @@ -566,7 +566,7 @@ ov::SoPtr ov::CoreImpl::compile_model(const std::shared_ptr< const ov::RemoteContext& context, const ov::AnyMap& config) const { OV_ITT_SCOPE(FIRST_INFERENCE, ie::itt::domains::IE_LT, "Core::compile_model::RemoteContext"); - if (context._impl == nullptr) { + if (!context) { IE_THROW() << "Remote context is null"; } std::string deviceName = context.get_device_name(); @@ -607,8 +607,8 @@ ov::SoPtr ov::CoreImpl::compile_model_with_preprocess(ov::Pl preprocessed_model = cloned_model; } - return context._impl ? plugin.compile_model(preprocessed_model, context, config) - : plugin.compile_model(preprocessed_model, config); + return context ? plugin.compile_model(preprocessed_model, context, config) + : plugin.compile_model(preprocessed_model, config); } ov::SoPtr ov::CoreImpl::compile_model(const std::string& model_path, @@ -1213,8 +1213,8 @@ ov::SoPtr ov::CoreImpl::load_model_from_cache( throw HeaderException(); } - compiled_model = context._impl ? plugin.import_model(networkStream, context, config) - : plugin.import_model(networkStream, config); + compiled_model = context ? plugin.import_model(networkStream, context, config) + : plugin.import_model(networkStream, config); if (auto wrapper = std::dynamic_pointer_cast(compiled_model._ptr)) { wrapper->get_executable_network()->loadedFromCache(); } diff --git a/src/inference/src/dev/icompiled_model.cpp b/src/inference/src/dev/icompiled_model.cpp index 81b55f27f99..8f1a64060b0 100644 --- a/src/inference/src/dev/icompiled_model.cpp +++ b/src/inference/src/dev/icompiled_model.cpp @@ -114,7 +114,7 @@ std::shared_ptr ov::ICompiledModel::get_context() const { if (auto wrapper = dynamic_cast(this)) { return ov::legacy_convert::convert_remote_context(wrapper->get_executable_network()->GetContext()); } - if (m_context._impl) + if (m_context) return m_context._impl; return m_plugin->get_default_context({}); }