Skip to content
Merged
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
11 changes: 11 additions & 0 deletions runtime/onert/core/include/ir/Model.h
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,21 @@ class Model
return data;
}

void addSignatureMap(const ir::SubgraphIndex &index, const std::string &name)
{
_signature_map[index] = name;
}

const std::unordered_map<ir::SubgraphIndex, std::string> &signatureMap() const
{
return _signature_map;
}

private:
// TODO: Apply Heterogeneous lookup for unordered containers (transparent hashing) since C++20
// to use `std::string_view` with lookup functions in unordered containers
std::unordered_map<std::string, std::unique_ptr<const ir::Data>> _metadatas;
std::unordered_map<ir::SubgraphIndex, std::string> _signature_map;
};
} // namespace onert::ir

Expand Down
18 changes: 18 additions & 0 deletions runtime/onert/core/src/loader/BaseLoader.h
Original file line number Diff line number Diff line change
Expand Up @@ -1716,6 +1716,24 @@ template <typename LoaderDomain> void BaseLoader<LoaderDomain>::loadModel()
}
}

// Load signature map
auto const signature_table = _domain_model->signature_defs();
if (signature_table != nullptr)
{
for (uint32_t i = 0; i < signature_table->size(); ++i)
{
const auto signature = signature_table->Get(i);
if (signature == nullptr)
continue;
const auto signature_key = signature->signature_key();
if (signature_key == nullptr)
continue; // signature should have key
const auto subgraph_index = static_cast<uint16_t>(signature->subgraph_index());

model->addSignatureMap(ir::SubgraphIndex{subgraph_index}, signature_key->str());
}
}

// const auto *description = _model->description();
// Load subgraphs and map operations on subgraph
const auto subgraphs = _domain_model->subgraphs();
Expand Down