Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/common/util/src/os/lin/lin_shared_object_loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
namespace ov {
namespace util {
std::shared_ptr<void> load_shared_object(const char* path) {
auto shared_object = std::shared_ptr<void>{dlopen(path, RTLD_NOW), [&path](void* shared_object) {
std::string p(path);
auto shared_object = std::shared_ptr<void>{dlopen(path, RTLD_NOW), [p](void* shared_object) {
if (shared_object != nullptr) {
std::cout << path << " is closed \n";
std::cout << p << " is closed \n";
if (0 != dlclose(shared_object)) {
std::cerr << "dlclose failed";
if (auto error = dlerror()) {
Expand Down
3 changes: 2 additions & 1 deletion src/core/include/openvino/core/model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <vector>

#include "openvino/core/core_visibility.hpp"
#include "openvino/core/extension.hpp"
#include "openvino/core/node.hpp"
#include "openvino/core/rtti.hpp"
#include "openvino/op/assign.hpp"
Expand Down Expand Up @@ -40,7 +41,7 @@ class OPENVINO_API Model : public std::enable_shared_from_this<Model> {
friend OPENVINO_API std::shared_ptr<Model> clone_model(const Model& func,
std::unordered_map<Node*, std::shared_ptr<Node>>& node_map);
std::shared_ptr<void> m_shared_object; // Frontend plugin shared object handle.
std::vector<std::shared_ptr<void>> m_extension_shared_objects = {};
std::vector<std::shared_ptr<ov::Extension>> m_extension_shared_objects = {};

public:
static const ::ov::DiscreteTypeInfo& get_type_info_static() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class FRONTEND_API FrontEnd {
friend class FrontEndManager;

std::shared_ptr<void> m_shared_object = {}; // Library handle
/*static*/ std::vector<std::shared_ptr<void>> m_extension_shared_objects;
std::vector<std::shared_ptr<ov::Extension>> m_loaded_extensions;
std::shared_ptr<FrontEnd> m_actual = {};

public:
Expand Down
39 changes: 22 additions & 17 deletions src/frontends/common/src/frontend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ std::shared_ptr<ov::Model> FrontEnd::create_copy(const std::shared_ptr<ov::Model

FrontEnd::FrontEnd() = default;

FrontEnd::~FrontEnd() = default;
FrontEnd::~FrontEnd() {
if (m_actual) {
std::cout << "~FrontEnd - wrapper\n";
}
}

bool FrontEnd::supported_impl(const std::vector<ov::Any>& variants) const {
if (m_actual) {
Expand All @@ -49,9 +53,9 @@ InputModel::Ptr FrontEnd::load_impl(const std::vector<ov::Any>& variants) const

std::shared_ptr<ov::Model> FrontEnd::convert(const InputModel::Ptr& model) const {
FRONT_END_CHECK_IMPLEMENTED(m_actual, convert);
std::cout << "this address: " << this << " and size: " << m_extension_shared_objects.size() << " during convert call"<< "\n";
// std::cout << "this address: " << this << " and size: " << m_extension_shared_objects.size() << " during convert call"<< "\n";
auto converted_model = FrontEnd::create_copy(m_actual->convert(model->m_actual), m_shared_object);
for(const auto& ext : m_extension_shared_objects) {
for(const auto& ext : m_loaded_extensions) {
std::cout << "assign shared ptr during convert \n";
converted_model->m_extension_shared_objects.push_back(ext);
}
Expand Down Expand Up @@ -80,7 +84,7 @@ void FrontEnd::normalize(const std::shared_ptr<Model>& model) const {

void FrontEnd::add_extension(const std::shared_ptr<ov::Extension>& extension) {
std::cout << "added extension shared ptr 1 \n";
m_extension_shared_objects.push_back(extension);
m_loaded_extensions.push_back(extension);
if (m_actual) {
m_actual->add_extension(extension);
return;
Expand All @@ -92,24 +96,25 @@ void FrontEnd::add_extension(const std::shared_ptr<ov::Extension>& extension) {
//std::vector<std::shared_ptr<void>> FrontEnd::m_extension_shared_objects = {}; static test

void FrontEnd::add_extension(const std::vector<std::shared_ptr<ov::Extension>>& extensions) {
for (const auto& ext : extensions) {
std::cout << "added extension to FrontEnd with address: " << this << "\n";
m_extension_shared_objects.push_back(ext);
}
if (m_actual) {
m_actual->add_extension(extensions);
return;
}
// for (const auto& ext : extensions) {
std::cout << "added extension to FrontEnd with address: " << this << "\n";
// m_extension_shared_objects.push_back(ext);
// }
// if (m_actual) {
// m_actual->add_extension(extensions);
// return;
// }
for (const auto& ext : extensions)
add_extension(ext);
}

void FrontEnd::add_extension(const std::string& library_path) {
if (m_actual) {
m_actual->add_extension(library_path);
return;
}
add_extension(ov::detail::load_extensions(library_path));
auto extensions_lib = ov::detail::load_extensions(library_path);
add_extension(extensions_lib);
// if (m_actual) {
// m_actual->add_extension(library_path);
// return;
// }
}

#ifdef OPENVINO_ENABLE_UNICODE_PATH_SUPPORT
Expand Down