From 7f8786d9aaa2a1926c84aff1ca838ec226c914ab Mon Sep 17 00:00:00 2001 From: Maxim Vafin Date: Mon, 20 Mar 2023 22:08:24 +0100 Subject: [PATCH] [PT FE] Make NodeContext constant inside conversion rules (#16165) * Make NodeContext constant inside conversion rules * Use shared_ptr * Fix ptr * Fix logical not --- .../openvino/frontend/pytorch/frontend.hpp | 2 +- .../frontend/pytorch/node_context.hpp | 34 ++++++------- src/frontends/pytorch/src/node_context.cpp | 10 ++-- .../pytorch/src/op/adaptive_avg_pool3d.cpp | 2 +- .../pytorch/src/op/adaptive_max_pool2d.cpp | 2 +- src/frontends/pytorch/src/op/add.cpp | 2 +- src/frontends/pytorch/src/op/addcmul.cpp | 2 +- src/frontends/pytorch/src/op/addmm.cpp | 2 +- src/frontends/pytorch/src/op/arange.cpp | 2 +- src/frontends/pytorch/src/op/as_tensor.cpp | 2 +- src/frontends/pytorch/src/op/avg_poolnd.cpp | 2 +- src/frontends/pytorch/src/op/batch_norm.cpp | 2 +- src/frontends/pytorch/src/op/bitwise_not.cpp | 2 +- src/frontends/pytorch/src/op/bool.cpp | 2 +- src/frontends/pytorch/src/op/cat.cpp | 2 +- src/frontends/pytorch/src/op/clamp.cpp | 2 +- src/frontends/pytorch/src/op/constant.cpp | 2 +- .../pytorch/src/op/conv_transposend.cpp | 2 +- src/frontends/pytorch/src/op/convnd.cpp | 2 +- src/frontends/pytorch/src/op/convolution.cpp | 2 +- .../pytorch/src/op/convolution_mode.cpp | 2 +- src/frontends/pytorch/src/op/cumsum.cpp | 2 +- src/frontends/pytorch/src/op/dim.cpp | 2 +- src/frontends/pytorch/src/op/div.cpp | 2 +- src/frontends/pytorch/src/op/elu.cpp | 2 +- src/frontends/pytorch/src/op/embedding.cpp | 2 +- src/frontends/pytorch/src/op/expand.cpp | 4 +- src/frontends/pytorch/src/op/eye.cpp | 2 +- src/frontends/pytorch/src/op/flatten.cpp | 2 +- src/frontends/pytorch/src/op/floor_divide.cpp | 2 +- src/frontends/pytorch/src/op/floordiv.cpp | 2 +- src/frontends/pytorch/src/op/full.cpp | 22 ++++----- src/frontends/pytorch/src/op/gelu.cpp | 2 +- src/frontends/pytorch/src/op/get_attr.cpp | 2 +- src/frontends/pytorch/src/op/getitem.cpp | 2 +- src/frontends/pytorch/src/op/glu.cpp | 2 +- src/frontends/pytorch/src/op/grid_sampler.cpp | 2 +- src/frontends/pytorch/src/op/group_norm.cpp | 2 +- src/frontends/pytorch/src/op/hardtanh.cpp | 2 +- src/frontends/pytorch/src/op/if.cpp | 2 +- src/frontends/pytorch/src/op/im2col.cpp | 2 +- src/frontends/pytorch/src/op/index_put_.cpp | 4 +- .../pytorch/src/op/instance_norm.cpp | 2 +- src/frontends/pytorch/src/op/int.cpp | 2 +- src/frontends/pytorch/src/op/layer_norm.cpp | 2 +- src/frontends/pytorch/src/op/len.cpp | 2 +- src/frontends/pytorch/src/op/linear.cpp | 2 +- .../pytorch/src/op/list_construct.cpp | 2 +- src/frontends/pytorch/src/op/log.cpp | 4 +- src/frontends/pytorch/src/op/loop.cpp | 2 +- src/frontends/pytorch/src/op/masked_fill.cpp | 2 +- src/frontends/pytorch/src/op/max_poolnd.cpp | 2 +- src/frontends/pytorch/src/op/mean.cpp | 2 +- src/frontends/pytorch/src/op/meshgrid.cpp | 2 +- src/frontends/pytorch/src/op/min_max.cpp | 4 +- src/frontends/pytorch/src/op/narrow.cpp | 2 +- src/frontends/pytorch/src/op/neg.cpp | 2 +- src/frontends/pytorch/src/op/nms.cpp | 2 +- src/frontends/pytorch/src/op/nonzero.cpp | 2 +- src/frontends/pytorch/src/op/norm.cpp | 2 +- src/frontends/pytorch/src/op/numel.cpp | 2 +- src/frontends/pytorch/src/op/pad.cpp | 2 +- src/frontends/pytorch/src/op/pow.cpp | 2 +- src/frontends/pytorch/src/op/pythonop.cpp | 2 +- src/frontends/pytorch/src/op/reciprocal.cpp | 2 +- src/frontends/pytorch/src/op/relu6.cpp | 2 +- src/frontends/pytorch/src/op/remainder.cpp | 2 +- src/frontends/pytorch/src/op/repeat.cpp | 2 +- .../pytorch/src/op/repeat_interleave.cpp | 2 +- src/frontends/pytorch/src/op/reshape.cpp | 2 +- src/frontends/pytorch/src/op/reshape_as.cpp | 2 +- src/frontends/pytorch/src/op/roi_align.cpp | 2 +- src/frontends/pytorch/src/op/roll.cpp | 2 +- src/frontends/pytorch/src/op/rsqrt.cpp | 2 +- src/frontends/pytorch/src/op/rsub.cpp | 2 +- src/frontends/pytorch/src/op/select.cpp | 2 +- src/frontends/pytorch/src/op/selu.cpp | 2 +- src/frontends/pytorch/src/op/set_item.cpp | 2 +- src/frontends/pytorch/src/op/size.cpp | 2 +- src/frontends/pytorch/src/op/slice.cpp | 2 +- src/frontends/pytorch/src/op/softmax.cpp | 2 +- src/frontends/pytorch/src/op/sort.cpp | 4 +- src/frontends/pytorch/src/op/square.cpp | 2 +- src/frontends/pytorch/src/op/squeeze.cpp | 2 +- src/frontends/pytorch/src/op/sub.cpp | 2 +- src/frontends/pytorch/src/op/sum.cpp | 2 +- src/frontends/pytorch/src/op/to.cpp | 2 +- src/frontends/pytorch/src/op/topk.cpp | 2 +- src/frontends/pytorch/src/op/transpose.cpp | 2 +- src/frontends/pytorch/src/op/trilu.cpp | 4 +- src/frontends/pytorch/src/op/unfold.cpp | 2 +- src/frontends/pytorch/src/op/upsample.cpp | 14 +++--- src/frontends/pytorch/src/op/var_mean.cpp | 4 +- src/frontends/pytorch/src/op/where.cpp | 2 +- src/frontends/pytorch/src/op_table.cpp | 4 +- src/frontends/pytorch/src/op_table.hpp | 2 +- .../pytorch/src/translate_session.cpp | 49 +++++++++---------- .../pytorch/src/translate_session.hpp | 6 +-- src/frontends/pytorch/src/utils.cpp | 2 +- src/frontends/pytorch/src/utils.hpp | 16 +++--- 100 files changed, 173 insertions(+), 180 deletions(-) diff --git a/src/frontends/pytorch/include/openvino/frontend/pytorch/frontend.hpp b/src/frontends/pytorch/include/openvino/frontend/pytorch/frontend.hpp index 123f24fd4a1..9bd62ada8ff 100644 --- a/src/frontends/pytorch/include/openvino/frontend/pytorch/frontend.hpp +++ b/src/frontends/pytorch/include/openvino/frontend/pytorch/frontend.hpp @@ -60,7 +60,7 @@ protected: bool supported_impl(const std::vector& variants) const override; ov::frontend::InputModel::Ptr load_impl(const std::vector& variants) const override; - std::map m_op_translators; + std::map m_op_translators; }; } // namespace pytorch diff --git a/src/frontends/pytorch/include/openvino/frontend/pytorch/node_context.hpp b/src/frontends/pytorch/include/openvino/frontend/pytorch/node_context.hpp index 41205130137..a3c5504c5c0 100644 --- a/src/frontends/pytorch/include/openvino/frontend/pytorch/node_context.hpp +++ b/src/frontends/pytorch/include/openvino/frontend/pytorch/node_context.hpp @@ -19,20 +19,22 @@ typedef std::unordered_map> TensorMap; class NodeContext : public frontend::NodeContext { public: NodeContext(std::shared_ptr decoder, - TensorMap* tensor_map, - ParameterVector* external_parameters, const TensorMap& ext_tensor_map, + std::shared_ptr tensor_map, + std::shared_ptr external_parameters, + std::shared_ptr> mutated_tensors, TranslateSession* translate_session) : frontend::NodeContext(decoder->get_op_type()), m_decoder(decoder), - m_tensor_map(tensor_map), m_ext_tensor_map(ext_tensor_map), + m_tensor_map(tensor_map), m_external_parameters(external_parameters), + m_mutated_tensors(mutated_tensors), m_translate_session(translate_session), m_decoder_inputs(decoder->inputs()), m_decoder_outputs(decoder->outputs()) { - FRONT_END_GENERAL_CHECK(tensor_map != nullptr && external_parameters != nullptr && - translate_session != nullptr); + FRONT_END_GENERAL_CHECK(m_tensor_map != nullptr && m_external_parameters != nullptr && + m_mutated_tensors != nullptr && m_translate_session != nullptr); } // Do not search for input in tensor map; try to access it as a constant of specified type T and return its value @@ -106,11 +108,7 @@ public: "There is no any named attributes in PyTorch node, query by attribute name is not implemented"); } - void mutate_input(size_t index, Output ov_output); - - std::set get_mutated_tensors() const { - return m_mutated_tensors; - } + void mutate_input(size_t index, Output ov_output) const; std::shared_ptr get_decoder() const { return m_decoder; @@ -120,7 +118,7 @@ public: return m_translate_session; } - void add_tensor_to_context(size_t index, Output ov_output); + void add_tensor_to_context(size_t index, Output ov_output) const; Output get_tensor_from_model(size_t index) const { if (m_tensor_map->find(index) != m_tensor_map->end()) { @@ -130,22 +128,22 @@ public: } } - Output get_tensor_from_model_or_create_input(size_t index); + Output get_tensor_from_model_or_create_input(size_t index) const; Output get_input_from_visible_context(size_t index) const; - std::shared_ptr convert_subgraph(size_t index); + std::shared_ptr convert_subgraph(size_t index) const; private: std::shared_ptr m_decoder; - std::set m_mutated_tensors; - TensorMap* m_tensor_map; const TensorMap& m_ext_tensor_map; - ParameterVector* m_external_parameters; - TranslateSession* m_translate_session; + std::shared_ptr m_tensor_map; + std::shared_ptr m_external_parameters; + std::shared_ptr> m_mutated_tensors; + TranslateSession* m_translate_session = nullptr; const std::vector m_decoder_inputs; const std::vector m_decoder_outputs; }; -using PytorchCreatorFunction = std::function; +using CreatorFunction = std::function; } // namespace pytorch } // namespace frontend diff --git a/src/frontends/pytorch/src/node_context.cpp b/src/frontends/pytorch/src/node_context.cpp index 10ac4fc5d00..49495749d57 100644 --- a/src/frontends/pytorch/src/node_context.cpp +++ b/src/frontends/pytorch/src/node_context.cpp @@ -42,16 +42,16 @@ std::shared_ptr NodeContext::mark_node(std::shared_ptr ov_node) cons return m_decoder->mark_node(ov_node); } -void NodeContext::mutate_input(size_t index, Output ov_output) { +void NodeContext::mutate_input(size_t index, Output ov_output) const { FRONT_END_GENERAL_CHECK(!m_decoder->input_is_none(index), "Input is none with index: ", index); auto input_id = m_decoder_inputs.at(index); FRONT_END_GENERAL_CHECK(m_tensor_map->count(input_id), "No tensor corresponding input: ", input_id, " exist."); m_translate_session->encode_tensor_name(ov_output, input_id, m_decoder->get_input_debug_name(index)); (*m_tensor_map)[input_id] = ov_output; - m_mutated_tensors.insert(input_id); + m_mutated_tensors->insert(input_id); } -void NodeContext::add_tensor_to_context(size_t index, Output ov_output) { +void NodeContext::add_tensor_to_context(size_t index, Output ov_output) const { if (m_tensor_map->count(index)) { OPENVINO_DEBUG << "[ WARNING ] Current context has tensor. Rewriting.\n"; } @@ -59,7 +59,7 @@ void NodeContext::add_tensor_to_context(size_t index, Output ov_output) { (*m_tensor_map)[index] = ov_output; } -Output NodeContext::get_tensor_from_model_or_create_input(size_t index) { +Output NodeContext::get_tensor_from_model_or_create_input(size_t index) const { if (m_tensor_map->find(index) != m_tensor_map->end()) { return m_tensor_map->at(index); } else { @@ -87,7 +87,7 @@ Output NodeContext::get_input_from_visible_context(size_t index) const { return input_tensor; } -std::shared_ptr NodeContext::convert_subgraph(size_t index) { +std::shared_ptr NodeContext::convert_subgraph(size_t index) const { auto subgraph_decoder = m_decoder->get_subgraph_decoder(index); // Extend external context with internal tensors except Parameter nodes, because internal Parameters are created to diff --git a/src/frontends/pytorch/src/op/adaptive_avg_pool3d.cpp b/src/frontends/pytorch/src/op/adaptive_avg_pool3d.cpp index 75d000ce1d7..42aa3da1d85 100644 --- a/src/frontends/pytorch/src/op/adaptive_avg_pool3d.cpp +++ b/src/frontends/pytorch/src/op/adaptive_avg_pool3d.cpp @@ -19,7 +19,7 @@ namespace op { using namespace ov::op; -OutputVector translate_adaptive_avg_pool3d(NodeContext& context) { +OutputVector translate_adaptive_avg_pool3d(const NodeContext& context) { num_inputs_check(context, 2, 2); auto const_tile_params = context.mark_node(v0::Constant::create(element::i32, Shape{5}, {1, 1, 1, 1, 1})); auto const_0 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {0})); diff --git a/src/frontends/pytorch/src/op/adaptive_max_pool2d.cpp b/src/frontends/pytorch/src/op/adaptive_max_pool2d.cpp index bbd72927fc6..5705fd22e70 100644 --- a/src/frontends/pytorch/src/op/adaptive_max_pool2d.cpp +++ b/src/frontends/pytorch/src/op/adaptive_max_pool2d.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_adaptive_max_pool2d(NodeContext& context) { +OutputVector translate_adaptive_max_pool2d(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/add.cpp b/src/frontends/pytorch/src/op/add.cpp index 3c4976efe2c..65ecfe021c5 100644 --- a/src/frontends/pytorch/src/op/add.cpp +++ b/src/frontends/pytorch/src/op/add.cpp @@ -15,7 +15,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_add(NodeContext& context) { +OutputVector translate_add(const NodeContext& context) { num_inputs_check(context, 2, 3); auto lhs = context.get_input(0); auto rhs = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/addcmul.cpp b/src/frontends/pytorch/src/op/addcmul.cpp index 50d2cec4a3d..7933acfde1d 100644 --- a/src/frontends/pytorch/src/op/addcmul.cpp +++ b/src/frontends/pytorch/src/op/addcmul.cpp @@ -17,7 +17,7 @@ namespace op { using namespace ov::op; -OutputVector translate_addcmul(NodeContext& context) { +OutputVector translate_addcmul(const NodeContext& context) { num_inputs_check(context, 4, 4); const auto eltwise_mult = std::make_shared(context.get_input(1), context.get_input(2)); const auto value = context.get_input(3); diff --git a/src/frontends/pytorch/src/op/addmm.cpp b/src/frontends/pytorch/src/op/addmm.cpp index 4a2e16906b2..e8ba9b7e915 100644 --- a/src/frontends/pytorch/src/op/addmm.cpp +++ b/src/frontends/pytorch/src/op/addmm.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_addmm(NodeContext& context) { +OutputVector translate_addmm(const NodeContext& context) { num_inputs_check(context, 5, 5); auto input = context.get_input(0); auto m1 = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/arange.cpp b/src/frontends/pytorch/src/op/arange.cpp index bacd8d113bc..c238cd12bbc 100644 --- a/src/frontends/pytorch/src/op/arange.cpp +++ b/src/frontends/pytorch/src/op/arange.cpp @@ -17,7 +17,7 @@ namespace op { using namespace ov::op; -OutputVector translate_arange(NodeContext& context) { +OutputVector translate_arange(const NodeContext& context) { auto zero = context.mark_node(v0::Constant::create(element::i32, Shape{}, {0})); auto one = context.mark_node(v0::Constant::create(element::i32, Shape{}, {1})); int dtype_port = -1; diff --git a/src/frontends/pytorch/src/op/as_tensor.cpp b/src/frontends/pytorch/src/op/as_tensor.cpp index 114f4e6fe6a..ae2c15d0a1e 100644 --- a/src/frontends/pytorch/src/op/as_tensor.cpp +++ b/src/frontends/pytorch/src/op/as_tensor.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_as_tensor(NodeContext& context) { +OutputVector translate_as_tensor(const NodeContext& context) { // aten::tensor(t[] data, *, ScalarType? dtype=None, Device? device=None, bool requires_grad=False) -> Tensor num_inputs_check(context, 1, 4); auto dtype = element::f32; diff --git a/src/frontends/pytorch/src/op/avg_poolnd.cpp b/src/frontends/pytorch/src/op/avg_poolnd.cpp index bb1d16b99df..77f35a0569e 100644 --- a/src/frontends/pytorch/src/op/avg_poolnd.cpp +++ b/src/frontends/pytorch/src/op/avg_poolnd.cpp @@ -18,7 +18,7 @@ namespace op { using namespace ov::op; -OutputVector translate_avg_poolnd(NodeContext& context) { +OutputVector translate_avg_poolnd(const NodeContext& context) { num_inputs_check(context, 6, 7); auto input = context.get_input(0); auto kernel = context.const_input(1); diff --git a/src/frontends/pytorch/src/op/batch_norm.cpp b/src/frontends/pytorch/src/op/batch_norm.cpp index 495295e212e..a306dd21832 100644 --- a/src/frontends/pytorch/src/op/batch_norm.cpp +++ b/src/frontends/pytorch/src/op/batch_norm.cpp @@ -32,7 +32,7 @@ Output broadcast_const_to_channel_dim(const NodeContext& context, } } // namespace -OutputVector translate_batch_norm(NodeContext& context) { +OutputVector translate_batch_norm(const NodeContext& context) { // Schema: aten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, // bool training, float momentum, float eps, bool cudnn_enabled) -> Tensor num_inputs_check(context, 8, 9); diff --git a/src/frontends/pytorch/src/op/bitwise_not.cpp b/src/frontends/pytorch/src/op/bitwise_not.cpp index dcb953990e0..55ba1203b80 100644 --- a/src/frontends/pytorch/src/op/bitwise_not.cpp +++ b/src/frontends/pytorch/src/op/bitwise_not.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_bitwise_not(NodeContext& context) { +OutputVector translate_bitwise_not(const NodeContext& context) { num_inputs_check(context, 1, 2); auto x = context.get_input(0); FRONT_END_OP_CONVERSION_CHECK(x.get_element_type().compatible(element::boolean), diff --git a/src/frontends/pytorch/src/op/bool.cpp b/src/frontends/pytorch/src/op/bool.cpp index 60d7a4e0158..0d0d53ad608 100644 --- a/src/frontends/pytorch/src/op/bool.cpp +++ b/src/frontends/pytorch/src/op/bool.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_bool(NodeContext& context) { +OutputVector translate_bool(const NodeContext& context) { num_inputs_check(context, 1, 1); return {context.mark_node(std::make_shared(context.get_input(0), element::boolean))}; }; diff --git a/src/frontends/pytorch/src/op/cat.cpp b/src/frontends/pytorch/src/op/cat.cpp index ce359c63848..8fbdd0f3e6f 100644 --- a/src/frontends/pytorch/src/op/cat.cpp +++ b/src/frontends/pytorch/src/op/cat.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_cat(NodeContext& context) { +OutputVector translate_cat(const NodeContext& context) { // This translator is only needed to get axis as constant from external scope num_inputs_check(context, 2, 2); const auto&& list_elems = get_list_as_outputs(context.get_input(0)); diff --git a/src/frontends/pytorch/src/op/clamp.cpp b/src/frontends/pytorch/src/op/clamp.cpp index afbe349cf4a..fa28ca301df 100644 --- a/src/frontends/pytorch/src/op/clamp.cpp +++ b/src/frontends/pytorch/src/op/clamp.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_clamp(NodeContext& context) { +OutputVector translate_clamp(const NodeContext& context) { num_inputs_check(context, 1, 3); auto x = context.get_input(0); if (!context.input_is_none(1)) { diff --git a/src/frontends/pytorch/src/op/constant.cpp b/src/frontends/pytorch/src/op/constant.cpp index 944a1e19786..6fc6444f04f 100644 --- a/src/frontends/pytorch/src/op/constant.cpp +++ b/src/frontends/pytorch/src/op/constant.cpp @@ -9,7 +9,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_constant(NodeContext& context) { +OutputVector translate_constant(const NodeContext& context) { return context.as_constant(); }; diff --git a/src/frontends/pytorch/src/op/conv_transposend.cpp b/src/frontends/pytorch/src/op/conv_transposend.cpp index d4a0cc2e047..1f281f90486 100644 --- a/src/frontends/pytorch/src/op/conv_transposend.cpp +++ b/src/frontends/pytorch/src/op/conv_transposend.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_conv_transposend(NodeContext& context) { +OutputVector translate_conv_transposend(const NodeContext& context) { num_inputs_check(context, 8, 8); auto strides = context.const_input(3); // PyTorch support only symmetric padding, padding sizes are the same for begins and ends for each dimension diff --git a/src/frontends/pytorch/src/op/convnd.cpp b/src/frontends/pytorch/src/op/convnd.cpp index 9b919851824..861cb68f1fa 100644 --- a/src/frontends/pytorch/src/op/convnd.cpp +++ b/src/frontends/pytorch/src/op/convnd.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_convnd(NodeContext& context) { +OutputVector translate_convnd(const NodeContext& context) { num_inputs_check(context, 7, 7); auto strides = context.const_input(3); // In torch pads at beginning are same as at end diff --git a/src/frontends/pytorch/src/op/convolution.cpp b/src/frontends/pytorch/src/op/convolution.cpp index d0e77e4adad..7a250115b54 100644 --- a/src/frontends/pytorch/src/op/convolution.cpp +++ b/src/frontends/pytorch/src/op/convolution.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_convolution(NodeContext& context) { +OutputVector translate_convolution(const NodeContext& context) { // Schema: aten::_convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] // dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool // cudnn_enabled, bool allow_tf32) -> Tensor diff --git a/src/frontends/pytorch/src/op/convolution_mode.cpp b/src/frontends/pytorch/src/op/convolution_mode.cpp index c732aa66889..7aa9d8f991b 100644 --- a/src/frontends/pytorch/src/op/convolution_mode.cpp +++ b/src/frontends/pytorch/src/op/convolution_mode.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_convolution_mode(NodeContext& context) { +OutputVector translate_convolution_mode(const NodeContext& context) { // Schema: aten::_convolution_mode(Tensor input, Tensor weight, Tensor? bias, int[] stride, str padding, int[] // dilation, int groups) -> Tensor num_inputs_check(context, 7, 7); diff --git a/src/frontends/pytorch/src/op/cumsum.cpp b/src/frontends/pytorch/src/op/cumsum.cpp index 55d46500427..c396521a9e4 100644 --- a/src/frontends/pytorch/src/op/cumsum.cpp +++ b/src/frontends/pytorch/src/op/cumsum.cpp @@ -13,7 +13,7 @@ namespace op { using namespace ov::op; -OutputVector translate_cumsum(NodeContext& context) { +OutputVector translate_cumsum(const NodeContext& context) { // aten::cumsum(Tensor self, int dim, *, ScalarType? dtype=None, Tensor out=None) num_inputs_check(context, 2, 4); auto x = context.get_input(0); diff --git a/src/frontends/pytorch/src/op/dim.cpp b/src/frontends/pytorch/src/op/dim.cpp index 7af4aa8fe31..2d69cb3e37a 100644 --- a/src/frontends/pytorch/src/op/dim.cpp +++ b/src/frontends/pytorch/src/op/dim.cpp @@ -12,7 +12,7 @@ namespace op { using namespace ov::op; -OutputVector translate_dim(NodeContext& context) { +OutputVector translate_dim(const NodeContext& context) { num_inputs_check(context, 1, 1); Output rank; std::tie(std::ignore, rank) = get_shape_rank(context, context.get_input(0), true); diff --git a/src/frontends/pytorch/src/op/div.cpp b/src/frontends/pytorch/src/op/div.cpp index 54cab6325ae..e9dd7136e35 100644 --- a/src/frontends/pytorch/src/op/div.cpp +++ b/src/frontends/pytorch/src/op/div.cpp @@ -17,7 +17,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_div(NodeContext& context) { +OutputVector translate_div(const NodeContext& context) { num_inputs_check(context, 2, 3); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/elu.cpp b/src/frontends/pytorch/src/op/elu.cpp index f60d76b9663..4f96371ee83 100644 --- a/src/frontends/pytorch/src/op/elu.cpp +++ b/src/frontends/pytorch/src/op/elu.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_elu(NodeContext& context) { +OutputVector translate_elu(const NodeContext& context) { // aten::elu(Tensor self, Scalar alpha=1, Scalar scale=1, Scalar input_scale=1) -> Tensor num_inputs_check(context, 2, 4); auto x = context.get_input(0); diff --git a/src/frontends/pytorch/src/op/embedding.cpp b/src/frontends/pytorch/src/op/embedding.cpp index c920992bdaa..e5dc85a0ddf 100644 --- a/src/frontends/pytorch/src/op/embedding.cpp +++ b/src/frontends/pytorch/src/op/embedding.cpp @@ -13,7 +13,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_embedding(NodeContext& context) { +OutputVector translate_embedding(const NodeContext& context) { // aten::embedding(Tensor weight, Tensor indices, SymInt padding_idx=-1, bool scale_grad_by_freq=False, bool // sparse=False) num_inputs_check(context, 5, 5); diff --git a/src/frontends/pytorch/src/op/expand.cpp b/src/frontends/pytorch/src/op/expand.cpp index 34f0a9d70c3..9210cedc6eb 100644 --- a/src/frontends/pytorch/src/op/expand.cpp +++ b/src/frontends/pytorch/src/op/expand.cpp @@ -30,7 +30,7 @@ OutputVector base_expand(const NodeContext& context, const Output& x, cons }; } // namespace -OutputVector translate_expand(NodeContext& context) { +OutputVector translate_expand(const NodeContext& context) { // aten::expand(Tensor(a) self, SymInt[] size, *, bool implicit=False) -> Tensor(a) num_inputs_check(context, 2, 3); auto x = context.get_input(0); @@ -41,7 +41,7 @@ OutputVector translate_expand(NodeContext& context) { return base_expand(context, x, sizes); }; -OutputVector translate_expand_as(NodeContext& context) { +OutputVector translate_expand_as(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/eye.cpp b/src/frontends/pytorch/src/op/eye.cpp index ab35c56569c..9b7f7ef8c3b 100644 --- a/src/frontends/pytorch/src/op/eye.cpp +++ b/src/frontends/pytorch/src/op/eye.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_eye(NodeContext& context) { +OutputVector translate_eye(const NodeContext& context) { size_t num_inputs = context.get_input_size(); auto x = context.get_input(0); // num rows and cols should be integer, but at the moment conversion their data type can be unknown yet diff --git a/src/frontends/pytorch/src/op/flatten.cpp b/src/frontends/pytorch/src/op/flatten.cpp index 6d9005a64b8..6022661c3aa 100644 --- a/src/frontends/pytorch/src/op/flatten.cpp +++ b/src/frontends/pytorch/src/op/flatten.cpp @@ -18,7 +18,7 @@ namespace op { using namespace ov::op; -OutputVector translate_flatten(NodeContext& context) { +OutputVector translate_flatten(const NodeContext& context) { num_inputs_check(context, 1, 3); auto x = context.get_input(0); int64_t start_dim = 0; diff --git a/src/frontends/pytorch/src/op/floor_divide.cpp b/src/frontends/pytorch/src/op/floor_divide.cpp index 5731006dd77..4fb1b230d44 100644 --- a/src/frontends/pytorch/src/op/floor_divide.cpp +++ b/src/frontends/pytorch/src/op/floor_divide.cpp @@ -14,7 +14,7 @@ namespace op { using namespace ov::op; -OutputVector translate_floor_divide(NodeContext& context) { +OutputVector translate_floor_divide(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/floordiv.cpp b/src/frontends/pytorch/src/op/floordiv.cpp index b85cacf3fc5..91c03e74d7f 100644 --- a/src/frontends/pytorch/src/op/floordiv.cpp +++ b/src/frontends/pytorch/src/op/floordiv.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_floordiv(NodeContext& context) { +OutputVector translate_floordiv(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/full.cpp b/src/frontends/pytorch/src/op/full.cpp index abfacbf872f..bbb7f98022f 100644 --- a/src/frontends/pytorch/src/op/full.cpp +++ b/src/frontends/pytorch/src/op/full.cpp @@ -42,7 +42,7 @@ Output base_translate_full_with_convert(const NodeContext& context, } } // namespace -OutputVector translate_full(NodeContext& context) { +OutputVector translate_full(const NodeContext& context) { num_inputs_check(context, 2, 6); auto sizes = context.get_input(0); auto value = context.get_input(1); @@ -59,7 +59,7 @@ OutputVector translate_full(NodeContext& context) { return {base_translate_full_with_convert(context, sizes, value, dtype_id)}; }; -OutputVector translate_full_like(NodeContext& context) { +OutputVector translate_full_like(const NodeContext& context) { num_inputs_check(context, 2, 7); auto input = context.get_input(0); auto value = context.get_input(1); @@ -71,7 +71,7 @@ OutputVector translate_full_like(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, out)}; }; -OutputVector translate_fill_(NodeContext& context) { +OutputVector translate_fill_(const NodeContext& context) { num_inputs_check(context, 2, 2); auto input = context.get_input(0); auto value = context.get_input(1); @@ -79,7 +79,7 @@ OutputVector translate_fill_(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, input)}; }; -OutputVector translate_new_full(NodeContext& context) { +OutputVector translate_new_full(const NodeContext& context) { num_inputs_check(context, 3, 7); auto input = context.get_input(0); auto sizes = context.get_input(1); @@ -90,7 +90,7 @@ OutputVector translate_new_full(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, input)}; }; -OutputVector translate_zeros(NodeContext& context) { +OutputVector translate_zeros(const NodeContext& context) { num_inputs_check(context, 2, 5); auto sizes = context.get_input(0); auto value = context.mark_node(v0::Constant::create(element::f32, Shape{}, {0})); @@ -107,7 +107,7 @@ OutputVector translate_zeros(NodeContext& context) { return {base_translate_full_with_convert(context, sizes, value, dtype_id)}; }; -OutputVector translate_zeros_like(NodeContext& context) { +OutputVector translate_zeros_like(const NodeContext& context) { num_inputs_check(context, 1, 6); auto input = context.get_input(0); auto value = context.mark_node(v0::Constant::create(element::f32, Shape{}, {0})); @@ -119,7 +119,7 @@ OutputVector translate_zeros_like(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, out)}; }; -OutputVector translate_new_zeros(NodeContext& context) { +OutputVector translate_new_zeros(const NodeContext& context) { num_inputs_check(context, 2, 6); auto input = context.get_input(0); auto sizes = context.get_input(1); @@ -130,7 +130,7 @@ OutputVector translate_new_zeros(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, input)}; }; -OutputVector translate_ones(NodeContext& context) { +OutputVector translate_ones(const NodeContext& context) { num_inputs_check(context, 1, 5); auto sizes = context.get_input(0); auto value = context.mark_node(v0::Constant::create(element::f32, Shape{}, {1})); @@ -147,7 +147,7 @@ OutputVector translate_ones(NodeContext& context) { return {base_translate_full_with_convert(context, sizes, value, dtype_id)}; }; -OutputVector translate_ones_like(NodeContext& context) { +OutputVector translate_ones_like(const NodeContext& context) { num_inputs_check(context, 1, 6); auto input = context.get_input(0); auto value = context.mark_node(v0::Constant::create(element::f32, Shape{}, {1})); @@ -159,7 +159,7 @@ OutputVector translate_ones_like(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, out)}; }; -OutputVector translate_new_ones(NodeContext& context) { +OutputVector translate_new_ones(const NodeContext& context) { num_inputs_check(context, 2, 6); auto input = context.get_input(0); auto sizes = context.get_input(1); @@ -170,7 +170,7 @@ OutputVector translate_new_ones(NodeContext& context) { return {base_translate_full_with_convertlike(context, sizes, value, input)}; }; -OutputVector translate_empty(NodeContext& context) { +OutputVector translate_empty(const NodeContext& context) { // aten::empty(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? // pin_memory=None, MemoryFormat? memory_format=None) -> Tensor layout, device and work with memory ignored on our // side, so just skip these parameters diff --git a/src/frontends/pytorch/src/op/gelu.cpp b/src/frontends/pytorch/src/op/gelu.cpp index 598f6865b3e..c64ea647688 100644 --- a/src/frontends/pytorch/src/op/gelu.cpp +++ b/src/frontends/pytorch/src/op/gelu.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_gelu(NodeContext& context) { +OutputVector translate_gelu(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto approximate = context.const_input(1); diff --git a/src/frontends/pytorch/src/op/get_attr.cpp b/src/frontends/pytorch/src/op/get_attr.cpp index 3575a5210a8..1d0ae0e4d13 100644 --- a/src/frontends/pytorch/src/op/get_attr.cpp +++ b/src/frontends/pytorch/src/op/get_attr.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_get_attr(NodeContext& context) { +OutputVector translate_get_attr(const NodeContext& context) { auto res = context.get_decoder()->try_decode_get_attr(); FRONT_END_OP_CONVERSION_CHECK(res.size() > 0, "GetAttr must have at least one output."); return res; diff --git a/src/frontends/pytorch/src/op/getitem.cpp b/src/frontends/pytorch/src/op/getitem.cpp index 1bf9f4a0e8a..0a1243196f4 100644 --- a/src/frontends/pytorch/src/op/getitem.cpp +++ b/src/frontends/pytorch/src/op/getitem.cpp @@ -13,7 +13,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_getitem(NodeContext& context) { +OutputVector translate_getitem(const NodeContext& context) { num_inputs_check(context, 2, 2); auto input = context.get_input(0); if (std::dynamic_pointer_cast(input.get_node_shared_ptr())) { diff --git a/src/frontends/pytorch/src/op/glu.cpp b/src/frontends/pytorch/src/op/glu.cpp index e650e9c4a54..dbe979fb1f2 100644 --- a/src/frontends/pytorch/src/op/glu.cpp +++ b/src/frontends/pytorch/src/op/glu.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_glu(NodeContext& context) { +OutputVector translate_glu(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto dim = context.input_is_none(1) ? context.mark_node(v0::Constant::create(element::i32, Shape{}, {-1})) diff --git a/src/frontends/pytorch/src/op/grid_sampler.cpp b/src/frontends/pytorch/src/op/grid_sampler.cpp index 9011abd8566..8c603813d88 100644 --- a/src/frontends/pytorch/src/op/grid_sampler.cpp +++ b/src/frontends/pytorch/src/op/grid_sampler.cpp @@ -13,7 +13,7 @@ namespace op { using namespace ov::op; -OutputVector translate_grid_sampler(NodeContext& context) { +OutputVector translate_grid_sampler(const NodeContext& context) { num_inputs_check(context, 4, 5); auto x = context.get_input(0); auto grid = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/group_norm.cpp b/src/frontends/pytorch/src/op/group_norm.cpp index 7b3ac53bbb4..6ce36aac660 100644 --- a/src/frontends/pytorch/src/op/group_norm.cpp +++ b/src/frontends/pytorch/src/op/group_norm.cpp @@ -20,7 +20,7 @@ namespace op { using namespace ov::op; -OutputVector translate_group_norm(NodeContext& context) { +OutputVector translate_group_norm(const NodeContext& context) { // aten::group_norm(Tensor input, int num_groups, Tensor? weight=None, Tensor? bias=None, float // eps=1.0000000000000001e-05, bool cudnn_enabled=True) -> Tensor num_inputs_check(context, 2, 6); diff --git a/src/frontends/pytorch/src/op/hardtanh.cpp b/src/frontends/pytorch/src/op/hardtanh.cpp index 52551a259a9..a85bedbf006 100644 --- a/src/frontends/pytorch/src/op/hardtanh.cpp +++ b/src/frontends/pytorch/src/op/hardtanh.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_hardtanh(NodeContext& context) { +OutputVector translate_hardtanh(const NodeContext& context) { num_inputs_check(context, 1, 3); float min = -1; float max = 1; diff --git a/src/frontends/pytorch/src/op/if.cpp b/src/frontends/pytorch/src/op/if.cpp index 1e5d3a26778..7fb3ecce123 100644 --- a/src/frontends/pytorch/src/op/if.cpp +++ b/src/frontends/pytorch/src/op/if.cpp @@ -13,7 +13,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_if(NodeContext& context) { +OutputVector translate_if(const NodeContext& context) { auto if_node = std::make_shared(context.get_input(0)); context.mark_node(if_node); auto decoder = context.get_decoder(); diff --git a/src/frontends/pytorch/src/op/im2col.cpp b/src/frontends/pytorch/src/op/im2col.cpp index 12fb4f3b7c4..718e0eadaa4 100644 --- a/src/frontends/pytorch/src/op/im2col.cpp +++ b/src/frontends/pytorch/src/op/im2col.cpp @@ -56,7 +56,7 @@ std::shared_ptr get_im2col_indices_along_dim(const NodeContext& context, } } // namespace -OutputVector translate_im2col(NodeContext& context) { +OutputVector translate_im2col(const NodeContext& context) { num_inputs_check(context, 5, 5); auto input = context.get_input(0); auto kernel_size = context.const_input>(1); diff --git a/src/frontends/pytorch/src/op/index_put_.cpp b/src/frontends/pytorch/src/op/index_put_.cpp index 1ce4ea0e96d..d8a599eaf5a 100644 --- a/src/frontends/pytorch/src/op/index_put_.cpp +++ b/src/frontends/pytorch/src/op/index_put_.cpp @@ -10,9 +10,7 @@ namespace frontend { namespace pytorch { namespace op { -using namespace ov::op; - -OutputVector translate_index_put_(NodeContext& context) { +OutputVector translate_index_put_(const NodeContext& context) { // Pass as PtFrameworkNode to register as `inplace_op`. Conversion to OV operators is done as transformation. auto node = std::make_shared(context.get_decoder(), context.inputs()); return {context.mark_node(node)}; diff --git a/src/frontends/pytorch/src/op/instance_norm.cpp b/src/frontends/pytorch/src/op/instance_norm.cpp index b00b7bff260..ff53bd11e92 100644 --- a/src/frontends/pytorch/src/op/instance_norm.cpp +++ b/src/frontends/pytorch/src/op/instance_norm.cpp @@ -88,7 +88,7 @@ OutputVector translate_instance_norm_train(const NodeContext& context, } // namespace -OutputVector translate_instance_norm(NodeContext& context) { +OutputVector translate_instance_norm(const NodeContext& context) { num_inputs_check(context, 8, 9); auto input = context.get_input(0); auto eps = context.const_input(7); diff --git a/src/frontends/pytorch/src/op/int.cpp b/src/frontends/pytorch/src/op/int.cpp index e11397cb6f1..5a407a1a725 100644 --- a/src/frontends/pytorch/src/op/int.cpp +++ b/src/frontends/pytorch/src/op/int.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_int(NodeContext& context) { +OutputVector translate_int(const NodeContext& context) { num_inputs_check(context, 1, 1); return {context.mark_node(std::make_shared(context.get_input(0), element::i32))}; }; diff --git a/src/frontends/pytorch/src/op/layer_norm.cpp b/src/frontends/pytorch/src/op/layer_norm.cpp index c954110111e..204d7164531 100644 --- a/src/frontends/pytorch/src/op/layer_norm.cpp +++ b/src/frontends/pytorch/src/op/layer_norm.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_layer_norm(NodeContext& context) { +OutputVector translate_layer_norm(const NodeContext& context) { num_inputs_check(context, 5, 6); auto eps = context.const_input(4); auto normalized_shape = context.const_input(1); diff --git a/src/frontends/pytorch/src/op/len.cpp b/src/frontends/pytorch/src/op/len.cpp index 71f8bdf3a32..9a226585009 100644 --- a/src/frontends/pytorch/src/op/len.cpp +++ b/src/frontends/pytorch/src/op/len.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_len(NodeContext& context) { +OutputVector translate_len(const NodeContext& context) { num_inputs_check(context, 1, 1); auto const_0 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {0})); auto const_1 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {1})); diff --git a/src/frontends/pytorch/src/op/linear.cpp b/src/frontends/pytorch/src/op/linear.cpp index e94ff7c9168..8288220f320 100644 --- a/src/frontends/pytorch/src/op/linear.cpp +++ b/src/frontends/pytorch/src/op/linear.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_linear(NodeContext& context) { +OutputVector translate_linear(const NodeContext& context) { // schema: aten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensor num_inputs_check(context, 2, 3); auto x = context.get_input(0); diff --git a/src/frontends/pytorch/src/op/list_construct.cpp b/src/frontends/pytorch/src/op/list_construct.cpp index e69188e23d8..e58a3c4744f 100644 --- a/src/frontends/pytorch/src/op/list_construct.cpp +++ b/src/frontends/pytorch/src/op/list_construct.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_list_construct(NodeContext& context) { +OutputVector translate_list_construct(const NodeContext& context) { // Process the case when prim::ListConstruct has all inputs constant auto const_0 = context.mark_node(v0::Constant::create(element::i32, Shape{}, {0})); ov::OutputVector consts; diff --git a/src/frontends/pytorch/src/op/log.cpp b/src/frontends/pytorch/src/op/log.cpp index 85947b7694e..808dff6ed32 100644 --- a/src/frontends/pytorch/src/op/log.cpp +++ b/src/frontends/pytorch/src/op/log.cpp @@ -17,7 +17,7 @@ namespace op { using namespace ov::op; -OutputVector translate_log(NodeContext& context) { +OutputVector translate_log(const NodeContext& context) { // torch.log returns a tensor with the natural logarithm of the elements of input. num_inputs_check(context, 1, 1); auto x = context.get_input(0); @@ -26,7 +26,7 @@ OutputVector translate_log(NodeContext& context) { return {log}; }; -OutputVector translate_log2(NodeContext& context) { +OutputVector translate_log2(const NodeContext& context) { // torch.log2 returns a tensor with the logarithm to the base 2 of the elements of input. num_inputs_check(context, 1, 1); auto x = context.get_input(0); diff --git a/src/frontends/pytorch/src/op/loop.cpp b/src/frontends/pytorch/src/op/loop.cpp index 7bf03cfcd30..36369ea63bd 100644 --- a/src/frontends/pytorch/src/op/loop.cpp +++ b/src/frontends/pytorch/src/op/loop.cpp @@ -13,7 +13,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_loop(NodeContext& context) { +OutputVector translate_loop(const NodeContext& context) { const auto& inputs = context.inputs(); FRONT_END_OP_CONVERSION_CHECK(inputs.size() >= 2, "Loop must have at least 2 inputs."); auto loop = std::make_shared(inputs[0], inputs[1]); diff --git a/src/frontends/pytorch/src/op/masked_fill.cpp b/src/frontends/pytorch/src/op/masked_fill.cpp index 2a071755b3a..5ed090e0b61 100644 --- a/src/frontends/pytorch/src/op/masked_fill.cpp +++ b/src/frontends/pytorch/src/op/masked_fill.cpp @@ -18,7 +18,7 @@ namespace op { using namespace ov::op; -OutputVector translate_masked_fill(NodeContext& context) { +OutputVector translate_masked_fill(const NodeContext& context) { num_inputs_check(context, 3, 3); auto data = context.get_input(0); auto mask = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/max_poolnd.cpp b/src/frontends/pytorch/src/op/max_poolnd.cpp index f594b0a2b07..f756b1488ce 100644 --- a/src/frontends/pytorch/src/op/max_poolnd.cpp +++ b/src/frontends/pytorch/src/op/max_poolnd.cpp @@ -13,7 +13,7 @@ namespace op { using namespace ov::op; -OutputVector translate_max_poolnd(NodeContext& context) { +OutputVector translate_max_poolnd(const NodeContext& context) { num_inputs_check(context, 6, 6); auto kernel = context.const_input(1); auto strides = context.const_input(2); diff --git a/src/frontends/pytorch/src/op/mean.cpp b/src/frontends/pytorch/src/op/mean.cpp index b7a5acfb6fb..46c42f6be1a 100644 --- a/src/frontends/pytorch/src/op/mean.cpp +++ b/src/frontends/pytorch/src/op/mean.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_mean(NodeContext& context) { +OutputVector translate_mean(const NodeContext& context) { num_inputs_check(context, 3, 4); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/meshgrid.cpp b/src/frontends/pytorch/src/op/meshgrid.cpp index 841de80fcbf..c9b5833ae68 100644 --- a/src/frontends/pytorch/src/op/meshgrid.cpp +++ b/src/frontends/pytorch/src/op/meshgrid.cpp @@ -10,7 +10,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_meshgrid(NodeContext& context) { +OutputVector translate_meshgrid(const NodeContext& context) { std::string indexing = "ij"; if (!context.input_is_none(1)) { indexing = context.const_input(1); diff --git a/src/frontends/pytorch/src/op/min_max.cpp b/src/frontends/pytorch/src/op/min_max.cpp index 34c70219f11..898403bf82b 100644 --- a/src/frontends/pytorch/src/op/min_max.cpp +++ b/src/frontends/pytorch/src/op/min_max.cpp @@ -20,7 +20,7 @@ namespace op { using namespace ov::op; -OutputVector translate_max(NodeContext& context) { +OutputVector translate_max(const NodeContext& context) { // torch.max (same for torch.min) actually has two interfaces smashed together: // torch.max(x, dim, keepdim) and torch.max(x, y) num_inputs_check(context, 1, 3); @@ -49,7 +49,7 @@ OutputVector translate_max(NodeContext& context) { return {values, indicies}; }; -OutputVector translate_min(NodeContext& context) { +OutputVector translate_min(const NodeContext& context) { // torch.min (same for torch.max) actually has two interfaces smashed together: // torch.min(x, dim, keepdim) and torch.min(x, y) num_inputs_check(context, 1, 3); diff --git a/src/frontends/pytorch/src/op/narrow.cpp b/src/frontends/pytorch/src/op/narrow.cpp index a212b225034..ffae7d2ec55 100644 --- a/src/frontends/pytorch/src/op/narrow.cpp +++ b/src/frontends/pytorch/src/op/narrow.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_narrow(NodeContext& context) { +OutputVector translate_narrow(const NodeContext& context) { num_inputs_check(context, 4, 4); auto const_1 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {1})); diff --git a/src/frontends/pytorch/src/op/neg.cpp b/src/frontends/pytorch/src/op/neg.cpp index e902eb0f21f..423118c3b2f 100644 --- a/src/frontends/pytorch/src/op/neg.cpp +++ b/src/frontends/pytorch/src/op/neg.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_neg(NodeContext& context) { +OutputVector translate_neg(const NodeContext& context) { num_inputs_check(context, 1, 1); auto x = context.get_input(0); auto const_neg_1 = context.mark_node(v0::Constant::create(element::i32, Shape{}, {-1})); diff --git a/src/frontends/pytorch/src/op/nms.cpp b/src/frontends/pytorch/src/op/nms.cpp index 2454d94a78e..86ecb3df73c 100644 --- a/src/frontends/pytorch/src/op/nms.cpp +++ b/src/frontends/pytorch/src/op/nms.cpp @@ -18,7 +18,7 @@ namespace op { using namespace ov::op; -OutputVector translate_nms(NodeContext& context) { +OutputVector translate_nms(const NodeContext& context) { num_inputs_check(context, 3, 3); auto const_0 = context.mark_node(v0::Constant::create(element::i32, Shape{}, {0})); auto const_1 = context.mark_node(v0::Constant::create(element::i32, Shape{}, {1})); diff --git a/src/frontends/pytorch/src/op/nonzero.cpp b/src/frontends/pytorch/src/op/nonzero.cpp index 80edef3f079..29a6aa51175 100644 --- a/src/frontends/pytorch/src/op/nonzero.cpp +++ b/src/frontends/pytorch/src/op/nonzero.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_nonzero(NodeContext& context) { +OutputVector translate_nonzero(const NodeContext& context) { num_inputs_check(context, 1, 1); auto cond = context.get_input(0); auto non_zero = context.mark_node(std::make_shared(cond)); diff --git a/src/frontends/pytorch/src/op/norm.cpp b/src/frontends/pytorch/src/op/norm.cpp index d35c0fec258..34a0bdd01c4 100644 --- a/src/frontends/pytorch/src/op/norm.cpp +++ b/src/frontends/pytorch/src/op/norm.cpp @@ -20,7 +20,7 @@ namespace op { using namespace ov::op; -OutputVector translate_norm(NodeContext& context) { +OutputVector translate_norm(const NodeContext& context) { num_inputs_check(context, 4, 4); auto input_tensor = context.get_input(0); auto p = context.const_input(1); diff --git a/src/frontends/pytorch/src/op/numel.cpp b/src/frontends/pytorch/src/op/numel.cpp index 721ed7e173b..a4d2a836c6a 100644 --- a/src/frontends/pytorch/src/op/numel.cpp +++ b/src/frontends/pytorch/src/op/numel.cpp @@ -10,7 +10,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_numel(NodeContext& context) { +OutputVector translate_numel(const NodeContext& context) { num_inputs_check(context, 1, 1); return {numel(context, context.get_input(0))}; }; diff --git a/src/frontends/pytorch/src/op/pad.cpp b/src/frontends/pytorch/src/op/pad.cpp index 8a0568ece9c..17054465454 100644 --- a/src/frontends/pytorch/src/op/pad.cpp +++ b/src/frontends/pytorch/src/op/pad.cpp @@ -22,7 +22,7 @@ namespace op { using namespace ov::op; -OutputVector translate_pad(NodeContext& context) { +OutputVector translate_pad(const NodeContext& context) { num_inputs_check(context, 2, 4); auto data = context.get_input(0); auto paddings = context.const_input>(1); diff --git a/src/frontends/pytorch/src/op/pow.cpp b/src/frontends/pytorch/src/op/pow.cpp index d418f338534..d3a39694bf3 100644 --- a/src/frontends/pytorch/src/op/pow.cpp +++ b/src/frontends/pytorch/src/op/pow.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_pow(NodeContext& context) { +OutputVector translate_pow(const NodeContext& context) { num_inputs_check(context, 2, 2); auto lhs = context.get_input(0); auto rhs = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/pythonop.cpp b/src/frontends/pytorch/src/op/pythonop.cpp index 36a4b388738..4aa142f04b5 100644 --- a/src/frontends/pytorch/src/op/pythonop.cpp +++ b/src/frontends/pytorch/src/op/pythonop.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_pythonop(NodeContext& context) { +OutputVector translate_pythonop(const NodeContext& context) { auto decoder = context.get_decoder(); FRONT_END_OP_CONVERSION_CHECK(decoder->get_subgraph_size() == 1, "PythonOp must have 1 subgraph to be able to translate it to OV."); diff --git a/src/frontends/pytorch/src/op/reciprocal.cpp b/src/frontends/pytorch/src/op/reciprocal.cpp index 67c5bdba78b..38b12fee06c 100644 --- a/src/frontends/pytorch/src/op/reciprocal.cpp +++ b/src/frontends/pytorch/src/op/reciprocal.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_reciprocal(NodeContext& context) { +OutputVector translate_reciprocal(const NodeContext& context) { num_inputs_check(context, 1, 1); auto x = context.get_input(0); auto const_neg_1 = context.mark_node(v0::Constant::create(element::i32, Shape{}, {-1})); diff --git a/src/frontends/pytorch/src/op/relu6.cpp b/src/frontends/pytorch/src/op/relu6.cpp index 5dd5906061b..08996811249 100644 --- a/src/frontends/pytorch/src/op/relu6.cpp +++ b/src/frontends/pytorch/src/op/relu6.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_relu6(NodeContext& context) { +OutputVector translate_relu6(const NodeContext& context) { num_inputs_check(context, 1, 1); auto x = context.get_input(0); return {context.mark_node(std::make_shared(x, 0., 6.))}; diff --git a/src/frontends/pytorch/src/op/remainder.cpp b/src/frontends/pytorch/src/op/remainder.cpp index 55d33e00c3f..622e20eba52 100644 --- a/src/frontends/pytorch/src/op/remainder.cpp +++ b/src/frontends/pytorch/src/op/remainder.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_remainder(NodeContext& context) { +OutputVector translate_remainder(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/repeat.cpp b/src/frontends/pytorch/src/op/repeat.cpp index 574951aaf82..15dc03a466e 100644 --- a/src/frontends/pytorch/src/op/repeat.cpp +++ b/src/frontends/pytorch/src/op/repeat.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_repeat(NodeContext& context) { +OutputVector translate_repeat(const NodeContext& context) { num_inputs_check(context, 2, 2); auto x = context.get_input(0); auto repeats = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/repeat_interleave.cpp b/src/frontends/pytorch/src/op/repeat_interleave.cpp index 06d8333e04c..64971f6e3f2 100644 --- a/src/frontends/pytorch/src/op/repeat_interleave.cpp +++ b/src/frontends/pytorch/src/op/repeat_interleave.cpp @@ -34,7 +34,7 @@ OutputVector generate_indices_from_repeats_tensor(const NodeContext& context, co }; } // namespace -OutputVector translate_repeat_interleave(NodeContext& context) { +OutputVector translate_repeat_interleave(const NodeContext& context) { num_inputs_check(context, 2, 3); // constants auto const_0 = context.mark_node(v0::Constant::create(element::i32, Shape{}, {0})); diff --git a/src/frontends/pytorch/src/op/reshape.cpp b/src/frontends/pytorch/src/op/reshape.cpp index b0d669e47be..c5c33f4f6e6 100644 --- a/src/frontends/pytorch/src/op/reshape.cpp +++ b/src/frontends/pytorch/src/op/reshape.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_reshape(NodeContext& context) { +OutputVector translate_reshape(const NodeContext& context) { // Translation is used by both aten::view and aten::reshape. // Schema: aten::view(Tensor input, int[] shape) -> Tensor // Schema: aten::reshape(Tensor input, int[] shape) -> Tensor diff --git a/src/frontends/pytorch/src/op/reshape_as.cpp b/src/frontends/pytorch/src/op/reshape_as.cpp index 63d18ee468f..1c9be43d4a2 100644 --- a/src/frontends/pytorch/src/op/reshape_as.cpp +++ b/src/frontends/pytorch/src/op/reshape_as.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_reshape_as(NodeContext& context) { +OutputVector translate_reshape_as(const NodeContext& context) { num_inputs_check(context, 2, 2); auto input_tensor = context.get_input(0); auto shape_tesnor = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/roi_align.cpp b/src/frontends/pytorch/src/op/roi_align.cpp index d3a389c5965..fb2ad3a41d7 100644 --- a/src/frontends/pytorch/src/op/roi_align.cpp +++ b/src/frontends/pytorch/src/op/roi_align.cpp @@ -19,7 +19,7 @@ namespace op { using namespace ov::op; -OutputVector translate_roi_align(NodeContext& context) { +OutputVector translate_roi_align(const NodeContext& context) { num_inputs_check(context, 7, 7); auto const_1 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {1})); auto const_neg_1 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {-1})); diff --git a/src/frontends/pytorch/src/op/roll.cpp b/src/frontends/pytorch/src/op/roll.cpp index b0aef51a687..9f358368fbc 100644 --- a/src/frontends/pytorch/src/op/roll.cpp +++ b/src/frontends/pytorch/src/op/roll.cpp @@ -17,7 +17,7 @@ namespace op { using namespace ov::op; -OutputVector translate_roll(NodeContext& context) { +OutputVector translate_roll(const NodeContext& context) { num_inputs_check(context, 3, 3); const auto data = context.get_input(0); const auto shifts = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/rsqrt.cpp b/src/frontends/pytorch/src/op/rsqrt.cpp index 9e9ba9330c8..d4f56040da2 100644 --- a/src/frontends/pytorch/src/op/rsqrt.cpp +++ b/src/frontends/pytorch/src/op/rsqrt.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_rsqrt(NodeContext& context) { +OutputVector translate_rsqrt(const NodeContext& context) { num_inputs_check(context, 1, 1); auto data = context.get_input(0); auto input_shape = context.mark_node(std::make_shared(data, element::i32)); diff --git a/src/frontends/pytorch/src/op/rsub.cpp b/src/frontends/pytorch/src/op/rsub.cpp index 21b109e9037..200094b6eec 100644 --- a/src/frontends/pytorch/src/op/rsub.cpp +++ b/src/frontends/pytorch/src/op/rsub.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_rsub(NodeContext& context) { +OutputVector translate_rsub(const NodeContext& context) { num_inputs_check(context, 3, 3); auto self = context.get_input(0); auto other = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/select.cpp b/src/frontends/pytorch/src/op/select.cpp index c6d7cb0048f..ea5255f2410 100644 --- a/src/frontends/pytorch/src/op/select.cpp +++ b/src/frontends/pytorch/src/op/select.cpp @@ -20,7 +20,7 @@ namespace op { using namespace ov::op; -OutputVector translate_select(NodeContext& context) { +OutputVector translate_select(const NodeContext& context) { num_inputs_check(context, 3, 3); auto const_1 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {1})); auto const_minus_1 = context.mark_node(v0::Constant::create(element::i32, Shape{1}, {-1})); diff --git a/src/frontends/pytorch/src/op/selu.cpp b/src/frontends/pytorch/src/op/selu.cpp index 9ec08af77fa..aef54491e74 100644 --- a/src/frontends/pytorch/src/op/selu.cpp +++ b/src/frontends/pytorch/src/op/selu.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_selu(NodeContext& context) { +OutputVector translate_selu(const NodeContext& context) { num_inputs_check(context, 1, 1); auto x = context.get_input(0); auto alpha = context.mark_node(v0::Constant::create(element::f64, Shape{}, {1.6732632423543772848170429916717})); diff --git a/src/frontends/pytorch/src/op/set_item.cpp b/src/frontends/pytorch/src/op/set_item.cpp index 9ce33fce24e..ef11a2a391c 100644 --- a/src/frontends/pytorch/src/op/set_item.cpp +++ b/src/frontends/pytorch/src/op/set_item.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_set_item(NodeContext& context) { +OutputVector translate_set_item(const NodeContext& context) { // schema: aten::_set_item.t(t[](a!) l, int idx, t(b -> *) el) -> t[](a!) // _set_item inserts element in list num_inputs_check(context, 3, 3); diff --git a/src/frontends/pytorch/src/op/size.cpp b/src/frontends/pytorch/src/op/size.cpp index a4d70cef19a..289facd0fe7 100644 --- a/src/frontends/pytorch/src/op/size.cpp +++ b/src/frontends/pytorch/src/op/size.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_size(NodeContext& context) { +OutputVector translate_size(const NodeContext& context) { num_inputs_check(context, 1, 2); auto shape = context.mark_node(std::make_shared(context.get_input(0), element::i32)); if (context.input_is_none(1)) { diff --git a/src/frontends/pytorch/src/op/slice.cpp b/src/frontends/pytorch/src/op/slice.cpp index 756efc1590b..391b1c834fd 100644 --- a/src/frontends/pytorch/src/op/slice.cpp +++ b/src/frontends/pytorch/src/op/slice.cpp @@ -18,7 +18,7 @@ namespace op { using namespace ov::op; -OutputVector translate_slice(NodeContext& context) { +OutputVector translate_slice(const NodeContext& context) { // aten::slice.t(t[] l, int? start=None, int? end=None, int step=1) -> (t[]) // aten::slice.Tensor(Tensor(a) self, int dim=0, int? start=None, int? end=None, int step=1) -> (Tensor(a)) ov::Output dim; diff --git a/src/frontends/pytorch/src/op/softmax.cpp b/src/frontends/pytorch/src/op/softmax.cpp index 1b94a3560ad..10c3afea7cd 100644 --- a/src/frontends/pytorch/src/op/softmax.cpp +++ b/src/frontends/pytorch/src/op/softmax.cpp @@ -13,7 +13,7 @@ namespace pytorch { namespace op { using namespace ov::op; -OutputVector translate_softmax(NodeContext& context) { +OutputVector translate_softmax(const NodeContext& context) { num_inputs_check(context, 2, 3); auto x = context.get_input(0); auto axis = context.const_input(1); diff --git a/src/frontends/pytorch/src/op/sort.cpp b/src/frontends/pytorch/src/op/sort.cpp index c0e54d54d9b..715a7a52d3e 100644 --- a/src/frontends/pytorch/src/op/sort.cpp +++ b/src/frontends/pytorch/src/op/sort.cpp @@ -9,7 +9,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_sort(NodeContext& context) { +OutputVector translate_sort(const NodeContext& context) { num_inputs_check(context, 3, 4); const auto input_tensor = context.get_input(0); bool stable, descending; @@ -40,7 +40,7 @@ OutputVector translate_sort(NodeContext& context) { return topk->outputs(); }; -OutputVector translate_argsort(NodeContext& context) { +OutputVector translate_argsort(const NodeContext& context) { auto sort = translate_sort(context); return {sort[1]}; }; diff --git a/src/frontends/pytorch/src/op/square.cpp b/src/frontends/pytorch/src/op/square.cpp index 7194aafd9ab..2310fda75aa 100644 --- a/src/frontends/pytorch/src/op/square.cpp +++ b/src/frontends/pytorch/src/op/square.cpp @@ -14,7 +14,7 @@ namespace op { using namespace ov::op; -OutputVector translate_square(NodeContext& context) { +OutputVector translate_square(const NodeContext& context) { num_inputs_check(context, 1, 1); auto input_0 = context.get_input(0); auto const_2 = context.mark_node(v0::Constant::create(input_0.get_element_type(), Shape{1}, {2})); diff --git a/src/frontends/pytorch/src/op/squeeze.cpp b/src/frontends/pytorch/src/op/squeeze.cpp index dacf2c55a4d..fb15801367a 100644 --- a/src/frontends/pytorch/src/op/squeeze.cpp +++ b/src/frontends/pytorch/src/op/squeeze.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_squeeze(NodeContext& context) { +OutputVector translate_squeeze(const NodeContext& context) { num_inputs_check(context, 1, 2); auto x = context.get_input(0); if (context.input_is_none(1)) { diff --git a/src/frontends/pytorch/src/op/sub.cpp b/src/frontends/pytorch/src/op/sub.cpp index fd449c12bbd..94963ed9bdb 100644 --- a/src/frontends/pytorch/src/op/sub.cpp +++ b/src/frontends/pytorch/src/op/sub.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_sub(NodeContext& context) { +OutputVector translate_sub(const NodeContext& context) { num_inputs_check(context, 2, 3); auto x = context.get_input(0); auto y = context.get_input(1); diff --git a/src/frontends/pytorch/src/op/sum.cpp b/src/frontends/pytorch/src/op/sum.cpp index 3dc4601b108..7a87dc0c507 100644 --- a/src/frontends/pytorch/src/op/sum.cpp +++ b/src/frontends/pytorch/src/op/sum.cpp @@ -11,7 +11,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_sum(NodeContext& context) { +OutputVector translate_sum(const NodeContext& context) { num_inputs_check(context, 1, 3); bool keep_dims = false; ov::Output axes; diff --git a/src/frontends/pytorch/src/op/to.cpp b/src/frontends/pytorch/src/op/to.cpp index 6e5b0ebda63..2499b8346f5 100644 --- a/src/frontends/pytorch/src/op/to.cpp +++ b/src/frontends/pytorch/src/op/to.cpp @@ -16,7 +16,7 @@ namespace op { using namespace ov::op; -OutputVector translate_to(NodeContext& context) { +OutputVector translate_to(const NodeContext& context) { int dtype_idx; int memory_format_idx; if (context.get_input_size() == 5) { diff --git a/src/frontends/pytorch/src/op/topk.cpp b/src/frontends/pytorch/src/op/topk.cpp index 26addb856c6..06916c4ea03 100644 --- a/src/frontends/pytorch/src/op/topk.cpp +++ b/src/frontends/pytorch/src/op/topk.cpp @@ -15,7 +15,7 @@ namespace op { using namespace ov::op; -OutputVector translate_topk(NodeContext& context) { +OutputVector translate_topk(const NodeContext& context) { num_inputs_check(context, 5, 5); const auto input_tensor = context.get_input(0); const auto largest = context.const_input(3); diff --git a/src/frontends/pytorch/src/op/transpose.cpp b/src/frontends/pytorch/src/op/transpose.cpp index 60fee576613..9a6cddb3ffb 100644 --- a/src/frontends/pytorch/src/op/transpose.cpp +++ b/src/frontends/pytorch/src/op/transpose.cpp @@ -20,7 +20,7 @@ namespace op { using namespace ov::op; -OutputVector translate_transpose(NodeContext& context) { +OutputVector translate_transpose(const NodeContext& context) { num_inputs_check(context, 3, 3); auto dim0 = context.const_input(1); auto dim1 = context.const_input(2); diff --git a/src/frontends/pytorch/src/op/trilu.cpp b/src/frontends/pytorch/src/op/trilu.cpp index 1726cf2f895..1ef4d50fd6a 100644 --- a/src/frontends/pytorch/src/op/trilu.cpp +++ b/src/frontends/pytorch/src/op/trilu.cpp @@ -60,11 +60,11 @@ OutputVector translate_base_triu_tril(const NodeContext& context, bool upper) { } }; // namespace -OutputVector translate_triu(NodeContext& context) { +OutputVector translate_triu(const NodeContext& context) { return translate_base_triu_tril(context, true); }; -OutputVector translate_tril(NodeContext& context) { +OutputVector translate_tril(const NodeContext& context) { return translate_base_triu_tril(context, false); }; diff --git a/src/frontends/pytorch/src/op/unfold.cpp b/src/frontends/pytorch/src/op/unfold.cpp index 949f7991391..e7aa129b293 100644 --- a/src/frontends/pytorch/src/op/unfold.cpp +++ b/src/frontends/pytorch/src/op/unfold.cpp @@ -13,7 +13,7 @@ namespace frontend { namespace pytorch { namespace op { -OutputVector translate_unfold(NodeContext& context) { +OutputVector translate_unfold(const NodeContext& context) { num_inputs_check(context, 4, 4); // constants auto const_0 = context.mark_node(Constant::create(element::i32, Shape{}, {0})); diff --git a/src/frontends/pytorch/src/op/upsample.cpp b/src/frontends/pytorch/src/op/upsample.cpp index 111a07a28c7..484387b8f39 100644 --- a/src/frontends/pytorch/src/op/upsample.cpp +++ b/src/frontends/pytorch/src/op/upsample.cpp @@ -69,32 +69,32 @@ OutputVector base_translate_upsample(const NodeContext& context, }; } // namespace -OutputVector translate_upsample_linear1d(NodeContext& context) { +OutputVector translate_upsample_linear1d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::LINEAR_ONNX, 1); }; -OutputVector translate_upsample_bilinear2d(NodeContext& context) { +OutputVector translate_upsample_bilinear2d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::LINEAR_ONNX, 2); }; -OutputVector translate_upsample_trilinear3d(NodeContext& context) { +OutputVector translate_upsample_trilinear3d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::LINEAR_ONNX, 3); }; -OutputVector translate_upsample_nearest1d(NodeContext& context) { +OutputVector translate_upsample_nearest1d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::NEAREST, 1); }; -OutputVector translate_upsample_nearest2d(NodeContext& context) { +OutputVector translate_upsample_nearest2d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::NEAREST, 2); }; -OutputVector translate_upsample_nearest3d(NodeContext& context) { +OutputVector translate_upsample_nearest3d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::NEAREST, 3); }; // bicubic is only supported for 2d in pytorch -OutputVector translate_upsample_bicubic2d(NodeContext& context) { +OutputVector translate_upsample_bicubic2d(const NodeContext& context) { return base_translate_upsample(context, v4::Interpolate::InterpolateMode::CUBIC, 2); }; diff --git a/src/frontends/pytorch/src/op/var_mean.cpp b/src/frontends/pytorch/src/op/var_mean.cpp index 936038fecdc..f021161722c 100644 --- a/src/frontends/pytorch/src/op/var_mean.cpp +++ b/src/frontends/pytorch/src/op/var_mean.cpp @@ -20,7 +20,7 @@ namespace op { using namespace ov::op; -OutputVector translate_var_mean(NodeContext& context) { +OutputVector translate_var_mean(const NodeContext& context) { num_inputs_check(context, 1, 4); auto data = context.get_input(0); bool unbiased = true; @@ -75,7 +75,7 @@ OutputVector translate_var_mean(NodeContext& context) { return {var, mean}; }; -OutputVector translate_var(NodeContext& context) { +OutputVector translate_var(const NodeContext& context) { auto res = translate_var_mean(context); return {res[0]}; } diff --git a/src/frontends/pytorch/src/op/where.cpp b/src/frontends/pytorch/src/op/where.cpp index 454d23938a2..4a9de9f69ed 100644 --- a/src/frontends/pytorch/src/op/where.cpp +++ b/src/frontends/pytorch/src/op/where.cpp @@ -14,7 +14,7 @@ namespace op { using namespace ov::op; -OutputVector translate_where(NodeContext& context) { +OutputVector translate_where(const NodeContext& context) { num_inputs_check(context, 1, 3); auto cond = context.get_input(0); FRONT_END_OP_CONVERSION_CHECK(!context.input_is_none(1), "aten::where(cond) unsupported"); diff --git a/src/frontends/pytorch/src/op_table.cpp b/src/frontends/pytorch/src/op_table.cpp index b3e54233f50..c42024fa36f 100644 --- a/src/frontends/pytorch/src/op_table.cpp +++ b/src/frontends/pytorch/src/op_table.cpp @@ -12,7 +12,7 @@ namespace frontend { namespace pytorch { namespace op { -#define OP_CONVERTER(op) OutputVector op(NodeContext& node) +#define OP_CONVERTER(op) OutputVector op(const NodeContext& node) OP_CONVERTER(translate_adaptive_avg_pool3d); OP_CONVERTER(translate_adaptive_max_pool2d); @@ -130,7 +130,7 @@ OP_CONVERTER(translate_zeros_like); } // namespace op -const std::map get_supported_ops() { +const std::map get_supported_ops() { return { {"aten::__and__", op::translate_1to1_match_2_inputs}, // TODO: cover numerical cases {"aten::__getitem__", op::translate_getitem}, diff --git a/src/frontends/pytorch/src/op_table.hpp b/src/frontends/pytorch/src/op_table.hpp index 7a67c910157..e15a988e981 100644 --- a/src/frontends/pytorch/src/op_table.hpp +++ b/src/frontends/pytorch/src/op_table.hpp @@ -10,7 +10,7 @@ namespace ov { namespace frontend { namespace pytorch { -const std::map get_supported_ops(); +const std::map get_supported_ops(); } // namespace pytorch } // namespace frontend diff --git a/src/frontends/pytorch/src/translate_session.cpp b/src/frontends/pytorch/src/translate_session.cpp index 025a325eebf..376b466c0a2 100644 --- a/src/frontends/pytorch/src/translate_session.cpp +++ b/src/frontends/pytorch/src/translate_session.cpp @@ -20,7 +20,7 @@ namespace pytorch { using namespace ov::op; TranslateSession::TranslateSession(const ov::frontend::InputModel::Ptr& input_model, - const std::map& translator_map) + const std::map& translator_map) : m_input_model(input_model), m_translator_map(translator_map), m_ov_model(nullptr) {} @@ -45,9 +45,9 @@ std::shared_ptr TranslateSession::convert_pytorch_model( const std::unordered_map& external_descriptors) { std::shared_ptr resulting_model; // define here to make a conversion in a nested scope { - ParameterVector parameters; - TensorMap tensor_map; // tensor map of the current context - std::set mutated_tensors; + auto parameters = std::make_shared(); + auto tensor_map = std::make_shared(); // tensor map of the current context + auto mutated_tensors = std::make_shared>(); // Go over all pytorch_model inputs and register them in the tensor map: auto inputs = pytorch_model->inputs(); @@ -74,7 +74,7 @@ std::shared_ptr TranslateSession::convert_pytorch_model( if (!input_node) { auto parameter = std::make_shared(type, pshape); encode_tensor_name(parameter->output(0), inputs.at(i), pytorch_model->get_input_debug_name(i)); - parameters.push_back(parameter); + parameters->push_back(parameter); input_node = parameter; auto order = pytorch_model->get_input_transpose_order(i); if (order.size() > 0 && !std::is_sorted(order.begin(), order.end())) { @@ -91,7 +91,7 @@ std::shared_ptr TranslateSession::convert_pytorch_model( input_node = transpose; } } - tensor_map[inputs.at(i)] = input_node; + (*tensor_map)[inputs.at(i)] = input_node; } auto node_visitor = [&](std::shared_ptr node) { @@ -102,7 +102,7 @@ std::shared_ptr TranslateSession::convert_pytorch_model( auto raw_inputs = node->inputs(); for (size_t i = 0; i < raw_inputs.size(); ++i) { auto input = raw_inputs.at(i); - if (tensor_map.find(input) == tensor_map.end()) { + if (tensor_map->find(input) == tensor_map->end()) { // Input refers value in the outer scope, need to create a new Parameter in the current scope // Linkage to external scope will be performed on the level of the parent operation (if or loop) // TODO: Eliminate duplication with the main code for Parameters creation @@ -111,18 +111,15 @@ std::shared_ptr TranslateSession::convert_pytorch_model( // TODO: Use special API to set custom type specification auto parameter = std::make_shared(element::dynamic, ps); // TODO: Missing get_input_transpose_order handling for not trivial layouts - tensor_map[input] = parameter; + (*tensor_map)[input] = parameter; // set name of parameter to the index of node in the model encode_tensor_name(parameter->output(0), input); - parameters.push_back(parameter); + parameters->push_back(parameter); } } - auto context = NodeContext(node, &tensor_map, ¶meters, external_tensor_map, this); + auto context = NodeContext(node, external_tensor_map, tensor_map, parameters, mutated_tensors, this); auto converted_outputs = convert_node(context); - auto mutated_t = context.get_mutated_tensors(); - mutated_tensors.insert(mutated_t.begin(), mutated_t.end()); - auto fw_outputs = node->outputs(); // Ops with subgraphs or with mutated inputs may have more outputs after conversion compared to pytorch ones FRONT_END_OP_CONVERSION_CHECK(fw_outputs.size() <= converted_outputs.size(), @@ -134,10 +131,10 @@ std::shared_ptr TranslateSession::convert_pytorch_model( // FIXME: Now it is not true for at least prim::Constant for (size_t i = 0; i < fw_outputs.size(); ++i) { size_t fw_tensor_id = node->output(i); - FRONT_END_GENERAL_CHECK(tensor_map.find(fw_tensor_id) == tensor_map.end(), + FRONT_END_GENERAL_CHECK(tensor_map->find(fw_tensor_id) == tensor_map->end(), "Duplicated producer for PT value with unique ID: ", fw_tensor_id); - tensor_map[fw_tensor_id] = converted_outputs[i]; + (*tensor_map)[fw_tensor_id] = converted_outputs[i]; encode_tensor_name(converted_outputs[i], fw_tensor_id, node->get_output_debug_name(i)); } }; @@ -148,14 +145,14 @@ std::shared_ptr TranslateSession::convert_pytorch_model( ResultVector results; for (size_t i = 0; i < pytorch_model->num_of_outputs(); ++i) { size_t id = pytorch_model->output(i); - if (tensor_map.find(id) == tensor_map.end()) { + if (tensor_map->find(id) == tensor_map->end()) { // Not found in this scope, adding Parameter to connect to external scope auto parameter = std::make_shared(element::dynamic, PartialShape::dynamic()); encode_tensor_name(parameter->output(0), id); - parameters.push_back(parameter); - tensor_map[id] = parameter; + parameters->push_back(parameter); + (*tensor_map)[id] = parameter; } - auto ov_output = tensor_map[id]; + auto ov_output = tensor_map->at(id); auto order = pytorch_model->get_output_transpose_order(i); FRONT_END_GENERAL_CHECK(order.size() == 0 || std::is_sorted(order.begin(), order.end()), "Output strides have wrong order."); @@ -168,32 +165,32 @@ std::shared_ptr TranslateSession::convert_pytorch_model( // Since parameters can be added we need to list all current parameters std::set param_names; - for (const auto& param : parameters) { + for (const auto& param : *parameters) { auto input_idx = decode_tensor_name(param->output(0)); param_names.insert(input_idx); } - for (const auto& tensor_id : mutated_tensors) { + for (const auto& tensor_id : *mutated_tensors) { if (param_names.count(tensor_id)) { - FRONT_END_GENERAL_CHECK(tensor_map.count(tensor_id), + FRONT_END_GENERAL_CHECK(tensor_map->count(tensor_id), "Tensor with id: ", tensor_id, " doesn't exist in tensor map."); // model input was mutated we need to make a result for it - auto mutated_tensor = tensor_map.at(tensor_id); + auto mutated_tensor = tensor_map->at(tensor_id); // empty external_tensor_map means this is main body of the model and we don't want to create // additional outputs in that case. if (mutated_tensor.get_target_inputs().empty() && !external_tensor_map.empty()) - results.push_back(std::make_shared(tensor_map.at(tensor_id))); + results.push_back(std::make_shared(tensor_map->at(tensor_id))); } } - resulting_model = std::make_shared(results, parameters); + resulting_model = std::make_shared(results, *parameters); // Did a conversion in a nested scope to automatically remove any holders of nodes except those in the graph } return resulting_model; } -OutputVector TranslateSession::convert_node(NodeContext& context) { +OutputVector TranslateSession::convert_node(const NodeContext& context) { try { auto it = m_translator_map.find(context.get_op_type()); if (it != m_translator_map.end()) { diff --git a/src/frontends/pytorch/src/translate_session.hpp b/src/frontends/pytorch/src/translate_session.hpp index e33ea31c630..4931c274984 100644 --- a/src/frontends/pytorch/src/translate_session.hpp +++ b/src/frontends/pytorch/src/translate_session.hpp @@ -17,7 +17,7 @@ namespace pytorch { class TranslateSession { public: TranslateSession(const frontend::InputModel::Ptr& input_model, - const std::map& translator_map); + const std::map& translator_map); std::shared_ptr get_converted_model(); std::shared_ptr translate_graph(const frontend::InputModel::Ptr& input_model); @@ -38,10 +38,10 @@ public: size_t m_friendly_name_counter = 0; private: - OutputVector convert_node(NodeContext& context); + OutputVector convert_node(const NodeContext& context); const frontend::InputModel::Ptr m_input_model; - const std::map& m_translator_map; + const std::map& m_translator_map; std::shared_ptr m_ov_model; std::map>> m_counter_map; diff --git a/src/frontends/pytorch/src/utils.cpp b/src/frontends/pytorch/src/utils.cpp index dd7d1dad5db..bdae3e9e75e 100644 --- a/src/frontends/pytorch/src/utils.cpp +++ b/src/frontends/pytorch/src/utils.cpp @@ -177,7 +177,7 @@ std::shared_ptr concat_list_construct(std::shared_ptr input) { return input; } -OutputVector make_framework_node(NodeContext& context) { +OutputVector make_framework_node(const NodeContext& context) { auto schema = context.get_schema(); // TODO: properly process schema to get the actual position of mutable input // Hack. Can indicate mutable inputs, but can it be reliable? diff --git a/src/frontends/pytorch/src/utils.hpp b/src/frontends/pytorch/src/utils.hpp index 07235a2152d..029b349c77b 100644 --- a/src/frontends/pytorch/src/utils.hpp +++ b/src/frontends/pytorch/src/utils.hpp @@ -48,7 +48,7 @@ op::PadType convert_pad(const std::string& pt_pad); std::shared_ptr concat_list_construct(std::shared_ptr input); -OutputVector make_framework_node(NodeContext& context); +OutputVector make_framework_node(const NodeContext& context); std::shared_ptr cast_fw_node(std::shared_ptr node, const std::string& type); @@ -63,8 +63,8 @@ void align_eltwise_input_types(const NodeContext& context, std::deque> get_list_as_outputs(const Output& start); namespace op { -template -OutputVector inplace_op(NodeContext& context) { +template +OutputVector inplace_op(const NodeContext& context) { auto translation_res = T(context); FRONT_END_OP_CONVERSION_CHECK(translation_res.size() == 1, "inplace_op function must be used on single output translators"); @@ -73,21 +73,21 @@ OutputVector inplace_op(NodeContext& context) { } template -OutputVector translate_1to1_match_1_inputs(NodeContext& context) { +OutputVector translate_1to1_match_1_inputs(const NodeContext& context) { num_inputs_check(context, 1, 1); FRONT_END_OP_CONVERSION_CHECK(!context.input_is_none(0), "Input should not be None."); return {context.mark_node(std::make_shared(context.get_input(0)))}; } template -OutputVector translate_1to1_match_2_inputs(NodeContext& context) { +OutputVector translate_1to1_match_2_inputs(const NodeContext& context) { num_inputs_check(context, 2, 2); FRONT_END_OP_CONVERSION_CHECK(!context.input_is_none(0) && !context.input_is_none(1), "Inputs should not be None."); return {context.mark_node(std::make_shared(context.get_input(0), context.get_input(1)))}; } template -OutputVector translate_1to1_match_2_inputs_align_types(NodeContext& context) { +OutputVector translate_1to1_match_2_inputs_align_types(const NodeContext& context) { num_inputs_check(context, 2, 2); FRONT_END_OP_CONVERSION_CHECK(!context.input_is_none(0) && !context.input_is_none(1), "Inputs should not be None."); auto lhs = context.get_input(0); @@ -96,11 +96,11 @@ OutputVector translate_1to1_match_2_inputs_align_types(NodeContext& context) { return {context.mark_node(std::make_shared(lhs, rhs))}; } -inline OutputVector return_false_scalar(NodeContext& context) { +inline OutputVector return_false_scalar(const NodeContext& context) { return {context.mark_node(ov::op::v0::Constant::create(element::boolean, Shape{}, {false}))}; } -inline OutputVector skip_node(NodeContext& context) { +inline OutputVector skip_node(const NodeContext& context) { return {context.get_input(0).get_node_shared_ptr()}; }