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
|
||||
std::shared_ptr<ov::Model> clone() const;
|
||||
|
||||
/// \brief Reference to frontend maanager
|
||||
std::shared_ptr<void> m_femgr;
|
||||
|
||||
/// Model outputs
|
||||
std::vector<ov::Output<ov::Node>> outputs();
|
||||
ov::Output<ov::Node> output();
|
||||
|
@ -716,7 +716,6 @@ private:
|
||||
element::Type m_element_type;
|
||||
Shape m_shape{};
|
||||
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_checked{false};
|
||||
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);
|
||||
|
||||
namespace ov {
|
||||
namespace frontend {
|
||||
class FrontEndManager;
|
||||
std::shared_ptr<FrontEndManager> get_frontend_manager();
|
||||
} // namespace frontend
|
||||
} // namespace ov
|
||||
|
||||
namespace {
|
||||
|
||||
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");
|
||||
|
||||
m_shared_rt_info = std::make_shared<SharedRTInfo>();
|
||||
m_femgr = ov::frontend::get_frontend_manager();
|
||||
|
||||
const auto& ordered_ops = get_ordered_ops();
|
||||
if (detect_parameters)
|
||||
|
@ -17,13 +17,6 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace ov {
|
||||
namespace frontend {
|
||||
class FrontEndManager;
|
||||
std::shared_ptr<FrontEndManager> get_frontend_manager();
|
||||
} // namespace frontend
|
||||
} // namespace ov
|
||||
|
||||
template <typename T>
|
||||
static inline string to_cpp_string(T value) {
|
||||
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());
|
||||
}
|
||||
constructor_validate_and_infer_types();
|
||||
m_femgr = ov::frontend::get_frontend_manager();
|
||||
}
|
||||
|
||||
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) {
|
||||
allocate_buffer(memset_allocation);
|
||||
constructor_validate_and_infer_types();
|
||||
m_femgr = ov::frontend::get_frontend_manager();
|
||||
}
|
||||
|
||||
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;
|
||||
update_identical_flags(other.m_all_elements_bitwise_identical_checked, other.m_all_elements_bitwise_identical);
|
||||
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) {
|
||||
@ -235,14 +225,9 @@ ov::op::v0::Constant::Constant(const Constant& other, const ov::Shape& new_shape
|
||||
m_data = other.m_data;
|
||||
update_identical_flags(other.m_all_elements_bitwise_identical_checked, other.m_all_elements_bitwise_identical);
|
||||
constructor_validate_and_infer_types();
|
||||
m_femgr = ov::frontend::get_frontend_manager();
|
||||
}
|
||||
|
||||
ov::op::v0::Constant::~Constant() {
|
||||
// guarantee m_data is released before femgr
|
||||
m_data = nullptr;
|
||||
m_femgr = nullptr;
|
||||
}
|
||||
ov::op::v0::Constant::~Constant() = default;
|
||||
|
||||
string ov::op::v0::Constant::convert_value_to_string(size_t index) const {
|
||||
string rc;
|
||||
|
@ -22,8 +22,6 @@ using FrontEndFactory = std::function<FrontEnd::Ptr()>;
|
||||
/// frontends This is a main frontend entry point for client applications
|
||||
class FRONTEND_API FrontEndManager final {
|
||||
public:
|
||||
using Ptr = std::shared_ptr<FrontEndManager>;
|
||||
|
||||
/// \brief Default constructor. Searches and loads of available frontends
|
||||
FrontEndManager();
|
||||
|
||||
@ -81,7 +79,6 @@ private:
|
||||
|
||||
template <>
|
||||
FRONTEND_API FrontEnd::Ptr FrontEndManager::load_by_model(const std::vector<ov::Any>& variants);
|
||||
FRONTEND_API FrontEndManager::Ptr get_frontend_manager();
|
||||
|
||||
// --------- Plugin exporting information --------------
|
||||
|
||||
|
@ -242,40 +242,3 @@ template <>
|
||||
FrontEnd::Ptr FrontEndManager::load_by_model(const std::vector<ov::Any>& 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 frontend {
|
||||
class FrontEndManager;
|
||||
std::shared_ptr<FrontEndManager> get_frontend_manager();
|
||||
} // namespace frontend
|
||||
|
||||
// Specify the default device when no device name is provided.
|
||||
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;
|
||||
mutable std::unordered_set<std::string> opsetNames;
|
||||
// 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:
|
||||
CoreImpl(bool _newAPI) : newAPI(_newAPI) {
|
||||
executorManagerPtr = executorManager();
|
||||
frontEndManagerPtr = ov::frontend::get_frontend_manager();
|
||||
opsetNames.insert("opset1");
|
||||
opsetNames.insert("opset2");
|
||||
opsetNames.insert("opset3");
|
||||
|
@ -440,6 +440,11 @@ CNNNetwork convert_to_cnnnetwork(std::shared_ptr<ngraph::Function>& function,
|
||||
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> extensions;
|
||||
for (const auto& ext : exts) {
|
||||
@ -483,7 +488,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath,
|
||||
#endif
|
||||
|
||||
// Try to load with FrontEndManager
|
||||
auto manager = ov::frontend::get_frontend_manager();
|
||||
auto& manager = get_frontend_manager();
|
||||
ov::frontend::FrontEnd::Ptr FE;
|
||||
ov::frontend::InputModel::Ptr inputModel;
|
||||
|
||||
@ -498,7 +503,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath,
|
||||
params.emplace_back(weights_path);
|
||||
}
|
||||
|
||||
FE = manager->load_by_model(params);
|
||||
FE = manager.load_by_model(params);
|
||||
if (FE) {
|
||||
FE->add_extension(ov_exts);
|
||||
if (!exts.empty())
|
||||
@ -513,7 +518,7 @@ CNNNetwork details::ReadNetwork(const std::string& modelPath,
|
||||
|
||||
const auto fileExt = modelPath.substr(modelPath.find_last_of(".") + 1);
|
||||
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 + " ";
|
||||
IE_THROW(NetworkNotRead) << "Unable to read the model: " << modelPath
|
||||
<< " Please check that model format: " << fileExt
|
||||
@ -550,7 +555,7 @@ CNNNetwork details::ReadNetwork(const std::string& model,
|
||||
#endif // ENABLE_IR_V7_READER
|
||||
|
||||
// Try to load with FrontEndManager
|
||||
auto manager = ov::frontend::get_frontend_manager();
|
||||
auto& manager = get_frontend_manager();
|
||||
ov::frontend::FrontEnd::Ptr FE;
|
||||
ov::frontend::InputModel::Ptr inputModel;
|
||||
|
||||
@ -562,7 +567,7 @@ CNNNetwork details::ReadNetwork(const std::string& model,
|
||||
params.emplace_back(weights_buffer);
|
||||
}
|
||||
|
||||
FE = manager->load_by_model(params);
|
||||
FE = manager.load_by_model(params);
|
||||
if (FE) {
|
||||
FE->add_extension(ov_exts);
|
||||
if (!exts.empty())
|
||||
|
Loading…
Reference in New Issue
Block a user