[ONNX FE] Enable Place classes r-value optimization (#7485)
This commit is contained in:
parent
c0f01cdbd1
commit
bd89f78661
|
|
@ -67,8 +67,9 @@ Place::Ptr InputModelONNX::get_place_by_operation_name(const std::string& operat
|
|||
|
||||
Place::Ptr InputModelONNX::get_place_by_operation_name_and_input_port(const std::string& operation_name,
|
||||
int input_port_index) {
|
||||
const auto edge = m_editor->find_input_edge(onnx_editor::EditorNode(operation_name), input_port_index);
|
||||
return std::make_shared<PlaceInputEdgeONNX>(edge, m_editor);
|
||||
return std::make_shared<PlaceInputEdgeONNX>(
|
||||
m_editor->find_input_edge(onnx_editor::EditorNode(operation_name), input_port_index),
|
||||
m_editor);
|
||||
}
|
||||
|
||||
void InputModelONNX::set_partial_shape(Place::Ptr place, const ngraph::PartialShape& shape) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@ using namespace ngraph::frontend;
|
|||
PlaceInputEdgeONNX::PlaceInputEdgeONNX(const onnx_editor::InputEdge& edge,
|
||||
std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_edge{edge},
|
||||
m_editor{editor} {}
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
PlaceInputEdgeONNX::PlaceInputEdgeONNX(onnx_editor::InputEdge&& edge,
|
||||
std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_edge{std::move(edge)},
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
onnx_editor::InputEdge PlaceInputEdgeONNX::get_input_edge() const {
|
||||
return m_edge;
|
||||
|
|
@ -39,14 +44,18 @@ bool PlaceInputEdgeONNX::is_equal_data(Place::Ptr another) const {
|
|||
}
|
||||
|
||||
Place::Ptr PlaceInputEdgeONNX::get_source_tensor() const {
|
||||
const auto tensor_name = m_editor->get_source_tensor_name(m_edge);
|
||||
return std::make_shared<PlaceTensorONNX>(tensor_name, m_editor);
|
||||
return std::make_shared<PlaceTensorONNX>(m_editor->get_source_tensor_name(m_edge), m_editor);
|
||||
}
|
||||
|
||||
PlaceOutputEdgeONNX::PlaceOutputEdgeONNX(const onnx_editor::OutputEdge& edge,
|
||||
std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_edge{edge},
|
||||
m_editor{editor} {}
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
PlaceOutputEdgeONNX::PlaceOutputEdgeONNX(onnx_editor::OutputEdge&& edge,
|
||||
std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_edge{std::move(edge)},
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
onnx_editor::OutputEdge PlaceOutputEdgeONNX::get_output_edge() const {
|
||||
return m_edge;
|
||||
|
|
@ -73,13 +82,16 @@ bool PlaceOutputEdgeONNX::is_equal_data(Place::Ptr another) const {
|
|||
}
|
||||
|
||||
Place::Ptr PlaceOutputEdgeONNX::get_target_tensor() const {
|
||||
const auto tensor_name = m_editor->get_target_tensor_name(m_edge);
|
||||
return std::make_shared<PlaceTensorONNX>(tensor_name, m_editor);
|
||||
return std::make_shared<PlaceTensorONNX>(m_editor->get_target_tensor_name(m_edge), m_editor);
|
||||
}
|
||||
|
||||
PlaceTensorONNX::PlaceTensorONNX(const std::string& name, std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_name(name),
|
||||
m_editor(editor) {}
|
||||
: m_name{name},
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
PlaceTensorONNX::PlaceTensorONNX(std::string&& name, std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_name{std::move(name)},
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
std::vector<std::string> PlaceTensorONNX::get_names() const {
|
||||
return {m_name};
|
||||
|
|
@ -136,7 +148,11 @@ bool PlaceTensorONNX::is_equal_data(Place::Ptr another) const {
|
|||
|
||||
PlaceOpONNX::PlaceOpONNX(const onnx_editor::EditorNode& node, std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_node{node},
|
||||
m_editor{editor} {}
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
PlaceOpONNX::PlaceOpONNX(onnx_editor::EditorNode&& node, std::shared_ptr<onnx_editor::ONNXModelEditor> editor)
|
||||
: m_node{std::move(node)},
|
||||
m_editor{std::move(editor)} {}
|
||||
|
||||
std::vector<std::string> PlaceOpONNX::get_names() const {
|
||||
return {m_node.m_node_name};
|
||||
|
|
@ -151,8 +167,9 @@ Place::Ptr PlaceOpONNX::get_output_port() const {
|
|||
|
||||
Place::Ptr PlaceOpONNX::get_output_port(int output_port_index) const {
|
||||
if (output_port_index < m_editor->get_output_ports(m_node).size()) {
|
||||
const auto output_edge = m_editor->find_output_edge(m_node, onnx_editor::EditorOutput{output_port_index});
|
||||
return std::make_shared<PlaceOutputEdgeONNX>(output_edge, m_editor);
|
||||
return std::make_shared<PlaceOutputEdgeONNX>(
|
||||
m_editor->find_output_edge(m_node, onnx_editor::EditorOutput{output_port_index}),
|
||||
m_editor);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -160,8 +177,9 @@ Place::Ptr PlaceOpONNX::get_output_port(int output_port_index) const {
|
|||
Place::Ptr PlaceOpONNX::get_output_port(const std::string& output_port_name) const {
|
||||
const auto output_ports = m_editor->get_output_ports(m_node);
|
||||
if (std::count(std::begin(output_ports), std::end(output_ports), output_port_name) == 1) {
|
||||
const auto output_edge = m_editor->find_output_edge(m_node, onnx_editor::EditorOutput{output_port_name});
|
||||
return std::make_shared<PlaceOutputEdgeONNX>(output_edge, m_editor);
|
||||
return std::make_shared<PlaceOutputEdgeONNX>(
|
||||
m_editor->find_output_edge(m_node, onnx_editor::EditorOutput{output_port_name}),
|
||||
m_editor);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -175,8 +193,9 @@ Place::Ptr PlaceOpONNX::get_input_port() const {
|
|||
|
||||
Place::Ptr PlaceOpONNX::get_input_port(int input_port_index) const {
|
||||
if (input_port_index < m_editor->get_input_ports(m_node).size()) {
|
||||
const auto input_edge = m_editor->find_input_edge(m_node, onnx_editor::EditorInput{input_port_index});
|
||||
return std::make_shared<PlaceInputEdgeONNX>(input_edge, m_editor);
|
||||
return std::make_shared<PlaceInputEdgeONNX>(
|
||||
m_editor->find_input_edge(m_node, onnx_editor::EditorInput{input_port_index}),
|
||||
m_editor);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -184,8 +203,9 @@ Place::Ptr PlaceOpONNX::get_input_port(int input_port_index) const {
|
|||
Place::Ptr PlaceOpONNX::get_input_port(const std::string& input_name) const {
|
||||
const auto input_ports = m_editor->get_input_ports(m_node);
|
||||
if (std::count(std::begin(input_ports), std::end(input_ports), input_name) == 1) {
|
||||
const auto input_edge = m_editor->find_input_edge(m_node, onnx_editor::EditorInput{input_name});
|
||||
return std::make_shared<PlaceInputEdgeONNX>(input_edge, m_editor);
|
||||
return std::make_shared<PlaceInputEdgeONNX>(
|
||||
m_editor->find_input_edge(m_node, onnx_editor::EditorInput{input_name}),
|
||||
m_editor);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ namespace frontend {
|
|||
class PlaceInputEdgeONNX : public Place {
|
||||
public:
|
||||
PlaceInputEdgeONNX(const onnx_editor::InputEdge& edge, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
PlaceInputEdgeONNX(onnx_editor::InputEdge&& edge, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
|
||||
onnx_editor::InputEdge get_input_edge() const;
|
||||
|
||||
|
|
@ -34,6 +35,7 @@ private:
|
|||
class PlaceOutputEdgeONNX : public Place {
|
||||
public:
|
||||
PlaceOutputEdgeONNX(const onnx_editor::OutputEdge& edge, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
PlaceOutputEdgeONNX(onnx_editor::OutputEdge&& edge, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
|
||||
onnx_editor::OutputEdge get_output_edge() const;
|
||||
|
||||
|
|
@ -55,6 +57,7 @@ private:
|
|||
class PlaceTensorONNX : public Place {
|
||||
public:
|
||||
PlaceTensorONNX(const std::string& name, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
PlaceTensorONNX(std::string&& name, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
|
||||
std::vector<std::string> get_names() const override;
|
||||
|
||||
|
|
@ -80,6 +83,7 @@ private:
|
|||
class PlaceOpONNX : public Place {
|
||||
public:
|
||||
PlaceOpONNX(const onnx_editor::EditorNode& node, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
PlaceOpONNX(onnx_editor::EditorNode&& node, std::shared_ptr<onnx_editor::ONNXModelEditor> editor);
|
||||
std::vector<std::string> get_names() const override;
|
||||
|
||||
Place::Ptr get_output_port() const override;
|
||||
|
|
|
|||
Loading…
Reference in New Issue