Restore FEM to be static instance (#12219)
* Restore FEM to be static instance * Restore frontend manager in ie_read_network.cpp
This commit is contained in:
parent
00fe7be00f
commit
9a3c969cb7
@ -114,9 +114,6 @@ public:
|
|||||||
/// \brief Clones the original model
|
/// \brief Clones the original model
|
||||||
std::shared_ptr<ov::Model> clone() const;
|
std::shared_ptr<ov::Model> clone() const;
|
||||||
|
|
||||||
/// \brief Reference to frontend maanager
|
|
||||||
std::shared_ptr<void> m_femgr;
|
|
||||||
|
|
||||||
/// Model outputs
|
/// Model outputs
|
||||||
std::vector<ov::Output<ov::Node>> outputs();
|
std::vector<ov::Output<ov::Node>> outputs();
|
||||||
ov::Output<ov::Node> output();
|
ov::Output<ov::Node> output();
|
||||||
|
@ -716,7 +716,6 @@ private:
|
|||||||
element::Type m_element_type;
|
element::Type m_element_type;
|
||||||
Shape m_shape{};
|
Shape m_shape{};
|
||||||
std::shared_ptr<ngraph::runtime::AlignedBuffer> m_data;
|
std::shared_ptr<ngraph::runtime::AlignedBuffer> m_data;
|
||||||
std::shared_ptr<void> m_femgr;
|
|
||||||
mutable std::atomic_bool m_all_elements_bitwise_identical{false};
|
mutable std::atomic_bool m_all_elements_bitwise_identical{false};
|
||||||
mutable std::atomic_bool m_all_elements_bitwise_identical_checked{false};
|
mutable std::atomic_bool m_all_elements_bitwise_identical_checked{false};
|
||||||
bool m_alloc_buffer_on_visit_attributes = true;
|
bool m_alloc_buffer_on_visit_attributes = true;
|
||||||
|
@ -34,13 +34,6 @@ BWDCMP_RTTI_DEFINITION(ov::AttributeAdapter<std::shared_ptr<ov::Model>>);
|
|||||||
|
|
||||||
atomic<size_t> ov::Model::m_next_instance_id(0);
|
atomic<size_t> ov::Model::m_next_instance_id(0);
|
||||||
|
|
||||||
namespace ov {
|
|
||||||
namespace frontend {
|
|
||||||
class FrontEndManager;
|
|
||||||
std::shared_ptr<FrontEndManager> get_frontend_manager();
|
|
||||||
} // namespace frontend
|
|
||||||
} // namespace ov
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
void check_all_variables_registered(const std::vector<shared_ptr<ov::Node>>& ordered_ops,
|
void check_all_variables_registered(const std::vector<shared_ptr<ov::Node>>& ordered_ops,
|
||||||
@ -199,7 +192,6 @@ void ov::Model::prerequirements(bool detect_variables, bool detect_parameters) {
|
|||||||
OV_ITT_SCOPED_TASK(ov::itt::domains::nGraph, "Model::prerequirements");
|
OV_ITT_SCOPED_TASK(ov::itt::domains::nGraph, "Model::prerequirements");
|
||||||
|
|
||||||
m_shared_rt_info = std::make_shared<SharedRTInfo>();
|
m_shared_rt_info = std::make_shared<SharedRTInfo>();
|
||||||
m_femgr = ov::frontend::get_frontend_manager();
|
|
||||||
|
|
||||||
const auto& ordered_ops = get_ordered_ops();
|
const auto& ordered_ops = get_ordered_ops();
|
||||||
if (detect_parameters)
|
if (detect_parameters)
|
||||||
|
@ -17,13 +17,6 @@
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
namespace ov {
|
|
||||||
namespace frontend {
|
|
||||||
class FrontEndManager;
|
|
||||||
std::shared_ptr<FrontEndManager> get_frontend_manager();
|
|
||||||
} // namespace frontend
|
|
||||||
} // namespace ov
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static inline string to_cpp_string(T value) {
|
static inline string to_cpp_string(T value) {
|
||||||
string rc;
|
string rc;
|
||||||
@ -57,7 +50,6 @@ ov::op::v0::Constant::Constant(const shared_ptr<ngraph::runtime::Tensor>& tensor
|
|||||||
tensor->read(get_data_ptr_nc(), tensor->get_size_in_bytes());
|
tensor->read(get_data_ptr_nc(), tensor->get_size_in_bytes());
|
||||||
}
|
}
|
||||||
constructor_validate_and_infer_types();
|
constructor_validate_and_infer_types();
|
||||||
m_femgr = ov::frontend::get_frontend_manager();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ov::op::v0::Constant::Constant(const element::Type& type,
|
ov::op::v0::Constant::Constant(const element::Type& type,
|
||||||
@ -201,7 +193,6 @@ ov::op::v0::Constant::Constant(bool memset_allocation, const element::Type& type
|
|||||||
m_shape(shape) {
|
m_shape(shape) {
|
||||||
allocate_buffer(memset_allocation);
|
allocate_buffer(memset_allocation);
|
||||||
constructor_validate_and_infer_types();
|
constructor_validate_and_infer_types();
|
||||||
m_femgr = ov::frontend::get_frontend_manager();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ov::op::v0::Constant::allocate_buffer(bool memset_allocation) {
|
void ov::op::v0::Constant::allocate_buffer(bool memset_allocation) {
|
||||||
@ -223,7 +214,6 @@ ov::op::v0::Constant::Constant(const Constant& other) {
|
|||||||
m_data = other.m_data;
|
m_data = other.m_data;
|
||||||
update_identical_flags(other.m_all_elements_bitwise_identical_checked, other.m_all_elements_bitwise_identical);
|
update_identical_flags(other.m_all_elements_bitwise_identical_checked, other.m_all_elements_bitwise_identical);
|
||||||
constructor_validate_and_infer_types();
|
constructor_validate_and_infer_types();
|
||||||
m_femgr = ov::frontend::get_frontend_manager();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ov::op::v0::Constant::Constant(const Constant& other, const ov::Shape& new_shape) {
|
ov::op::v0::Constant::Constant(const Constant& other, const ov::Shape& new_shape) {
|
||||||
@ -235,14 +225,9 @@ ov::op::v0::Constant::Constant(const Constant& other, const ov::Shape& new_shape
|
|||||||
m_data = other.m_data;
|
m_data = other.m_data;
|
||||||
update_identical_flags(other.m_all_elements_bitwise_identical_checked, other.m_all_elements_bitwise_identical);
|
update_identical_flags(other.m_all_elements_bitwise_identical_checked, other.m_all_elements_bitwise_identical);
|
||||||
constructor_validate_and_infer_types();
|
constructor_validate_and_infer_types();
|
||||||
m_femgr = ov::frontend::get_frontend_manager();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ov::op::v0::Constant::~Constant() {
|
ov::op::v0::Constant::~Constant() = default;
|
||||||
// guarantee m_data is released before femgr
|
|
||||||
m_data = nullptr;
|
|
||||||
m_femgr = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
string ov::op::v0::Constant::convert_value_to_string(size_t index) const {
|
string ov::op::v0::Constant::convert_value_to_string(size_t index) const {
|
||||||
string rc;
|
string rc;
|
||||||
|
@ -22,8 +22,6 @@ using FrontEndFactory = std::function<FrontEnd::Ptr()>;
|
|||||||
/// frontends This is a main frontend entry point for client applications
|
/// frontends This is a main frontend entry point for client applications
|
||||||
class FRONTEND_API FrontEndManager final {
|
class FRONTEND_API FrontEndManager final {
|
||||||
public:
|
public:
|
||||||
using Ptr = std::shared_ptr<FrontEndManager>;
|
|
||||||
|
|
||||||
/// \brief Default constructor. Searches and loads of available frontends
|
/// \brief Default constructor. Searches and loads of available frontends
|
||||||
FrontEndManager();
|
FrontEndManager();
|
||||||
|
|
||||||
@ -81,7 +79,6 @@ private:
|
|||||||
|
|
||||||
template <>
|
template <>
|
||||||
FRONTEND_API FrontEnd::Ptr FrontEndManager::load_by_model(const std::vector<ov::Any>& variants);
|
FRONTEND_API FrontEnd::Ptr FrontEndManager::load_by_model(const std::vector<ov::Any>& variants);
|
||||||
FRONTEND_API FrontEndManager::Ptr get_frontend_manager();
|
|
||||||
|
|
||||||
// --------- Plugin exporting information --------------
|
// --------- Plugin exporting information --------------
|
||||||
|
|
||||||
|
@ -242,40 +242,3 @@ template <>
|
|||||||
FrontEnd::Ptr FrontEndManager::load_by_model(const std::vector<ov::Any>& variants) {
|
FrontEnd::Ptr FrontEndManager::load_by_model(const std::vector<ov::Any>& variants) {
|
||||||
return load_by_model_impl(variants);
|
return load_by_model_impl(variants);
|
||||||
}
|
}
|
||||||
namespace ov {
|
|
||||||
namespace frontend {
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
class FrontEndManagerHolder {
|
|
||||||
std::mutex m_mutex;
|
|
||||||
std::weak_ptr<FrontEndManager> m_manager;
|
|
||||||
|
|
||||||
public:
|
|
||||||
FrontEndManagerHolder(const FrontEndManagerHolder&) = delete;
|
|
||||||
FrontEndManagerHolder& operator=(const FrontEndManagerHolder&) = delete;
|
|
||||||
|
|
||||||
FrontEndManagerHolder() = default;
|
|
||||||
|
|
||||||
FrontEndManager::Ptr get() {
|
|
||||||
std::lock_guard<std::mutex> lock(m_mutex);
|
|
||||||
auto manager = m_manager.lock();
|
|
||||||
if (!manager)
|
|
||||||
m_manager = manager = std::make_shared<FrontEndManager>();
|
|
||||||
return manager;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
FrontEndManagerHolder& get_frontend_manager_holder() {
|
|
||||||
static FrontEndManagerHolder frontend_manager_holder;
|
|
||||||
return frontend_manager_holder;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
FrontEndManager::Ptr get_frontend_manager() {
|
|
||||||
return get_frontend_manager_holder().get();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace frontend
|
|
||||||
} // namespace ov
|
|
||||||
|
@ -55,11 +55,6 @@ using namespace std::placeholders;
|
|||||||
|
|
||||||
namespace ov {
|
namespace ov {
|
||||||
|
|
||||||
namespace frontend {
|
|
||||||
class FrontEndManager;
|
|
||||||
std::shared_ptr<FrontEndManager> get_frontend_manager();
|
|
||||||
} // namespace frontend
|
|
||||||
|
|
||||||
// Specify the default device when no device name is provided.
|
// Specify the default device when no device name is provided.
|
||||||
const std::string DEFAULT_DEVICE_NAME = "DEFAULT_DEVICE";
|
const std::string DEFAULT_DEVICE_NAME = "DEFAULT_DEVICE";
|
||||||
|
|
||||||
@ -284,7 +279,6 @@ class CoreImpl : public ie::ICore, public std::enable_shared_from_this<ie::ICore
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
std::shared_ptr<void> frontEndManagerPtr;
|
|
||||||
ExecutorManager::Ptr executorManagerPtr;
|
ExecutorManager::Ptr executorManagerPtr;
|
||||||
mutable std::unordered_set<std::string> opsetNames;
|
mutable std::unordered_set<std::string> opsetNames;
|
||||||
// TODO: make extensions to be optional with conditional compilation
|
// TODO: make extensions to be optional with conditional compilation
|
||||||
@ -453,7 +447,6 @@ class CoreImpl : public ie::ICore, public std::enable_shared_from_this<ie::ICore
|
|||||||
public:
|
public:
|
||||||
CoreImpl(bool _newAPI) : newAPI(_newAPI) {
|
CoreImpl(bool _newAPI) : newAPI(_newAPI) {
|
||||||
executorManagerPtr = executorManager();
|
executorManagerPtr = executorManager();
|
||||||
frontEndManagerPtr = ov::frontend::get_frontend_manager();
|
|
||||||
opsetNames.insert("opset1");
|
opsetNames.insert("opset1");
|
||||||
opsetNames.insert("opset2");
|
opsetNames.insert("opset2");
|
||||||
opsetNames.insert("opset3");
|
opsetNames.insert("opset3");
|
||||||
|
@ -440,6 +440,11 @@ CNNNetwork convert_to_cnnnetwork(std::shared_ptr<ngraph::Function>& function,
|
|||||||
OPENVINO_SUPPRESS_DEPRECATED_END
|
OPENVINO_SUPPRESS_DEPRECATED_END
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ov::frontend::FrontEndManager& get_frontend_manager() {
|
||||||
|
static ov::frontend::FrontEndManager manager;
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<ov::Extension::Ptr> wrap_old_extensions(const std::vector<InferenceEngine::IExtensionPtr>& exts) {
|
std::vector<ov::Extension::Ptr> wrap_old_extensions(const std::vector<InferenceEngine::IExtensionPtr>& exts) {
|
||||||
std::vector<ov::Extension::Ptr> extensions;
|
std::vector<ov::Extension::Ptr> extensions;
|
||||||
for (const auto& ext : exts) {
|
for (const auto& ext : exts) {
|
||||||
@ -483,7 +488,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Try to load with FrontEndManager
|
// Try to load with FrontEndManager
|
||||||
auto manager = ov::frontend::get_frontend_manager();
|
auto& manager = get_frontend_manager();
|
||||||
ov::frontend::FrontEnd::Ptr FE;
|
ov::frontend::FrontEnd::Ptr FE;
|
||||||
ov::frontend::InputModel::Ptr inputModel;
|
ov::frontend::InputModel::Ptr inputModel;
|
||||||
|
|
||||||
@ -498,7 +503,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath,
|
|||||||
params.emplace_back(weights_path);
|
params.emplace_back(weights_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
FE = manager->load_by_model(params);
|
FE = manager.load_by_model(params);
|
||||||
if (FE) {
|
if (FE) {
|
||||||
FE->add_extension(ov_exts);
|
FE->add_extension(ov_exts);
|
||||||
if (!exts.empty())
|
if (!exts.empty())
|
||||||
@ -513,7 +518,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath,
|
|||||||
|
|
||||||
const auto fileExt = modelPath.substr(modelPath.find_last_of(".") + 1);
|
const auto fileExt = modelPath.substr(modelPath.find_last_of(".") + 1);
|
||||||
std::string FEs;
|
std::string FEs;
|
||||||
for (const auto& fe_name : manager->get_available_front_ends())
|
for (const auto& fe_name : manager.get_available_front_ends())
|
||||||
FEs += fe_name + " ";
|
FEs += fe_name + " ";
|
||||||
IE_THROW(NetworkNotRead) << "Unable to read the model: " << modelPath
|
IE_THROW(NetworkNotRead) << "Unable to read the model: " << modelPath
|
||||||
<< " Please check that model format: " << fileExt
|
<< " Please check that model format: " << fileExt
|
||||||
@ -550,7 +555,7 @@ CNNNetwork details::ReadNetwork(const std::string& model,
|
|||||||
#endif // ENABLE_IR_V7_READER
|
#endif // ENABLE_IR_V7_READER
|
||||||
|
|
||||||
// Try to load with FrontEndManager
|
// Try to load with FrontEndManager
|
||||||
auto manager = ov::frontend::get_frontend_manager();
|
auto& manager = get_frontend_manager();
|
||||||
ov::frontend::FrontEnd::Ptr FE;
|
ov::frontend::FrontEnd::Ptr FE;
|
||||||
ov::frontend::InputModel::Ptr inputModel;
|
ov::frontend::InputModel::Ptr inputModel;
|
||||||
|
|
||||||
@ -562,7 +567,7 @@ CNNNetwork details::ReadNetwork(const std::string& model,
|
|||||||
params.emplace_back(weights_buffer);
|
params.emplace_back(weights_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
FE = manager->load_by_model(params);
|
FE = manager.load_by_model(params);
|
||||||
if (FE) {
|
if (FE) {
|
||||||
FE->add_extension(ov_exts);
|
FE->add_extension(ov_exts);
|
||||||
if (!exts.empty())
|
if (!exts.empty())
|
||||||
|
Loading…
Reference in New Issue
Block a user