From b8513c041cfb6592848b1d8ec3714ba31d48b65f Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Mon, 12 Jul 2021 12:42:23 +0000 Subject: [PATCH 01/10] [ONNX] Add ONNX specific FrontEnd classes This change implements a subset of FrontEnd API for ONNX: Changes: - move onnx_common, onnx_editor and onnx_import to ngraph/frontend/onnx - introduce new target 'onnx_frontend_ngraph' located in ngraph/frontend/onnx/frontend - new target implements subset of FrontEnd, InputModel and Place interfaces --- ngraph/frontend/CMakeLists.txt | 7 +- .../include/frontend_manager/frontend.hpp | 4 +- .../include/frontend_manager/input_model.hpp | 62 +++---- .../include/frontend_manager/place.hpp | 47 ++--- .../frontend_manager/src/frontend_manager.cpp | 105 ++++++------ .../frontend_manager/src/plugin_loader.cpp | 29 ++-- .../frontend_manager/src/plugin_loader.hpp | 28 +-- ngraph/frontend/onnx/CMakeLists.txt | 10 ++ ngraph/frontend/onnx/frontend/CMakeLists.txt | 51 ++++++ .../include/onnx_frontend/frontend.hpp | 25 +++ .../include/onnx_frontend/input_model.hpp | 34 ++++ .../frontend/include/onnx_frontend/place.hpp | 77 +++++++++ .../frontend/onnx/frontend/src/frontend.cpp | 51 ++++++ .../onnx/frontend/src/input_model.cpp | 56 ++++++ .../{ => onnx}/onnx_common/CMakeLists.txt | 0 .../include/onnx_common/parser.hpp | 0 .../onnx_common/include/onnx_common/utils.hpp | 0 .../{ => onnx}/onnx_common/src/parser.cpp | 0 .../{ => onnx}/onnx_common/src/utils.cpp | 0 .../{ => onnx}/onnx_editor/CMakeLists.txt | 0 .../include/onnx_editor/edge_mapper.hpp | 0 .../include/onnx_editor/editor.hpp | 9 +- .../include/onnx_editor/editor_types.hpp | 0 .../src/detail/subgraph_extraction.cpp | 0 .../src/detail/subgraph_extraction.hpp | 0 .../onnx_editor/src/edge_mapper.cpp | 0 .../{ => onnx}/onnx_editor/src/editor.cpp | 29 ++-- .../{ => onnx}/onnx_import/CMakeLists.txt | 0 .../include/onnx_import}/core/model.hpp | 4 +- .../include/onnx_import/core/node.hpp | 1 - .../include/onnx_import/core/operator_set.hpp | 0 .../onnx_import/include/onnx_import/onnx.hpp | 8 + .../include/onnx_import/onnx_utils.hpp | 0 .../utils/onnx_importer_visibility.hpp | 0 .../onnx_import/utils/onnx_internal.hpp | 20 ++- .../onnx_import/src/core/attribute.cpp | 7 +- .../onnx_import/src/core/attribute.hpp | 0 .../{ => onnx}/onnx_import/src/core/graph.cpp | 161 +++++++++--------- .../{ => onnx}/onnx_import/src/core/graph.hpp | 33 +--- .../onnx_import/src/core/graph_cache.cpp | 0 .../onnx_import/src/core/graph_cache.hpp | 0 .../{ => onnx}/onnx_import/src/core/model.cpp | 8 +- .../{ => onnx}/onnx_import/src/core/node.cpp | 7 - .../onnx_import/src/core/null_node.cpp | 0 .../onnx_import/src/core/null_node.hpp | 0 .../onnx_import/src/core/sparse_tensor.hpp | 0 .../onnx_import/src/core/tensor.hpp | 0 .../onnx_import/src/core/transform.cpp | 2 +- .../onnx_import/src/core/transform.hpp | 0 .../onnx_import/src/core/value_info.hpp | 0 .../onnx_import/src/default_opset.hpp | 0 .../{ => onnx}/onnx_import/src/exceptions.cpp | 0 .../{ => onnx}/onnx_import/src/exceptions.hpp | 0 .../{ => onnx}/onnx_import/src/onnx.cpp | 9 +- .../onnx_import/src/onnx_framework_node.cpp | 4 +- .../onnx_import/src}/onnx_framework_node.hpp | 39 +++-- .../{ => onnx}/onnx_import/src/onnx_utils.cpp | 0 .../{ => onnx}/onnx_import/src/op/abs.hpp | 0 .../{ => onnx}/onnx_import/src/op/acos.hpp | 0 .../{ => onnx}/onnx_import/src/op/acosh.hpp | 0 .../{ => onnx}/onnx_import/src/op/add.cpp | 0 .../{ => onnx}/onnx_import/src/op/add.hpp | 0 .../{ => onnx}/onnx_import/src/op/and.hpp | 0 .../{ => onnx}/onnx_import/src/op/argmax.cpp | 0 .../{ => onnx}/onnx_import/src/op/argmax.hpp | 0 .../{ => onnx}/onnx_import/src/op/argmin.cpp | 0 .../{ => onnx}/onnx_import/src/op/argmin.hpp | 0 .../{ => onnx}/onnx_import/src/op/asin.hpp | 0 .../{ => onnx}/onnx_import/src/op/asinh.hpp | 0 .../{ => onnx}/onnx_import/src/op/atan.hpp | 0 .../{ => onnx}/onnx_import/src/op/atanh.hpp | 0 .../onnx_import/src/op/average_pool.cpp | 0 .../onnx_import/src/op/average_pool.hpp | 0 .../onnx_import/src/op/batch_norm.cpp | 0 .../onnx_import/src/op/batch_norm.hpp | 0 .../onnx_import/src/op/bitshift.cpp | 0 .../onnx_import/src/op/bitshift.hpp | 0 .../{ => onnx}/onnx_import/src/op/cast.cpp | 0 .../{ => onnx}/onnx_import/src/op/cast.hpp | 0 .../{ => onnx}/onnx_import/src/op/ceil.hpp | 0 .../{ => onnx}/onnx_import/src/op/clip.cpp | 0 .../{ => onnx}/onnx_import/src/op/clip.hpp | 0 .../onnx_import/src/op/compress.cpp | 0 .../onnx_import/src/op/compress.hpp | 0 .../{ => onnx}/onnx_import/src/op/concat.cpp | 0 .../{ => onnx}/onnx_import/src/op/concat.hpp | 0 .../onnx_import/src/op/constant.cpp | 0 .../onnx_import/src/op/constant.hpp | 0 .../onnx_import/src/op/constant_fill.cpp | 0 .../onnx_import/src/op/constant_fill.hpp | 0 .../onnx_import/src/op/constant_of_shape.cpp | 0 .../onnx_import/src/op/constant_of_shape.hpp | 0 .../{ => onnx}/onnx_import/src/op/conv.cpp | 0 .../{ => onnx}/onnx_import/src/op/conv.hpp | 0 .../onnx_import/src/op/conv_integer.cpp | 0 .../onnx_import/src/op/conv_integer.hpp | 0 .../onnx_import/src/op/conv_transpose.cpp | 0 .../onnx_import/src/op/conv_transpose.hpp | 0 .../{ => onnx}/onnx_import/src/op/cos.cpp | 0 .../{ => onnx}/onnx_import/src/op/cos.hpp | 0 .../{ => onnx}/onnx_import/src/op/cosh.cpp | 0 .../{ => onnx}/onnx_import/src/op/cosh.hpp | 0 .../{ => onnx}/onnx_import/src/op/cum_sum.cpp | 0 .../{ => onnx}/onnx_import/src/op/cum_sum.hpp | 0 .../onnx_import/src/op/depth_to_space.cpp | 0 .../onnx_import/src/op/depth_to_space.hpp | 0 .../onnx_import/src/op/dequantize_linear.cpp | 0 .../onnx_import/src/op/dequantize_linear.hpp | 0 .../{ => onnx}/onnx_import/src/op/div.hpp | 0 .../{ => onnx}/onnx_import/src/op/dropout.cpp | 0 .../{ => onnx}/onnx_import/src/op/dropout.hpp | 0 .../{ => onnx}/onnx_import/src/op/einsum.cpp | 0 .../{ => onnx}/onnx_import/src/op/einsum.hpp | 0 .../{ => onnx}/onnx_import/src/op/elu.cpp | 0 .../{ => onnx}/onnx_import/src/op/elu.hpp | 0 .../{ => onnx}/onnx_import/src/op/equal.hpp | 0 .../{ => onnx}/onnx_import/src/op/erf.hpp | 0 .../{ => onnx}/onnx_import/src/op/exp.hpp | 0 .../{ => onnx}/onnx_import/src/op/expand.cpp | 0 .../{ => onnx}/onnx_import/src/op/expand.hpp | 0 .../onnx_import/src/op/eye_like.cpp | 0 .../onnx_import/src/op/eye_like.hpp | 0 .../{ => onnx}/onnx_import/src/op/flatten.cpp | 0 .../{ => onnx}/onnx_import/src/op/flatten.hpp | 0 .../{ => onnx}/onnx_import/src/op/floor.hpp | 0 .../{ => onnx}/onnx_import/src/op/gather.hpp | 0 .../onnx_import/src/op/gather_elements.hpp | 0 .../onnx_import/src/op/gather_nd.cpp | 0 .../onnx_import/src/op/gather_nd.hpp | 0 .../{ => onnx}/onnx_import/src/op/gemm.cpp | 0 .../{ => onnx}/onnx_import/src/op/gemm.hpp | 0 .../src/op/global_average_pool.cpp | 0 .../src/op/global_average_pool.hpp | 0 .../onnx_import/src/op/global_max_pool.cpp | 0 .../onnx_import/src/op/global_max_pool.hpp | 0 .../{ => onnx}/onnx_import/src/op/greater.hpp | 0 .../{ => onnx}/onnx_import/src/op/gru.cpp | 0 .../{ => onnx}/onnx_import/src/op/gru.hpp | 0 .../onnx_import/src/op/hard_sigmoid.cpp | 0 .../onnx_import/src/op/hard_sigmoid.hpp | 0 .../{ => onnx}/onnx_import/src/op/hardmax.cpp | 0 .../{ => onnx}/onnx_import/src/op/hardmax.hpp | 0 .../onnx_import/src/op/identity.hpp | 0 .../onnx_import/src/op/image_scaler.cpp | 0 .../onnx_import/src/op/image_scaler.hpp | 0 .../onnx_import/src/op/instance_norm.cpp | 0 .../onnx_import/src/op/instance_norm.hpp | 0 .../onnx_import/src/op/leaky_relu.cpp | 0 .../onnx_import/src/op/leaky_relu.hpp | 0 .../{ => onnx}/onnx_import/src/op/less.hpp | 0 .../{ => onnx}/onnx_import/src/op/log.cpp | 0 .../{ => onnx}/onnx_import/src/op/log.hpp | 0 .../onnx_import/src/op/log_softmax.cpp | 0 .../onnx_import/src/op/log_softmax.hpp | 0 .../{ => onnx}/onnx_import/src/op/loop.cpp | 0 .../{ => onnx}/onnx_import/src/op/loop.hpp | 0 .../{ => onnx}/onnx_import/src/op/lp_norm.cpp | 0 .../{ => onnx}/onnx_import/src/op/lp_norm.hpp | 0 .../{ => onnx}/onnx_import/src/op/lp_pool.cpp | 0 .../{ => onnx}/onnx_import/src/op/lp_pool.hpp | 0 .../{ => onnx}/onnx_import/src/op/lrn.cpp | 0 .../{ => onnx}/onnx_import/src/op/lrn.hpp | 0 .../{ => onnx}/onnx_import/src/op/lstm.cpp | 0 .../{ => onnx}/onnx_import/src/op/lstm.hpp | 0 .../{ => onnx}/onnx_import/src/op/matmul.hpp | 0 .../{ => onnx}/onnx_import/src/op/max.hpp | 0 .../onnx_import/src/op/max_pool.cpp | 0 .../onnx_import/src/op/max_pool.hpp | 0 .../{ => onnx}/onnx_import/src/op/mean.cpp | 0 .../{ => onnx}/onnx_import/src/op/mean.hpp | 0 .../src/op/mean_variance_normalization.cpp | 0 .../src/op/mean_variance_normalization.hpp | 0 .../{ => onnx}/onnx_import/src/op/min.hpp | 0 .../{ => onnx}/onnx_import/src/op/mod.cpp | 0 .../{ => onnx}/onnx_import/src/op/mod.hpp | 0 .../{ => onnx}/onnx_import/src/op/mul.hpp | 0 .../{ => onnx}/onnx_import/src/op/neg.hpp | 0 .../src/op/non_max_suppression.cpp | 0 .../src/op/non_max_suppression.hpp | 0 .../onnx_import/src/op/non_zero.cpp | 0 .../onnx_import/src/op/non_zero.hpp | 0 .../{ => onnx}/onnx_import/src/op/not.hpp | 0 .../{ => onnx}/onnx_import/src/op/onehot.cpp | 0 .../{ => onnx}/onnx_import/src/op/onehot.hpp | 0 .../{ => onnx}/onnx_import/src/op/or.hpp | 0 .../deformable_conv_2d.cpp | 0 .../deformable_conv_2d.hpp | 0 .../org.openvinotoolkit/detection_output.cpp | 0 .../org.openvinotoolkit/detection_output.hpp | 0 .../detection_output.cpp | 0 .../detection_output.hpp | 0 .../generate_proposals_single_image.cpp | 0 .../generate_proposals_single_image.hpp | 0 .../prior_grid_generator.cpp | 0 .../prior_grid_generator.hpp | 0 .../roi_feature_extractor.cpp | 0 .../roi_feature_extractor.hpp | 0 .../experimental_detectron/topk_rios.cpp | 0 .../experimental_detectron/topk_rios.hpp | 0 .../op/org.openvinotoolkit/fake_quantize.cpp | 0 .../op/org.openvinotoolkit/fake_quantize.hpp | 0 .../src/op/org.openvinotoolkit/group_norm.cpp | 0 .../src/op/org.openvinotoolkit/group_norm.hpp | 0 .../src/op/org.openvinotoolkit/normalize.cpp | 0 .../src/op/org.openvinotoolkit/normalize.hpp | 0 .../src/op/org.openvinotoolkit/prior_box.cpp | 0 .../src/op/org.openvinotoolkit/prior_box.hpp | 0 .../src/op/org.openvinotoolkit/swish.cpp | 0 .../src/op/org.openvinotoolkit/swish.hpp | 0 .../{ => onnx}/onnx_import/src/op/pad.cpp | 0 .../{ => onnx}/onnx_import/src/op/pad.hpp | 0 .../{ => onnx}/onnx_import/src/op/pow.cpp | 0 .../{ => onnx}/onnx_import/src/op/pow.hpp | 0 .../{ => onnx}/onnx_import/src/op/prelu.cpp | 0 .../{ => onnx}/onnx_import/src/op/prelu.hpp | 0 .../onnx_import/src/op/quant_conv.cpp | 0 .../onnx_import/src/op/quant_conv.hpp | 0 .../onnx_import/src/op/quantize_linear.cpp | 0 .../onnx_import/src/op/quantize_linear.hpp | 0 .../{ => onnx}/onnx_import/src/op/range.cpp | 0 .../{ => onnx}/onnx_import/src/op/range.hpp | 0 .../onnx_import/src/op/reciprocal.cpp | 0 .../onnx_import/src/op/reciprocal.hpp | 0 .../{ => onnx}/onnx_import/src/op/reduce.cpp | 0 .../{ => onnx}/onnx_import/src/op/reduce.hpp | 0 .../{ => onnx}/onnx_import/src/op/relu.hpp | 0 .../{ => onnx}/onnx_import/src/op/reshape.cpp | 0 .../{ => onnx}/onnx_import/src/op/reshape.hpp | 0 .../{ => onnx}/onnx_import/src/op/resize.cpp | 0 .../{ => onnx}/onnx_import/src/op/resize.hpp | 0 .../onnx_import/src/op/reverse_sequence.cpp | 0 .../onnx_import/src/op/reverse_sequence.hpp | 0 .../{ => onnx}/onnx_import/src/op/rnn.cpp | 0 .../{ => onnx}/onnx_import/src/op/rnn.hpp | 0 .../onnx_import/src/op/roi_align.cpp | 0 .../onnx_import/src/op/roi_align.hpp | 0 .../{ => onnx}/onnx_import/src/op/round.cpp | 0 .../{ => onnx}/onnx_import/src/op/round.hpp | 0 .../onnx_import/src/op/scatter_elements.cpp | 0 .../onnx_import/src/op/scatter_elements.hpp | 0 .../onnx_import/src/op/scatter_nd.cpp | 0 .../onnx_import/src/op/scatter_nd.hpp | 0 .../{ => onnx}/onnx_import/src/op/selu.cpp | 0 .../{ => onnx}/onnx_import/src/op/selu.hpp | 0 .../{ => onnx}/onnx_import/src/op/shape.cpp | 0 .../{ => onnx}/onnx_import/src/op/shape.hpp | 0 .../{ => onnx}/onnx_import/src/op/shrink.cpp | 0 .../{ => onnx}/onnx_import/src/op/shrink.hpp | 0 .../{ => onnx}/onnx_import/src/op/sigmoid.hpp | 0 .../{ => onnx}/onnx_import/src/op/sign.hpp | 0 .../{ => onnx}/onnx_import/src/op/sin.hpp | 0 .../{ => onnx}/onnx_import/src/op/sinh.hpp | 0 .../{ => onnx}/onnx_import/src/op/size.cpp | 0 .../{ => onnx}/onnx_import/src/op/size.hpp | 0 .../{ => onnx}/onnx_import/src/op/slice.cpp | 0 .../{ => onnx}/onnx_import/src/op/slice.hpp | 0 .../{ => onnx}/onnx_import/src/op/softmax.cpp | 0 .../{ => onnx}/onnx_import/src/op/softmax.hpp | 0 .../onnx_import/src/op/softplus.cpp | 0 .../onnx_import/src/op/softplus.hpp | 0 .../onnx_import/src/op/softsign.cpp | 0 .../onnx_import/src/op/softsign.hpp | 0 .../onnx_import/src/op/space_to_depth.cpp | 0 .../onnx_import/src/op/space_to_depth.hpp | 0 .../{ => onnx}/onnx_import/src/op/split.cpp | 0 .../{ => onnx}/onnx_import/src/op/split.hpp | 0 .../{ => onnx}/onnx_import/src/op/sqrt.hpp | 0 .../{ => onnx}/onnx_import/src/op/squeeze.cpp | 0 .../{ => onnx}/onnx_import/src/op/squeeze.hpp | 0 .../{ => onnx}/onnx_import/src/op/sub.hpp | 0 .../{ => onnx}/onnx_import/src/op/sum.hpp | 0 .../{ => onnx}/onnx_import/src/op/tan.hpp | 0 .../{ => onnx}/onnx_import/src/op/tanh.hpp | 0 .../onnx_import/src/op/thresholded_relu.cpp | 0 .../onnx_import/src/op/thresholded_relu.hpp | 0 .../{ => onnx}/onnx_import/src/op/tile.cpp | 0 .../{ => onnx}/onnx_import/src/op/tile.hpp | 0 .../{ => onnx}/onnx_import/src/op/topk.cpp | 0 .../{ => onnx}/onnx_import/src/op/topk.hpp | 0 .../onnx_import/src/op/transpose.cpp | 0 .../onnx_import/src/op/transpose.hpp | 0 .../onnx_import/src/op/unsqueeze.cpp | 0 .../onnx_import/src/op/unsqueeze.hpp | 0 .../onnx_import/src/op/upsample.cpp | 0 .../onnx_import/src/op/upsample.hpp | 0 .../{ => onnx}/onnx_import/src/op/where.hpp | 0 .../{ => onnx}/onnx_import/src/op/xor.hpp | 0 .../{ => onnx}/onnx_import/src/ops_bridge.cpp | 0 .../{ => onnx}/onnx_import/src/ops_bridge.hpp | 0 .../{ => onnx}/onnx_import/src/precomp.hpp | 0 .../src/utils/arg_min_max_factory.cpp | 0 .../src/utils/arg_min_max_factory.hpp | 0 .../onnx_import/src/utils/common.cpp | 0 .../onnx_import/src/utils/common.hpp | 0 .../onnx_import/src/utils/convpool.cpp | 0 .../onnx_import/src/utils/convpool.hpp | 0 .../onnx_import/src/utils/onnx_internal.cpp | 42 +++-- .../onnx_import/src/utils/pooling_factory.cpp | 0 .../onnx_import/src/utils/pooling_factory.hpp | 0 .../onnx_import/src/utils/provenance_tag.cpp | 0 .../onnx_import/src/utils/provenance_tag.hpp | 0 .../onnx_import/src/utils/recurrent.cpp | 0 .../onnx_import/src/utils/recurrent.hpp | 0 .../onnx_import/src/utils/reshape.cpp | 0 .../onnx_import/src/utils/reshape.hpp | 0 .../src/utils/tensor_external_data.cpp | 0 .../src/utils/tensor_external_data.hpp | 0 .../onnx_import/src/utils/variadic.hpp | 0 .../tests/test_ngraph/test_frontend_onnx.py | 99 +++++++++++ 309 files changed, 752 insertions(+), 316 deletions(-) create mode 100644 ngraph/frontend/onnx/CMakeLists.txt create mode 100644 ngraph/frontend/onnx/frontend/CMakeLists.txt create mode 100644 ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp create mode 100644 ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp create mode 100644 ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp create mode 100644 ngraph/frontend/onnx/frontend/src/frontend.cpp create mode 100644 ngraph/frontend/onnx/frontend/src/input_model.cpp rename ngraph/frontend/{ => onnx}/onnx_common/CMakeLists.txt (100%) rename ngraph/frontend/{ => onnx}/onnx_common/include/onnx_common/parser.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_common/include/onnx_common/utils.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_common/src/parser.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_common/src/utils.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/CMakeLists.txt (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/include/onnx_editor/edge_mapper.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/include/onnx_editor/editor.hpp (96%) rename ngraph/frontend/{ => onnx}/onnx_editor/include/onnx_editor/editor_types.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/src/detail/subgraph_extraction.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/src/detail/subgraph_extraction.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/src/edge_mapper.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_editor/src/editor.cpp (93%) rename ngraph/frontend/{ => onnx}/onnx_import/CMakeLists.txt (100%) rename ngraph/frontend/{onnx_import/src => onnx/onnx_import/include/onnx_import}/core/model.hpp (95%) rename ngraph/frontend/{ => onnx}/onnx_import/include/onnx_import/core/node.hpp (99%) rename ngraph/frontend/{ => onnx}/onnx_import/include/onnx_import/core/operator_set.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/include/onnx_import/onnx.hpp (90%) rename ngraph/frontend/{ => onnx}/onnx_import/include/onnx_import/onnx_utils.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/include/onnx_import/utils/onnx_internal.hpp (59%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/attribute.cpp (77%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/attribute.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/graph.cpp (81%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/graph.hpp (76%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/graph_cache.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/graph_cache.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/model.cpp (94%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/node.cpp (98%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/null_node.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/null_node.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/sparse_tensor.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/tensor.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/transform.cpp (99%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/transform.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/core/value_info.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/default_opset.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/exceptions.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/exceptions.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/onnx.cpp (86%) rename ngraph/frontend/{ => onnx}/onnx_import/src/onnx_framework_node.cpp (90%) rename ngraph/frontend/{onnx_import/include/onnx_import => onnx/onnx_import/src}/onnx_framework_node.hpp (68%) rename ngraph/frontend/{ => onnx}/onnx_import/src/onnx_utils.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/abs.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/acos.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/acosh.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/add.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/add.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/and.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/argmax.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/argmax.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/argmin.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/argmin.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/asin.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/asinh.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/atan.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/atanh.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/average_pool.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/average_pool.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/batch_norm.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/batch_norm.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/bitshift.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/bitshift.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cast.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cast.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/ceil.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/clip.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/clip.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/compress.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/compress.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/concat.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/concat.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/constant.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/constant.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/constant_fill.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/constant_fill.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/constant_of_shape.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/constant_of_shape.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/conv.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/conv.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/conv_integer.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/conv_integer.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/conv_transpose.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/conv_transpose.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cos.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cos.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cosh.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cosh.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cum_sum.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/cum_sum.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/depth_to_space.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/depth_to_space.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/dequantize_linear.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/dequantize_linear.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/div.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/dropout.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/dropout.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/einsum.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/einsum.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/elu.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/elu.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/equal.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/erf.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/exp.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/expand.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/expand.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/eye_like.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/eye_like.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/flatten.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/flatten.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/floor.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gather.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gather_elements.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gather_nd.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gather_nd.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gemm.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gemm.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/global_average_pool.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/global_average_pool.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/global_max_pool.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/global_max_pool.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/greater.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gru.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/gru.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/hard_sigmoid.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/hard_sigmoid.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/hardmax.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/hardmax.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/identity.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/image_scaler.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/image_scaler.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/instance_norm.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/instance_norm.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/leaky_relu.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/leaky_relu.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/less.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/log.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/log.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/log_softmax.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/log_softmax.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/loop.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/loop.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lp_norm.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lp_norm.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lp_pool.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lp_pool.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lrn.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lrn.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lstm.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/lstm.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/matmul.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/max.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/max_pool.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/max_pool.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mean.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mean.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mean_variance_normalization.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mean_variance_normalization.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/min.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mod.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mod.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/mul.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/neg.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/non_max_suppression.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/non_max_suppression.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/non_zero.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/non_zero.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/not.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/onehot.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/onehot.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/or.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/normalize.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/normalize.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/swish.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/org.openvinotoolkit/swish.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/pad.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/pad.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/pow.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/pow.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/prelu.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/prelu.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/quant_conv.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/quant_conv.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/quantize_linear.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/quantize_linear.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/range.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/range.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reciprocal.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reciprocal.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reduce.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reduce.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/relu.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reshape.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reshape.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/resize.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/resize.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reverse_sequence.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/reverse_sequence.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/rnn.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/rnn.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/roi_align.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/roi_align.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/round.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/round.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/scatter_elements.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/scatter_elements.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/scatter_nd.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/scatter_nd.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/selu.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/selu.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/shape.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/shape.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/shrink.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/shrink.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sigmoid.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sign.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sin.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sinh.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/size.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/size.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/slice.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/slice.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/softmax.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/softmax.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/softplus.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/softplus.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/softsign.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/softsign.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/space_to_depth.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/space_to_depth.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/split.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/split.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sqrt.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/squeeze.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/squeeze.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sub.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/sum.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/tan.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/tanh.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/thresholded_relu.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/thresholded_relu.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/tile.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/tile.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/topk.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/topk.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/transpose.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/transpose.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/unsqueeze.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/unsqueeze.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/upsample.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/upsample.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/where.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/op/xor.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/ops_bridge.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/ops_bridge.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/precomp.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/arg_min_max_factory.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/arg_min_max_factory.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/common.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/common.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/convpool.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/convpool.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/onnx_internal.cpp (75%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/pooling_factory.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/pooling_factory.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/provenance_tag.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/provenance_tag.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/recurrent.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/recurrent.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/reshape.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/reshape.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/tensor_external_data.cpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/tensor_external_data.hpp (100%) rename ngraph/frontend/{ => onnx}/onnx_import/src/utils/variadic.hpp (100%) create mode 100644 ngraph/python/tests/test_ngraph/test_frontend_onnx.py diff --git a/ngraph/frontend/CMakeLists.txt b/ngraph/frontend/CMakeLists.txt index b4afff783dbb94..384d3e165ee44b 100644 --- a/ngraph/frontend/CMakeLists.txt +++ b/ngraph/frontend/CMakeLists.txt @@ -42,12 +42,7 @@ set(FRONTEND_INSTALL_INCLUDE "${NGRAPH_INSTALL_INCLUDE}/ngraph/frontend") add_subdirectory(frontend_manager) if (NGRAPH_ONNX_IMPORT_ENABLE) - add_subdirectory(onnx_common) - add_subdirectory(onnx_import) -endif() - -if (NGRAPH_ONNX_EDITOR_ENABLE) - add_subdirectory(onnx_editor) + add_subdirectory(onnx) endif() if (NGRAPH_PDPD_FRONTEND_ENABLE) diff --git a/ngraph/frontend/frontend_manager/include/frontend_manager/frontend.hpp b/ngraph/frontend/frontend_manager/include/frontend_manager/frontend.hpp index 97a18112d82959..158fd6222be77b 100644 --- a/ngraph/frontend/frontend_manager/include/frontend_manager/frontend.hpp +++ b/ngraph/frontend/frontend_manager/include/frontend_manager/frontend.hpp @@ -51,7 +51,7 @@ namespace ngraph /// \param modelParts Array of model memory buffers /// \return Loaded input model virtual InputModel::Ptr - load_from_memory_fragments(const std::vector& modelParts) const; + load_from_memory_fragments(const std::vector& model_parts) const; /// \brief Loads an input model by input stream representing main model file /// \param stream Input stream of main model @@ -74,7 +74,7 @@ namespace ngraph /// \param partiallyConverted partially converted nGraph function /// \return fully converted nGraph function virtual std::shared_ptr - convert(std::shared_ptr partiallyConverted) const; + convert(std::shared_ptr partially_converted) const; /// \brief Convert only those parts of the model that can be converted leaving others /// as-is. Converted parts are not normalized by additional transformations; normalize diff --git a/ngraph/frontend/frontend_manager/include/frontend_manager/input_model.hpp b/ngraph/frontend/frontend_manager/include/frontend_manager/input_model.hpp index 6761e1dda383f2..6ec3f6060fc4d9 100644 --- a/ngraph/frontend/frontend_manager/include/frontend_manager/input_model.hpp +++ b/ngraph/frontend/frontend_manager/include/frontend_manager/input_model.hpp @@ -68,47 +68,47 @@ namespace ngraph /// \brief Returns a tensor place by a tensor name following framework conventions, or /// nullptr if a tensor with this name doesn't exist. - /// \param tensorName Name of tensor + /// \param tensor_name Name of tensor /// \return Tensor place corresponding to specifed tensor name - virtual Place::Ptr get_place_by_tensor_name(const std::string& tensorName) const; + virtual Place::Ptr get_place_by_tensor_name(const std::string& tensor_name) const; /// \brief Returns an operation place by an operation name following framework /// conventions, or nullptr if an operation with this name doesn't exist. \param - /// operationName Name of operation \return Place representing operation - virtual Place::Ptr get_place_by_operation_name(const std::string& operationName); + /// operation_name Name of operation \return Place representing operation + virtual Place::Ptr get_place_by_operation_name(const std::string& operation_name); /// \brief Returns an input port place by operation name and appropriate port index - /// \param operationName Name of operation - /// \param outputPortIndex Index of input port for this operation + /// \param operation_name Name of operation + /// \param output_port_index Index of input port for this operation /// \return Place representing input port of operation virtual Place::Ptr - get_place_by_operation_name_and_input_port(const std::string& operationName, - int inputPortIndex); + get_place_by_operation_name_and_input_port(const std::string& operation_name, + int input_port_index); /// \brief Returns an output port place by operation name and appropriate port index - /// \param operationNameNname of operation - /// \param outputPortIndex Index of output port for this operation + /// \param operation_name Name of operation + /// \param output_port_index Index of output port for this operation /// \return Place representing output port of operation virtual Place::Ptr - get_place_by_operation_name_and_output_port(const std::string& operationName, - int outputPortIndex); + get_place_by_operation_name_and_output_port(const std::string& operation_name, + int output_port_index); ///// Naming and annotation ///// /// \brief Sets name for tensor. Overwrites existing names of this place /// \param operation Tensor place - /// \param newName New name for this tensor - virtual void set_name_for_tensor(Place::Ptr tensor, const std::string& newName); + /// \param new_name New name for this tensor + virtual void set_name_for_tensor(Place::Ptr tensor, const std::string& new_name); /// \brief Adds new name for tensor /// \param operation Tensor place - /// \param newName New name to be added to this place - virtual void add_name_for_tensor(Place::Ptr tensor, const std::string& newName); + /// \param new_name New name to be added to this place + virtual void add_name_for_tensor(Place::Ptr tensor, const std::string& new_name); /// \brief Sets name for operation. Overwrites existing names of this place /// \param operation Operation place - /// \param newName New name for this operation - virtual void set_name_for_operation(Place::Ptr operation, const std::string& newName); + /// \param new_name New name for this operation + virtual void set_name_for_operation(Place::Ptr operation, const std::string& new_name); /// \brief Unassign specified name from tensor place(s) /// \param name Name of tensor @@ -120,27 +120,27 @@ namespace ngraph /// \brief Set name for a particular dimension of a place (e.g. batch dimension) /// \param place Model's place - /// \param shapeDimIndex Dimension index - /// \param dimName Name to assign on this dimension + /// \param shape_dim_index Dimension index + /// \param dim_name Name to assign on this dimension virtual void set_name_for_dimension(Place::Ptr place, - size_t shapeDimIndex, - const std::string& dimName); + size_t shape_dim_index, + const std::string& dim_name); ///// Topology Editing ///// /// \brief Cut immediately before this place and assign this place as new input; prune /// all nodes that don't contribute to any output. /// \param place New place to be assigned as input - /// \param newNameOptional Optional new name assigned to this input place + /// \param new_name_optional Optional new name assigned to this input place virtual void cut_and_add_new_input(Place::Ptr place, - const std::string& newNameOptional = ""); + const std::string& new_name_optional = ""); /// \brief Cut immediately after this place and assign this place as new output; prune /// all nodes that don't contribute to any output. /// \param place New place to be assigned as output - /// \param newNameOptional Optional new name assigned to this output place + /// \param new_name_optional Optional new name assigned to this output place virtual void cut_and_add_new_output(Place::Ptr place, - const std::string& newNameOptional = ""); + const std::string& new_name_optional = ""); /// \brief Assign this place as new output or add necessary nodes to represent a new /// output. @@ -200,13 +200,13 @@ namespace ngraph virtual void set_tensor_value(Place::Ptr place, const void* value); /// \brief Defines partial value (lower bound and upper bound) for a tensor place - /// TODO: more details for minValue and maxValue format; who defines shape? + /// TODO: more details for min_value and max_value format; who defines shape? /// \param place Tensor place - /// \param minValue Lower bound of partial value for tensor place - /// \param maxValue Upper bound of partial value for tensor place + /// \param min_value Lower bound of partial value for tensor place + /// \param max_value Upper bound of partial value for tensor place virtual void set_tensor_partial_value(Place::Ptr place, - const void* minValue, - const void* maxValue); + const void* min_value, + const void* max_value); }; } // namespace frontend diff --git a/ngraph/frontend/frontend_manager/include/frontend_manager/place.hpp b/ngraph/frontend/frontend_manager/include/frontend_manager/place.hpp index 5df561fa0d5e4d..045d93dc4c5d98 100644 --- a/ngraph/frontend/frontend_manager/include/frontend_manager/place.hpp +++ b/ngraph/frontend/frontend_manager/include/frontend_manager/place.hpp @@ -87,12 +87,12 @@ namespace ngraph /// \note It can be called for any kind of graph place searching for the first consuming /// operations. /// - /// \param outputPortIndex If place is an operational node it specifies which output + /// \param output_port_index If place is an operational node it specifies which output /// port should be considered. /// /// \return A vector with all operation node references that consumes data from this /// place - virtual std::vector get_consuming_operations(int outputPortIndex) const; + virtual std::vector get_consuming_operations(int output_port_index) const; /// \brief Returns a tensor place that gets data from this place; applicable for /// operations, output ports and output edges which have only one output port @@ -103,11 +103,11 @@ namespace ngraph /// \brief Returns a tensor place that gets data from this place; applicable for /// operations, output ports and output edges /// - /// \param outputPortIndex Output port index if the current place is an operation node + /// \param output_port_index Output port index if the current place is an operation node /// and has multiple output ports /// /// \return A tensor place which hold the resulting value for this place - virtual Ptr get_target_tensor(int outputPortIndex) const; + virtual Ptr get_target_tensor(int output_port_index) const; /// \brief Returns a tensor place that supplies data for this place; applicable for /// operations, input ports and input edges which have only one input port @@ -118,10 +118,10 @@ namespace ngraph /// \brief Returns a tensor place that supplies data for this place; applicable for /// operations, input ports and input edges /// - /// \param inputPortIndex Input port index for operational nodes. + /// \param input_port_index Input port index for operational nodes. /// /// \return A tensor place which supplies data for this place - virtual Ptr get_source_tensor(int inputPortIndex) const; + virtual Ptr get_source_tensor(int input_port_index) const; /// \brief Get an operation node place that immediately produces data for this place; /// applicable if place has only one input port @@ -131,11 +131,11 @@ namespace ngraph /// \brief Get an operation node place that immediately produces data for this place /// - /// \param inputPortIndex If a given place is itself an operation node, this specifies a - /// port index + /// \param input_port_index If a given place is itself an operation node, this specifies + /// a port index /// /// \return An operation place that produces data for this place - virtual Ptr get_producing_operation(int inputPortIndex) const; + virtual Ptr get_producing_operation(int input_port_index) const; /// Returns a port that produces data for this place virtual Ptr get_producing_port() const; @@ -148,28 +148,28 @@ namespace ngraph /// \brief For operation node returns reference to an input port with specified index /// - /// \param inputPortIndex Input port index + /// \param input_port_index Input port index /// /// \return Appropriate input port place - virtual Ptr get_input_port(int inputPortIndex) const; + virtual Ptr get_input_port(int input_port_index) const; /// \brief For operation node returns reference to an input port with specified name; /// applicable if port group has only one input port /// - /// \param inputName Name of port group + /// \param input_name Name of port group /// /// \return Appropriate input port place - virtual Ptr get_input_port(const std::string& inputName) const; + virtual Ptr get_input_port(const std::string& input_name) const; /// \brief For operation node returns reference to an input port with specified name and /// index /// - /// \param inputName Name of port group, each group can have multiple ports + /// \param input_name Name of port group, each group can have multiple ports /// - /// \param inputPortIndex Input port index in a group + /// \param input_port_index Input port index in a group /// /// \return Appropriate input port place - virtual Ptr get_input_port(const std::string& inputName, int inputPortIndex) const; + virtual Ptr get_input_port(const std::string& input_name, int input_port_index) const; /// \brief For operation node returns reference to an output port; applicable for /// operations with only one output port @@ -179,28 +179,29 @@ namespace ngraph /// \brief For operation node returns reference to an output port with specified index /// - /// \param outputPortIndex Output port index + /// \param output_port_index Output port index /// /// \return Appropriate output port place - virtual Ptr get_output_port(int outputPortIndex) const; + virtual Ptr get_output_port(int output_port_index) const; /// \brief For operation node returns reference to an output port with specified name; /// applicable if port group has only one output port /// - /// \param outputName Name of output port group + /// \param output_name Name of output port group /// /// \return Appropriate output port place - virtual Ptr get_output_port(const std::string& outputName) const; + virtual Ptr get_output_port(const std::string& output_name) const; /// \brief For operation node returns reference to an output port with specified name /// and index /// - /// \param outputName Name of output port group, each group can have multiple ports + /// \param output_name Name of output port group, each group can have multiple ports /// - /// \param outputPortIndex Output port index + /// \param output_port_index Output port index /// /// \return Appropriate output port place - virtual Ptr get_output_port(const std::string& outputName, int outputPortIndex) const; + virtual Ptr get_output_port(const std::string& output_name, + int output_port_index) const; /// \brief Returns all input ports that consume data flows through this place virtual std::vector get_consuming_ports() const; diff --git a/ngraph/frontend/frontend_manager/src/frontend_manager.cpp b/ngraph/frontend/frontend_manager/src/frontend_manager.cpp index 037a2522523dc4..fb5703c5e44c72 100644 --- a/ngraph/frontend/frontend_manager/src/frontend_manager.cpp +++ b/ngraph/frontend/frontend_manager/src/frontend_manager.cpp @@ -15,22 +15,22 @@ using namespace ngraph::frontend; //----------- FrontEndManager --------------------------- class FrontEndManager::Impl { - std::vector m_loadedLibs; // must be a first class member (destroyed last) + std::vector m_loaded_libs; // must be a first class member (destroyed last) std::map m_factories; public: - Impl() { registerPlugins(); } + Impl() { register_plugins(); } ~Impl() = default; - FrontEnd::Ptr loadByFramework(const std::string& framework, FrontEndCapFlags fec) + FrontEnd::Ptr load_by_framework(const std::string& framework, FrontEndCapFlags fec) { FRONT_END_INITIALIZATION_CHECK( m_factories.count(framework), "FrontEnd for Framework ", framework, " is not found"); return m_factories[framework](fec); } - std::vector availableFrontEnds() const + std::vector available_front_ends() const { std::vector keys; @@ -42,46 +42,46 @@ class FrontEndManager::Impl return keys; } - FrontEnd::Ptr loadByModel(const std::string& path, FrontEndCapFlags fec) + FrontEnd::Ptr load_by_model(const std::string& path, FrontEndCapFlags fec) { - FRONT_END_NOT_IMPLEMENTED(loadByModel); + FRONT_END_NOT_IMPLEMENTED(load_by_model); } - void registerFrontEnd(const std::string& name, FrontEndFactory creator) + void register_front_end(const std::string& name, FrontEndFactory creator) { m_factories.insert({name, creator}); } private: - void registerPlugins() + void register_plugins() { - auto registerFromDir = [&](const std::string& dir) { + auto register_from_dir = [&](const std::string& dir) { if (!dir.empty()) { - auto plugins = loadPlugins(dir); + auto plugins = load_plugins(dir); for (auto& plugin : plugins) { - registerFrontEnd(plugin.m_pluginInfo.m_name, plugin.m_pluginInfo.m_creator); - m_loadedLibs.push_back(std::move(plugin.m_libHandle)); + register_front_end(plugin.m_plugin_info.m_name, plugin.m_plugin_info.m_creator); + m_loaded_libs.push_back(std::move(plugin.m_lib_handle)); } } }; - std::string envPath = ngraph::getenv_string("OV_FRONTEND_PATH"); - if (!envPath.empty()) + std::string env_path = ngraph::getenv_string("OV_FRONTEND_PATH"); + if (!env_path.empty()) { auto start = 0u; - auto sepPos = envPath.find(PathSeparator, start); - while (sepPos != std::string::npos) + auto sep_pos = env_path.find(PathSeparator, start); + while (sep_pos != std::string::npos) { - registerFromDir(envPath.substr(start, sepPos - start)); - start = sepPos + 1; - sepPos = envPath.find(PathSeparator, start); + register_from_dir(env_path.substr(start, sep_pos - start)); + start = sep_pos + 1; + sep_pos = env_path.find(PathSeparator, start); } - registerFromDir(envPath.substr(start, sepPos)); + register_from_dir(env_path.substr(start, sep_pos)); } else { - registerFromDir("."); + register_from_dir("."); } } }; @@ -98,22 +98,22 @@ FrontEndManager::~FrontEndManager() = default; FrontEnd::Ptr FrontEndManager::load_by_framework(const std::string& framework, FrontEndCapFlags fec) { - return m_impl->loadByFramework(framework, fec); + return m_impl->load_by_framework(framework, fec); } FrontEnd::Ptr FrontEndManager::load_by_model(const std::string& path, FrontEndCapFlags fec) { - return m_impl->loadByModel(path, fec); + return m_impl->load_by_model(path, fec); } std::vector FrontEndManager::get_available_front_ends() const { - return m_impl->availableFrontEnds(); + return m_impl->available_front_ends(); } void FrontEndManager::register_front_end(const std::string& name, FrontEndFactory creator) { - m_impl->registerFrontEnd(name, creator); + m_impl->register_front_end(name, creator); } //----------- FrontEnd --------------------------- @@ -138,7 +138,7 @@ InputModel::Ptr FrontEnd::load_from_memory(const void* model) const } InputModel::Ptr - FrontEnd::load_from_memory_fragments(const std::vector& modelParts) const + FrontEnd::load_from_memory_fragments(const std::vector& model_parts) const { FRONT_END_NOT_IMPLEMENTED(load_from_memory_fragments); } @@ -170,7 +170,7 @@ std::shared_ptr FrontEnd::convert_partially(InputModel::Ptr mo std::shared_ptr FrontEnd::decode(InputModel::Ptr model) const { - FRONT_END_NOT_IMPLEMENTED(convertDecodingOnly); + FRONT_END_NOT_IMPLEMENTED(decode); } void FrontEnd::normalize(std::shared_ptr function) const @@ -189,39 +189,40 @@ std::vector InputModel::get_outputs() const FRONT_END_NOT_IMPLEMENTED(get_outputs); } -Place::Ptr InputModel::get_place_by_tensor_name(const std::string& tensorName) const +Place::Ptr InputModel::get_place_by_tensor_name(const std::string& tensor_name) const { FRONT_END_NOT_IMPLEMENTED(get_place_by_tensor_name); } -Place::Ptr InputModel::get_place_by_operation_name(const std::string& operationName) +Place::Ptr InputModel::get_place_by_operation_name(const std::string& operation_name) { FRONT_END_NOT_IMPLEMENTED(get_place_by_operation_name); } -Place::Ptr InputModel::get_place_by_operation_name_and_input_port(const std::string& operationName, - int inputPortIndex) +Place::Ptr InputModel::get_place_by_operation_name_and_input_port(const std::string& operation_name, + int input_port_index) { FRONT_END_NOT_IMPLEMENTED(get_place_by_operation_name_and_input_port); } -Place::Ptr InputModel::get_place_by_operation_name_and_output_port(const std::string& operationName, - int outputPortIndex) +Place::Ptr + InputModel::get_place_by_operation_name_and_output_port(const std::string& operation_name, + int output_port_index) { FRONT_END_NOT_IMPLEMENTED(get_place_by_operation_name_and_output_port); } -void InputModel::set_name_for_tensor(Place::Ptr tensor, const std::string& newName) +void InputModel::set_name_for_tensor(Place::Ptr tensor, const std::string& new_name) { FRONT_END_NOT_IMPLEMENTED(set_name_for_tensor); } -void InputModel::add_name_for_tensor(Place::Ptr tensor, const std::string& newName) +void InputModel::add_name_for_tensor(Place::Ptr tensor, const std::string& new_name) { FRONT_END_NOT_IMPLEMENTED(add_name_for_tensor); } -void InputModel::set_name_for_operation(Place::Ptr operation, const std::string& newName) +void InputModel::set_name_for_operation(Place::Ptr operation, const std::string& new_name) { FRONT_END_NOT_IMPLEMENTED(set_name_for_operation); } @@ -237,18 +238,18 @@ void InputModel::free_name_for_operation(const std::string& name) } void InputModel::set_name_for_dimension(Place::Ptr place, - size_t shapeDimIndex, - const std::string& dimName) + size_t shape_dim_index, + const std::string& dim_name) { FRONT_END_NOT_IMPLEMENTED(set_name_for_dimension); } -void InputModel::cut_and_add_new_input(Place::Ptr place, const std::string& newNameOptional) +void InputModel::cut_and_add_new_input(Place::Ptr place, const std::string& new_name_optional) { FRONT_END_NOT_IMPLEMENTED(cut_and_add_new_input); } -void InputModel::cut_and_add_new_output(Place::Ptr place, const std::string& newNameOptional) +void InputModel::cut_and_add_new_output(Place::Ptr place, const std::string& new_name_optional) { FRONT_END_NOT_IMPLEMENTED(cut_and_add_new_output); } @@ -301,8 +302,8 @@ void InputModel::set_tensor_value(Place::Ptr place, const void* value) } void InputModel::set_tensor_partial_value(Place::Ptr place, - const void* minValue, - const void* maxValue) + const void* min_value, + const void* max_value) { FRONT_END_NOT_IMPLEMENTED(set_tensor_partial_value); } @@ -318,7 +319,7 @@ std::vector Place::get_consuming_operations() const FRONT_END_NOT_IMPLEMENTED(get_consuming_operations); } -std::vector Place::get_consuming_operations(int outputPortIndex) const +std::vector Place::get_consuming_operations(int output_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_consuming_operations); } @@ -328,7 +329,7 @@ Place::Ptr Place::get_target_tensor() const FRONT_END_NOT_IMPLEMENTED(get_target_tensor); } -Place::Ptr Place::get_target_tensor(int outputPortIndex) const +Place::Ptr Place::get_target_tensor(int output_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_target_tensor); } @@ -338,7 +339,7 @@ Place::Ptr Place::get_producing_operation() const FRONT_END_NOT_IMPLEMENTED(get_producing_operation); } -Place::Ptr Place::get_producing_operation(int inputPortIndex) const +Place::Ptr Place::get_producing_operation(int input_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_producing_operation); } @@ -353,17 +354,17 @@ Place::Ptr Place::get_input_port() const FRONT_END_NOT_IMPLEMENTED(get_input_port); } -Place::Ptr Place::get_input_port(int inputPortIndex) const +Place::Ptr Place::get_input_port(int input_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_input_port); } -Place::Ptr Place::get_input_port(const std::string& inputName) const +Place::Ptr Place::get_input_port(const std::string& input_name) const { FRONT_END_NOT_IMPLEMENTED(get_input_port); } -Place::Ptr Place::get_input_port(const std::string& inputName, int inputPortIndex) const +Place::Ptr Place::get_input_port(const std::string& input_name, int input_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_input_port); } @@ -373,17 +374,17 @@ Place::Ptr Place::get_output_port() const FRONT_END_NOT_IMPLEMENTED(get_output_port); } -Place::Ptr Place::get_output_port(int outputPortIndex) const +Place::Ptr Place::get_output_port(int output_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_output_port); } -Place::Ptr Place::get_output_port(const std::string& outputName) const +Place::Ptr Place::get_output_port(const std::string& output_name) const { FRONT_END_NOT_IMPLEMENTED(get_output_port); } -Place::Ptr Place::get_output_port(const std::string& outputName, int outputPortIndex) const +Place::Ptr Place::get_output_port(const std::string& output_name, int output_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_output_port); } @@ -418,7 +419,7 @@ Place::Ptr Place::get_source_tensor() const FRONT_END_NOT_IMPLEMENTED(get_source_tensor); } -Place::Ptr Place::get_source_tensor(int inputPortIndex) const +Place::Ptr Place::get_source_tensor(int input_port_index) const { FRONT_END_NOT_IMPLEMENTED(get_source_tensor); } diff --git a/ngraph/frontend/frontend_manager/src/plugin_loader.cpp b/ngraph/frontend/frontend_manager/src/plugin_loader.cpp index f42dbbad3a6c96..7ce0e956bab700 100644 --- a/ngraph/frontend/frontend_manager/src/plugin_loader.cpp +++ b/ngraph/frontend/frontend_manager/src/plugin_loader.cpp @@ -25,17 +25,17 @@ using namespace ngraph; using namespace ngraph::frontend; #ifdef WIN32 -#define DLOPEN(fileStr) LoadLibrary(TEXT(fileStr.c_str())) +#define DLOPEN(file_str) LoadLibrary(TEXT(file_str.c_str())) #define DLSYM(obj, func) GetProcAddress(obj, func) #define DLCLOSE(obj) FreeLibrary(obj) #else -#define DLOPEN(fileStr) dlopen(file.c_str(), RTLD_LAZY) +#define DLOPEN(file_str) dlopen(file_str.c_str(), RTLD_LAZY) #define DLSYM(obj, func) dlsym(obj, func) #define DLCLOSE(obj) dlclose(obj) #endif // TODO: change to std::filesystem for C++17 -static std::vector listFiles(const std::string& path) +static std::vector list_files(const std::string& path) { std::vector res; try @@ -68,9 +68,9 @@ static std::vector listFiles(const std::string& path) return res; } -std::vector ngraph::frontend::loadPlugins(const std::string& dirName) +std::vector ngraph::frontend::load_plugins(const std::string& dir_name) { - auto files = listFiles(dirName); + auto files = list_files(dir_name); std::vector res; for (const auto& file : files) { @@ -80,32 +80,29 @@ std::vector ngraph::frontend::loadPlugins(const std::string& dirName continue; } - PluginHandle guard([shared_object, file]() { - // std::cout << "Closing plugin library " << file << std::endl; - DLCLOSE(shared_object); - }); + PluginHandle guard([shared_object, file]() { DLCLOSE(shared_object); }); - auto infoAddr = reinterpret_cast(DLSYM(shared_object, "GetAPIVersion")); - if (!infoAddr) + auto info_addr = reinterpret_cast(DLSYM(shared_object, "GetAPIVersion")); + if (!info_addr) { continue; } - FrontEndVersion plugInfo{reinterpret_cast(infoAddr())}; + FrontEndVersion plug_info{reinterpret_cast(info_addr())}; - if (plugInfo != OV_FRONTEND_API_VERSION) + if (plug_info != OV_FRONTEND_API_VERSION) { // Plugin has incompatible API version, do not load it continue; } - auto creatorAddr = reinterpret_cast(DLSYM(shared_object, "GetFrontEndData")); - if (!creatorAddr) + auto creator_addr = reinterpret_cast(DLSYM(shared_object, "GetFrontEndData")); + if (!creator_addr) { continue; } std::unique_ptr fact{ - reinterpret_cast(creatorAddr())}; + reinterpret_cast(creator_addr())}; res.push_back(PluginData(std::move(guard), std::move(*fact))); } diff --git a/ngraph/frontend/frontend_manager/src/plugin_loader.hpp b/ngraph/frontend/frontend_manager/src/plugin_loader.hpp index 1ab3fc73baa227..9d01d4f3437689 100644 --- a/ngraph/frontend/frontend_manager/src/plugin_loader.hpp +++ b/ngraph/frontend/frontend_manager/src/plugin_loader.hpp @@ -7,11 +7,11 @@ #include #ifdef _WIN32 -const char FileSeparator[] = "\\"; -const char PathSeparator[] = ";"; +static const char FileSeparator[] = "\\"; +static const char PathSeparator[] = ";"; #else -const char FileSeparator[] = "/"; -const char PathSeparator[] = ":"; +static const char FileSeparator[] = "/"; +static const char PathSeparator[] = ":"; #endif // _WIN32 namespace ngraph @@ -23,8 +23,8 @@ namespace ngraph class PluginHandle { public: - PluginHandle(std::function callOnDestruct) - : m_callOnDestruct(callOnDestruct) + PluginHandle(std::function call_on_destruct) + : m_call_on_destruct(call_on_destruct) { } @@ -38,31 +38,31 @@ namespace ngraph ~PluginHandle() { - if (m_callOnDestruct) + if (m_call_on_destruct) { - m_callOnDestruct(); + m_call_on_destruct(); } } private: - std::function m_callOnDestruct; + std::function m_call_on_destruct; }; struct PluginData { PluginData(PluginHandle&& h, FrontEndPluginInfo&& info) - : m_libHandle(std::move(h)) - , m_pluginInfo(info) + : m_lib_handle(std::move(h)) + , m_plugin_info(info) { } PluginHandle - m_libHandle; // Shall be destroyed when plugin is not needed anymore to free memory - FrontEndPluginInfo m_pluginInfo; + m_lib_handle; // Shall be destroyed when plugin is not needed anymore to free memory + FrontEndPluginInfo m_plugin_info; }; // Searches for available plugins in a specified directory - std::vector loadPlugins(const std::string& dirName); + std::vector load_plugins(const std::string& dir_name); } // namespace frontend } // namespace ngraph diff --git a/ngraph/frontend/onnx/CMakeLists.txt b/ngraph/frontend/onnx/CMakeLists.txt new file mode 100644 index 00000000000000..123d256e26507e --- /dev/null +++ b/ngraph/frontend/onnx/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (C) 2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +add_subdirectory(onnx_common) +add_subdirectory(onnx_import) +if (NGRAPH_ONNX_EDITOR_ENABLE) + add_subdirectory(onnx_editor) + add_subdirectory(frontend) +endif() diff --git a/ngraph/frontend/onnx/frontend/CMakeLists.txt b/ngraph/frontend/onnx/frontend/CMakeLists.txt new file mode 100644 index 00000000000000..38ff2258e6a184 --- /dev/null +++ b/ngraph/frontend/onnx/frontend/CMakeLists.txt @@ -0,0 +1,51 @@ +# Copyright (C) 2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) +file(GLOB_RECURSE LIBRARY_PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp) + +set(ONNX_FRONTEND_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) + +# Create named folders for the sources within the .vcproj +# Empty name lists them directly under the .vcproj + +source_group("src" FILES ${LIBRARY_SRC}) +source_group("include" FILES ${LIBRARY_HEADERS}) +source_group("public include" FILES ${LIBRARY_PUBLIC_HEADERS}) + +# Create shared library +add_library(onnx_ngraph_frontend SHARED ${LIBRARY_SRC} ${LIBRARY_HEADERS} ${LIBRARY_PUBLIC_HEADERS}) +add_library(ngraph::onnx_ngraph_frontend ALIAS onnx_ngraph_frontend) + +add_clang_format_target(onnx_ngraph_frontend_clang FOR_TARGETS onnx_ngraph_frontend) + +if(COMMAND ie_add_vs_version_file) + ie_add_vs_version_file(NAME onnx_ngraph_frontend + FILEDESCRIPTION "nGraph ONNX frontend library") +endif() + +target_link_libraries(onnx_ngraph_frontend PRIVATE onnx_editor onnx_importer frontend_manager) + +target_include_directories(onnx_ngraph_frontend PUBLIC $ + $) + +target_include_directories(onnx_ngraph_frontend PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) + +if (CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$") + target_compile_options(onnx_ngraph_frontend PRIVATE -Wno-undef -Wno-reserved-id-macro -Wno-switch-enum + -Wno-invalid-offsetof -Wno-shorten-64-to-32 -Wno-unused-macros -Wno-missing-variable-declarations + -Wno-unused-private-field -Wno-shadow -Wno-deprecated PUBLIC -Wno-undefined-func-template) +endif() + +install(TARGETS onnx_ngraph_frontend EXPORT ngraphTargets + RUNTIME DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph + ARCHIVE DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph + LIBRARY DESTINATION ${NGRAPH_INSTALL_LIB} COMPONENT ngraph) + +install(DIRECTORY ${ONNX_FRONTEND_INCLUDE_DIR}/onnx_frontend + DESTINATION ${FRONTEND_INSTALL_INCLUDE} + COMPONENT ngraph_dev + FILES_MATCHING PATTERN "*.hpp") + +export(TARGETS onnx_ngraph_frontend NAMESPACE ngraph:: APPEND FILE "${NGRAPH_TARGETS_FILE}") diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp new file mode 100644 index 00000000000000..dfe7958463a021 --- /dev/null +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp @@ -0,0 +1,25 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +namespace ngraph +{ + namespace frontend + { + class FRONTEND_API FrontEndONNX : public FrontEnd + { + public: + InputModel::Ptr load_from_file(const std::string& path) const override; + std::shared_ptr convert(InputModel::Ptr model) const override; + std::shared_ptr + convert(std::shared_ptr partially_converted) const override; + std::shared_ptr decode(InputModel::Ptr model) const override; + }; + + } // namespace frontend + +} // namespace ngraph diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp new file mode 100644 index 00000000000000..1d6270796f89af --- /dev/null +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp @@ -0,0 +1,34 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include +#include + +namespace ngraph +{ + namespace frontend + { + class FRONTEND_API InputModelONNX : public InputModel + { + public: + InputModelONNX(const std::string& path); + + + std::vector get_inputs() const override; + Place::Ptr get_place_by_tensor_name(const std::string& tensor_name) const override; + void set_partial_shape(Place::Ptr place, const ngraph::PartialShape& shape) override; + void set_element_type(Place::Ptr place, const ngraph::element::Type& type) override; + + std::shared_ptr decode(); + std::shared_ptr convert(); + + private: + onnx_editor::ONNXModelEditor m_editor; + }; + + } // namespace frontend + +} // namespace ngraph diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp new file mode 100644 index 00000000000000..a72739b7ca9e29 --- /dev/null +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp @@ -0,0 +1,77 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +namespace ngraph +{ + namespace frontend + { + class FRONTEND_API PlaceInputEdgeONNX : public Place + { + public: + PlaceInputEdgeONNX(const onnx_editor::InputEdge& edge) : m_edge(edge) + {} + + private: + onnx_editor::InputEdge m_edge; + + }; + + class FRONTEND_API PlaceOutputEdgeONNX : public Place + { + public: + PlaceOutputEdgeONNX(const onnx_editor::OutputEdge& edge) : m_edge(edge) + {} + + private: + onnx_editor::OutputEdge m_edge; + }; + + class FRONTEND_API PlaceTensorONNX : public Place + { + public: + PlaceTensorONNX(const std::string& name, const onnx_editor::ONNXModelEditor& editor) + : m_name(name), + m_editor(editor) + { + } + + std::vector get_names() const override + { + return {m_name}; + } + + Place::Ptr get_producing_port() const override + { + return std::make_shared(m_editor.find_output_edge(m_name)); + } + + std::vector get_consuming_ports() const override + { + std::vector ret; + auto edges = m_editor.find_output_consumers(m_name); + std::transform(edges.begin(), edges.end(), std::back_inserter(ret), + [] (const onnx_editor::InputEdge& edge) { + return std::make_shared(edge); + }); + return ret; + } + + Ptr get_input_port(int input_port_index) const override + { + return std::make_shared( + m_editor.find_input_edge(onnx_editor::EditorNode(m_name), + onnx_editor::EditorInput(input_port_index))); + } + + private: + std::string m_name; + const onnx_editor::ONNXModelEditor& m_editor; + }; + } // namespace frontend + +} // namespace ngraph diff --git a/ngraph/frontend/onnx/frontend/src/frontend.cpp b/ngraph/frontend/onnx/frontend/src/frontend.cpp new file mode 100644 index 00000000000000..b2120d970884a2 --- /dev/null +++ b/ngraph/frontend/onnx/frontend/src/frontend.cpp @@ -0,0 +1,51 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include +#include +#include + + +using namespace ngraph; +using namespace ngraph::frontend; + + +extern "C" FRONTEND_API FrontEndVersion GetAPIVersion() +{ + return OV_FRONTEND_API_VERSION; +} + +extern "C" FRONTEND_API void* GetFrontEndData() +{ + FrontEndPluginInfo* res = new FrontEndPluginInfo(); + res->m_name = "onnx"; + res->m_creator = [] (FrontEndCapFlags) { return std::make_shared(); }; + return res; +} + +InputModel::Ptr FrontEndONNX::load_from_file(const std::string& path) const +{ + return std::make_shared(path); +} + +std::shared_ptr FrontEndONNX::convert(InputModel::Ptr model) const +{ + auto model_onnx = std::dynamic_pointer_cast(model); + NGRAPH_CHECK(model_onnx != nullptr, "Invalid input model"); + return model_onnx->convert(); +} + +std::shared_ptr FrontEndONNX::convert(std::shared_ptr partially_converted) const +{ + return onnx_import::convert_decoded_function(partially_converted); +} + +std::shared_ptr FrontEndONNX::decode(InputModel::Ptr model) const +{ + auto model_onnx = std::dynamic_pointer_cast(model); + NGRAPH_CHECK(model_onnx != nullptr, "Invalid input model"); + return model_onnx->decode(); +} diff --git a/ngraph/frontend/onnx/frontend/src/input_model.cpp b/ngraph/frontend/onnx/frontend/src/input_model.cpp new file mode 100644 index 00000000000000..8080ba695b1234 --- /dev/null +++ b/ngraph/frontend/onnx/frontend/src/input_model.cpp @@ -0,0 +1,56 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include +#include + + +using namespace ngraph; +using namespace ngraph::frontend; + + +InputModelONNX::InputModelONNX(const std::string& path) : m_editor(path) +{} + +std::vector InputModelONNX::get_inputs() const +{ + auto inputs = m_editor.model_inputs(); + std::vector ret; + ret.reserve(inputs.size()); + for (const auto& input : inputs) + { + ret.push_back(std::make_shared(input, m_editor)); + } + return ret; +} + +Place::Ptr InputModelONNX::get_place_by_tensor_name(const std::string& tensor_name) const +{ + return std::make_shared(tensor_name, m_editor); +} + +void InputModelONNX::set_partial_shape(Place::Ptr place, const ngraph::PartialShape& shape) +{ + std::map m; + m[place->get_names()[0]] = shape; + m_editor.set_input_shapes(m); +} + +void InputModelONNX::set_element_type(Place::Ptr place, const ngraph::element::Type& type) +{ + std::map m; + m[place->get_names()[0]] = type; + m_editor.set_input_types(m); +} + +std::shared_ptr InputModelONNX::decode() +{ + return m_editor.decode(); +} + +std::shared_ptr InputModelONNX::convert() +{ + return m_editor.get_function(); +} diff --git a/ngraph/frontend/onnx_common/CMakeLists.txt b/ngraph/frontend/onnx/onnx_common/CMakeLists.txt similarity index 100% rename from ngraph/frontend/onnx_common/CMakeLists.txt rename to ngraph/frontend/onnx/onnx_common/CMakeLists.txt diff --git a/ngraph/frontend/onnx_common/include/onnx_common/parser.hpp b/ngraph/frontend/onnx/onnx_common/include/onnx_common/parser.hpp similarity index 100% rename from ngraph/frontend/onnx_common/include/onnx_common/parser.hpp rename to ngraph/frontend/onnx/onnx_common/include/onnx_common/parser.hpp diff --git a/ngraph/frontend/onnx_common/include/onnx_common/utils.hpp b/ngraph/frontend/onnx/onnx_common/include/onnx_common/utils.hpp similarity index 100% rename from ngraph/frontend/onnx_common/include/onnx_common/utils.hpp rename to ngraph/frontend/onnx/onnx_common/include/onnx_common/utils.hpp diff --git a/ngraph/frontend/onnx_common/src/parser.cpp b/ngraph/frontend/onnx/onnx_common/src/parser.cpp similarity index 100% rename from ngraph/frontend/onnx_common/src/parser.cpp rename to ngraph/frontend/onnx/onnx_common/src/parser.cpp diff --git a/ngraph/frontend/onnx_common/src/utils.cpp b/ngraph/frontend/onnx/onnx_common/src/utils.cpp similarity index 100% rename from ngraph/frontend/onnx_common/src/utils.cpp rename to ngraph/frontend/onnx/onnx_common/src/utils.cpp diff --git a/ngraph/frontend/onnx_editor/CMakeLists.txt b/ngraph/frontend/onnx/onnx_editor/CMakeLists.txt similarity index 100% rename from ngraph/frontend/onnx_editor/CMakeLists.txt rename to ngraph/frontend/onnx/onnx_editor/CMakeLists.txt diff --git a/ngraph/frontend/onnx_editor/include/onnx_editor/edge_mapper.hpp b/ngraph/frontend/onnx/onnx_editor/include/onnx_editor/edge_mapper.hpp similarity index 100% rename from ngraph/frontend/onnx_editor/include/onnx_editor/edge_mapper.hpp rename to ngraph/frontend/onnx/onnx_editor/include/onnx_editor/edge_mapper.hpp diff --git a/ngraph/frontend/onnx_editor/include/onnx_editor/editor.hpp b/ngraph/frontend/onnx/onnx_editor/include/onnx_editor/editor.hpp similarity index 96% rename from ngraph/frontend/onnx_editor/include/onnx_editor/editor.hpp rename to ngraph/frontend/onnx/onnx_editor/include/onnx_editor/editor.hpp index b93b568141e287..7486ed9da74188 100644 --- a/ngraph/frontend/onnx_editor/include/onnx_editor/editor.hpp +++ b/ngraph/frontend/onnx/onnx_editor/include/onnx_editor/editor.hpp @@ -22,6 +22,8 @@ namespace ONNX_NAMESPACE class ModelProto; } // namespace ONNX_NAMESPACE +#define ONNX_EDITOR_API NGRAPH_HELPER_DLL_EXPORT + namespace ngraph { namespace onnx_editor @@ -31,7 +33,7 @@ namespace ngraph /// \note This class can be used to modify an ONNX model before it gets translated to /// an ngraph::Function by the import_onnx_model function. It lets you modify the /// model's input types and shapes, extract a subgraph and more. - class ONNXModelEditor final + class ONNX_EDITOR_API ONNXModelEditor final { public: ONNXModelEditor() = delete; @@ -168,6 +170,11 @@ namespace ngraph /// bool is_correct_and_unambiguous_node(const EditorNode& node) const; + /// \brief Returns a nGraph function based on edited model + /// decoded to framework nodes + /// + std::shared_ptr decode(); + private: void update_mapper_if_needed() const; diff --git a/ngraph/frontend/onnx_editor/include/onnx_editor/editor_types.hpp b/ngraph/frontend/onnx/onnx_editor/include/onnx_editor/editor_types.hpp similarity index 100% rename from ngraph/frontend/onnx_editor/include/onnx_editor/editor_types.hpp rename to ngraph/frontend/onnx/onnx_editor/include/onnx_editor/editor_types.hpp diff --git a/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.cpp b/ngraph/frontend/onnx/onnx_editor/src/detail/subgraph_extraction.cpp similarity index 100% rename from ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.cpp rename to ngraph/frontend/onnx/onnx_editor/src/detail/subgraph_extraction.cpp diff --git a/ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.hpp b/ngraph/frontend/onnx/onnx_editor/src/detail/subgraph_extraction.hpp similarity index 100% rename from ngraph/frontend/onnx_editor/src/detail/subgraph_extraction.hpp rename to ngraph/frontend/onnx/onnx_editor/src/detail/subgraph_extraction.hpp diff --git a/ngraph/frontend/onnx_editor/src/edge_mapper.cpp b/ngraph/frontend/onnx/onnx_editor/src/edge_mapper.cpp similarity index 100% rename from ngraph/frontend/onnx_editor/src/edge_mapper.cpp rename to ngraph/frontend/onnx/onnx_editor/src/edge_mapper.cpp diff --git a/ngraph/frontend/onnx_editor/src/editor.cpp b/ngraph/frontend/onnx/onnx_editor/src/editor.cpp similarity index 93% rename from ngraph/frontend/onnx_editor/src/editor.cpp rename to ngraph/frontend/onnx/onnx_editor/src/editor.cpp index c4568edbf9c5a8..95f6a228b118ce 100644 --- a/ngraph/frontend/onnx_editor/src/editor.cpp +++ b/ngraph/frontend/onnx/onnx_editor/src/editor.cpp @@ -187,19 +187,19 @@ namespace /// \brief A helper class used to hold the ModelProto object as its field struct onnx_editor::ONNXModelEditor::Impl { - ONNX_NAMESPACE::ModelProto m_model_proto; + std::shared_ptr m_model_proto; EdgeMapper m_edge_mapper; bool m_is_mapper_updated = false; Impl() = delete; Impl(const std::string& model_path) - : m_model_proto{onnx_common::parse_from_file(model_path)} + : m_model_proto{std::make_shared(onnx_common::parse_from_file(model_path))} { } - void infer_shapes() { ONNX_NAMESPACE::shape_inference::InferShapes(m_model_proto); } - void remove_shape_inference_info() { m_model_proto.mutable_graph()->clear_value_info(); } + void infer_shapes() { ONNX_NAMESPACE::shape_inference::InferShapes(*m_model_proto.get()); } + void remove_shape_inference_info() { m_model_proto->mutable_graph()->clear_value_info(); } }; onnx_editor::ONNXModelEditor::ONNXModelEditor(const std::string& model_path) @@ -222,7 +222,7 @@ void onnx_editor::ONNXModelEditor::serialize(const std::string& out_file_path) c throw ngraph_error("Could not open the file: " + out_file_path); }; - if (!m_pimpl->m_model_proto.SerializeToOstream(&out_file)) + if (!m_pimpl->m_model_proto->SerializeToOstream(&out_file)) { throw ngraph_error("Could not serialize the model to: " + out_file_path); } @@ -235,7 +235,7 @@ void onnx_editor::ONNXModelEditor::serialize(const std::string& out_file_path) c void onnx_editor::ONNXModelEditor::set_input_types( const std::map& input_types) { - auto* onnx_graph = m_pimpl->m_model_proto.mutable_graph(); + auto* onnx_graph = m_pimpl->m_model_proto->mutable_graph(); for (const auto& input_desc : input_types) { @@ -256,7 +256,7 @@ void onnx_editor::ONNXModelEditor::set_input_types( void onnx_editor::ONNXModelEditor::set_input_shapes( const std::map& input_shapes) { - auto* onnx_graph = m_pimpl->m_model_proto.mutable_graph(); + auto* onnx_graph = m_pimpl->m_model_proto->mutable_graph(); for (const auto& input_desc : input_shapes) { @@ -283,7 +283,7 @@ void onnx_editor::ONNXModelEditor::cut_graph_fragment(const std::vectorinfer_shapes(); - SubgraphExtractor editor{*(m_pimpl->m_model_proto.mutable_graph())}; + SubgraphExtractor editor{*(m_pimpl->m_model_proto->mutable_graph())}; editor.add_new_inputs(inputs); editor.add_new_outputs(outputs); editor.extract_subgraph(outputs); @@ -294,7 +294,7 @@ void onnx_editor::ONNXModelEditor::cut_graph_fragment(const std::vector onnx_editor::ONNXModelEditor::model_inputs() const { - const auto& graph = m_pimpl->m_model_proto.graph(); + const auto& graph = m_pimpl->m_model_proto->graph(); std::vector inputs_and_initializers; inputs_and_initializers.reserve(graph.input_size() + graph.initializer_size()); @@ -314,7 +314,7 @@ std::vector onnx_editor::ONNXModelEditor::model_inputs() const std::string onnx_editor::ONNXModelEditor::model_string() const { - return m_pimpl->m_model_proto.SerializeAsString(); + return m_pimpl->m_model_proto->SerializeAsString(); } std::shared_ptr onnx_editor::ONNXModelEditor::get_function() const @@ -325,7 +325,7 @@ std::shared_ptr onnx_editor::ONNXModelEditor::get_function() const void onnx_editor::ONNXModelEditor::set_input_values( const std::map>& input_values) { - auto onnx_graph = m_pimpl->m_model_proto.mutable_graph(); + auto onnx_graph = m_pimpl->m_model_proto->mutable_graph(); for (const auto& input : input_values) { @@ -354,7 +354,7 @@ void onnx_editor::ONNXModelEditor::update_mapper_if_needed() const { if (!m_pimpl->m_is_mapper_updated) { - m_pimpl->m_edge_mapper = EdgeMapper(m_pimpl->m_model_proto.graph()); + m_pimpl->m_edge_mapper = EdgeMapper(m_pimpl->m_model_proto->graph()); } m_pimpl->m_is_mapper_updated = true; } @@ -391,3 +391,8 @@ bool onnx_editor::ONNXModelEditor::is_correct_and_unambiguous_node(const EditorN update_mapper_if_needed(); return m_pimpl->m_edge_mapper.is_correct_and_unambiguous_node(node); } + +std::shared_ptr onnx_editor::ONNXModelEditor::decode() +{ + return onnx_import::detail::decode_to_framework_nodes(m_pimpl->m_model_proto, m_model_path); +} diff --git a/ngraph/frontend/onnx_import/CMakeLists.txt b/ngraph/frontend/onnx/onnx_import/CMakeLists.txt similarity index 100% rename from ngraph/frontend/onnx_import/CMakeLists.txt rename to ngraph/frontend/onnx/onnx_import/CMakeLists.txt diff --git a/ngraph/frontend/onnx_import/src/core/model.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/core/model.hpp similarity index 95% rename from ngraph/frontend/onnx_import/src/core/model.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/core/model.hpp index 993dfb97e1a97a..82a6e0c4f10f8f 100644 --- a/ngraph/frontend/onnx_import/src/core/model.hpp +++ b/ngraph/frontend/onnx/onnx_import/include/onnx_import/core/model.hpp @@ -28,7 +28,7 @@ namespace ngraph { public: Model() = delete; - explicit Model(std::unique_ptr&& model_proto); + explicit Model(std::shared_ptr model_proto); Model(const Model&) = delete; Model(Model&&) = delete; @@ -71,7 +71,7 @@ namespace ngraph void enable_opset_domain(const std::string& domain); private: - const std::unique_ptr m_model_proto; + const std::shared_ptr m_model_proto; std::unordered_map m_opset; }; diff --git a/ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/core/node.hpp similarity index 99% rename from ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/core/node.hpp index cb5d11fde31e5c..2beec2bc216b6d 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/core/node.hpp +++ b/ngraph/frontend/onnx/onnx_import/include/onnx_import/core/node.hpp @@ -57,7 +57,6 @@ namespace ngraph Node& operator=(const Node&) = delete; OutputVector get_ng_inputs() const; - OutputVector get_ng_nodes() const; const std::string& domain() const; const std::string& op_type() const; const std::string& get_name() const; diff --git a/ngraph/frontend/onnx_import/include/onnx_import/core/operator_set.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/core/operator_set.hpp similarity index 100% rename from ngraph/frontend/onnx_import/include/onnx_import/core/operator_set.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/core/operator_set.hpp diff --git a/ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/onnx.hpp similarity index 90% rename from ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/onnx.hpp index 04e6be0cdd527a..39b923328c123f 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/onnx.hpp +++ b/ngraph/frontend/onnx/onnx_import/include/onnx_import/onnx.hpp @@ -72,6 +72,14 @@ namespace ngraph /// \return An nGraph function that represents a single output from the created graph. ONNX_IMPORTER_API std::shared_ptr import_onnx_model(const std::string& file_path); + + /// \brief Converts a nGraph function (onnx model decoded to function with + /// ONNXFrameworkNode(s)) + /// to a complete function with actual compute operations + /// + /// \return A nGraph function. + ONNX_IMPORTER_API + std::shared_ptr convert_decoded_function(std::shared_ptr function); } // namespace onnx_import } // namespace ngraph diff --git a/ngraph/frontend/onnx_import/include/onnx_import/onnx_utils.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/onnx_utils.hpp similarity index 100% rename from ngraph/frontend/onnx_import/include/onnx_import/onnx_utils.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/onnx_utils.hpp diff --git a/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp similarity index 100% rename from ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_importer_visibility.hpp diff --git a/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_internal.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp similarity index 59% rename from ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_internal.hpp rename to ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp index 58554bd3c99234..ef2232e239159f 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/utils/onnx_internal.hpp +++ b/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp @@ -37,8 +37,24 @@ namespace ngraph /// \return An nGraph function that represents a single output from the created /// graph. ONNX_IMPORTER_API - std::shared_ptr import_onnx_model(ONNX_NAMESPACE::ModelProto& model_proto, - const std::string& model_path); + std::shared_ptr + import_onnx_model(std::shared_ptr model_proto, + const std::string& model_path); + + /// \brief Decode ONNX model to nGraph function with ONNXFrameworkNode(s) + /// + /// \param[in] model_proto Reference to a GraphProto object. + /// \param[in] model_path The path to the imported onnx model. + /// It is required if the imported model uses data saved in + /// external files. + /// + /// \return A nGraph function with ONNXFrameworkNodes + ONNX_IMPORTER_API + std::shared_ptr + decode_to_framework_nodes(std::shared_ptr model_proto, + const std::string& model_path); + + std::shared_ptr convert_decoded_function(std::shared_ptr function); } // namespace detail } // namespace onnx_import } // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/core/attribute.cpp b/ngraph/frontend/onnx/onnx_import/src/core/attribute.cpp similarity index 77% rename from ngraph/frontend/onnx_import/src/core/attribute.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/attribute.cpp index 1fd61931de9629..204959b2fac9b1 100644 --- a/ngraph/frontend/onnx_import/src/core/attribute.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/core/attribute.cpp @@ -4,8 +4,8 @@ #include "core/attribute.hpp" #include "core/graph.hpp" -#include "core/model.hpp" #include "ngraph/log.hpp" +#include "onnx_import/core/model.hpp" namespace ngraph { @@ -18,15 +18,14 @@ namespace ngraph throw error::attribute::InvalidData{m_attribute_proto->type()}; } - auto model_proto = common::make_unique(); + auto model_proto = std::make_shared(); const auto& graph = m_attribute_proto->g(); model_proto->mutable_graph()->CopyFrom(graph); // set opset version and domain from the parent graph model_proto->mutable_opset_import()->CopyFrom(parent_graph.get_opset_imports()); - auto model = common::make_unique(std::move(model_proto)); - return Subgraph{std::move(model), parent_graph}; + return Subgraph{model_proto, parent_graph}; } } // namespace onnx_import diff --git a/ngraph/frontend/onnx_import/src/core/attribute.hpp b/ngraph/frontend/onnx/onnx_import/src/core/attribute.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/attribute.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/attribute.hpp diff --git a/ngraph/frontend/onnx_import/src/core/graph.cpp b/ngraph/frontend/onnx/onnx_import/src/core/graph.cpp similarity index 81% rename from ngraph/frontend/onnx_import/src/core/graph.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/graph.cpp index 569d3849774859..1b1bdcaf8e6953 100644 --- a/ngraph/frontend/onnx_import/src/core/graph.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/core/graph.cpp @@ -9,12 +9,14 @@ #include "core/graph.hpp" #include "core/null_node.hpp" +#include "core/value_info.hpp" +#include "default_opset.hpp" #include "exceptions.hpp" #include "ngraph/log.hpp" #include "ngraph/node.hpp" #include "ngraph/provenance.hpp" +#include "onnx_framework_node.hpp" #include "onnx_import/core/node.hpp" -#include "onnx_import/onnx_framework_node.hpp" #include "utils/common.hpp" #include "utils/provenance_tag.hpp" @@ -51,15 +53,62 @@ namespace ngraph std::string domain = get_node_domain(node_proto); return (domain.empty() ? "" : domain + ".") + node_proto.op_type(); } + + void add_provenance_tag_to_initializer(const Tensor& tensor, + std::shared_ptr node) + { + if (!ngraph::get_provenance_enabled()) + { + return; + } + + const std::string tag = + detail::build_input_provenance_tag(tensor.get_name(), tensor.get_shape()); + + node->add_provenance_tag(tag); + } + + void add_provenance_tag_to_input(const ValueInfo& input, + std::shared_ptr node) + { + if (!ngraph::get_provenance_enabled()) + { + return; + } + + const std::string tag = + detail::build_input_provenance_tag(input.get_name(), input.get_shape()); + + node->add_provenance_tag(tag); + } + + void add_provenance_tags(const Node& onnx_node, const OutputVector& ng_node_vector) + { + if (!ngraph::get_provenance_enabled()) + { + return; + } + + const auto tag = detail::build_op_provenance_tag(onnx_node); + const auto ng_inputs = onnx_node.get_ng_inputs(); + + ngraph::traverse_nodes( + as_node_vector(ng_node_vector), + [&tag](std::shared_ptr ng_node) { + ng_node->add_provenance_tag(tag); + }, + as_node_vector(ng_inputs)); + } } // namespace detail - Graph::Graph(std::unique_ptr&& model) - : Graph(std::move(model), common::make_unique()) + Graph::Graph(std::shared_ptr model_proto) + : Graph(model_proto, common::make_unique()) { } - Graph::Graph(std::unique_ptr&& model, std::unique_ptr&& cache) - : m_model{std::move(model)} + Graph::Graph(std::shared_ptr model_proto, + std::unique_ptr&& cache) + : m_model{common::make_unique(model_proto)} , m_cache{std::move(cache)} { std::map initializers; @@ -96,7 +145,7 @@ namespace ngraph } initializers.emplace(initializer_tensor.name(), tensor); - add_provenance_tag_to_initializer(tensor, ng_constant); + detail::add_provenance_tag_to_initializer(tensor, ng_constant); m_cache->emplace_node(initializer_tensor.name(), std::move(ng_constant)); } } @@ -104,26 +153,18 @@ namespace ngraph // Process all ONNX graph inputs, convert them to nGraph nodes and store in cache for (const auto& input : m_model->get_graph().input()) { - m_inputs.emplace_back(input); - // Check if a Constant node was already created from an initializer if (m_cache->contains(input.name())) { continue; } - const auto value_info = m_inputs.back(); + ValueInfo value_info{input}; auto ng_node = value_info.get_ng_node(m_parameters, initializers); - add_provenance_tag_to_input(value_info, ng_node); + detail::add_provenance_tag_to_input(value_info, ng_node); m_cache->emplace_node(input.name(), std::move(ng_node)); } - // Process all graph outputs - for (const auto& output : m_model->get_graph().output()) - { - m_outputs.emplace_back(output); - } - // Verify that ONNX graph contains only nodes of available operator types std::map> unknown_operators; @@ -163,19 +204,13 @@ namespace ngraph // Process ONNX graph nodes, convert to nGraph nodes for (const auto& node_proto : m_model->get_graph().node()) { - m_nodes.emplace_back(node_proto, *this); - const Node& node{m_nodes.back()}; + const Node node{node_proto, *this}; if (node.has_subgraph()) { auto subgraph = node.get_subgraph(); auto body_func = subgraph->convert(); } - OutputVector ng_nodes{node.get_ng_nodes()}; - set_friendly_names(node, ng_nodes); - for (std::size_t i{0}; i < node.get_outputs_size(); ++i) - { - m_cache->emplace_node(node.output(i), std::move(ng_nodes.at(i))); - } + OutputVector ng_nodes{make_ng_nodes(node)}; } } @@ -186,11 +221,14 @@ namespace ngraph if ((*param_it)->get_output_target_inputs(0).size() == 0) { const auto& name = (*param_it)->get_friendly_name(); - auto out_it = std::find_if( - m_outputs.begin(), m_outputs.end(), [&name](const ValueInfo& info) { - return info.get_name() == name; - }); - if (out_it == m_outputs.end()) + const auto& onnx_outputs = m_model->get_graph().output(); + auto out_it = + std::find_if(onnx_outputs.begin(), + onnx_outputs.end(), + [&name](const ONNX_NAMESPACE::ValueInfoProto& output) -> bool { + return output.name() == name; + }); + if (out_it == onnx_outputs.end()) { m_cache->remove_node(name); param_it = m_parameters.erase(param_it); @@ -213,8 +251,7 @@ namespace ngraph // Process ONNX graph nodes, convert to nGraph nodes for (const auto& node_proto : m_model->get_graph().node()) { - m_nodes.emplace_back(node_proto, *this); - const Node& node{m_nodes.back()}; + const Node node{node_proto, *this}; std::shared_ptr framework_node; if (node.has_subgraph()) { @@ -223,12 +260,13 @@ namespace ngraph auto inputs = node.get_ng_inputs(); for (const auto& input : subgraph->get_inputs_from_parent()) inputs.push_back(input); - framework_node = - std::make_shared(node, inputs); + framework_node = std::make_shared( + shared_from_this(), node, inputs); } else { - framework_node = std::make_shared(node); + framework_node = std::make_shared( + shared_from_this(), node); } OutputVector ng_nodes{framework_node->outputs()}; set_friendly_names(node, ng_nodes); @@ -245,9 +283,10 @@ namespace ngraph std::shared_ptr Graph::create_function() { auto function = std::make_shared(get_ng_outputs(), m_parameters, get_name()); + const auto& onnx_outputs = m_model->get_graph().output(); for (std::size_t i{0}; i < function->get_output_size(); ++i) { - function->get_output_op(i)->set_friendly_name(m_outputs.at(i).get_name()); + function->get_output_op(i)->set_friendly_name(onnx_outputs.Get(i).name()); } return function; } @@ -307,7 +346,7 @@ namespace ngraph std::rethrow_exception(std::current_exception()); } set_friendly_names(onnx_node, ng_node_vector); - add_provenance_tags(onnx_node, ng_node_vector); + detail::add_provenance_tags(onnx_node, ng_node_vector); for (std::size_t i{0}; i < onnx_node.get_outputs_size(); ++i) { @@ -340,58 +379,14 @@ namespace ngraph } } - void Graph::add_provenance_tag_to_initializer( - const Tensor& tensor, std::shared_ptr node) const - { - if (!ngraph::get_provenance_enabled()) - { - return; - } - - const std::string tag = - detail::build_input_provenance_tag(tensor.get_name(), tensor.get_shape()); - - node->add_provenance_tag(tag); - } - - void Graph::add_provenance_tag_to_input(const ValueInfo& input, - std::shared_ptr node) const - { - if (!ngraph::get_provenance_enabled()) - { - return; - } - - const std::string tag = - detail::build_input_provenance_tag(input.get_name(), input.get_shape()); - - node->add_provenance_tag(tag); - } - - void Graph::add_provenance_tags(const Node& onnx_node, - const OutputVector& ng_node_vector) const - { - if (!ngraph::get_provenance_enabled()) - { - return; - } - - const auto tag = detail::build_op_provenance_tag(onnx_node); - const auto ng_inputs = onnx_node.get_ng_inputs(); - - ngraph::traverse_nodes( - as_node_vector(ng_node_vector), - [&tag](std::shared_ptr ng_node) { ng_node->add_provenance_tag(tag); }, - as_node_vector(ng_inputs)); - } - const OpsetImports& Graph::get_opset_imports() const { return m_model->get_opset_imports(); } - Subgraph::Subgraph(std::unique_ptr&& model, const Graph& parent_graph) - : Graph(std::move(model), common::make_unique()) + Subgraph::Subgraph(std::shared_ptr model_proto, + const Graph& parent_graph) + : Graph(model_proto, common::make_unique()) , m_parent_graph_cache(&parent_graph.get_graph_cache()) { } diff --git a/ngraph/frontend/onnx_import/src/core/graph.hpp b/ngraph/frontend/onnx/onnx_import/src/core/graph.hpp similarity index 76% rename from ngraph/frontend/onnx_import/src/core/graph.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/graph.hpp index 33c2be5d4d20e8..fea67c3e146dc0 100644 --- a/ngraph/frontend/onnx_import/src/core/graph.hpp +++ b/ngraph/frontend/onnx/onnx_import/src/core/graph.hpp @@ -10,20 +10,18 @@ #include #include "core/graph_cache.hpp" -#include "core/model.hpp" -#include "core/value_info.hpp" -#include "default_opset.hpp" #include "ngraph/op/parameter.hpp" +#include "onnx_import/core/model.hpp" #include "onnx_import/core/operator_set.hpp" namespace ngraph { namespace onnx_import { - class Graph + class Graph : public std::enable_shared_from_this { public: - Graph(std::unique_ptr&& model); + Graph(std::shared_ptr model_proto); Graph() = delete; Graph(const Graph&) = delete; @@ -31,35 +29,24 @@ namespace ngraph Graph& operator=(const Graph&) = delete; Graph& operator=(Graph&&) = default; - virtual std::shared_ptr convert(); std::shared_ptr decode(); - const std::vector& get_nodes() const { return m_nodes; } - const std::vector& get_inputs() const { return m_inputs; } - const std::vector& get_outputs() const { return m_outputs; } + virtual std::shared_ptr convert(); OutputVector get_ng_outputs() const; + const std::string& get_name() const { return m_model->get_graph().name(); } + const GraphCache& get_graph_cache() const; const ParameterVector& get_ng_parameters() const { return m_parameters; } virtual Output get_ng_node_from_cache(const std::string& name) const; - const std::string& get_name() const { return m_model->get_graph().name(); } OutputVector make_ng_nodes(const Node& onnx_node) const; - const GraphCache& get_graph_cache() const; const OpsetImports& get_opset_imports() const; virtual ~Graph() = default; protected: - Graph(std::unique_ptr&& model, std::unique_ptr&& cache); + Graph(std::shared_ptr model, + std::unique_ptr&& cache); void set_friendly_names(const Node& onnx_node, const OutputVector& ng_node_vector) const; - void add_provenance_tag_to_initializer( - const Tensor& initializer, std::shared_ptr node) const; - - void add_provenance_tag_to_input(const ValueInfo& input, - std::shared_ptr node) const; - - void add_provenance_tags(const Node& onnx_node, - const OutputVector& ng_node_vector) const; - protected: virtual void decode_to_framework_nodes(); void convert_to_ngraph_nodes(); @@ -72,8 +59,6 @@ namespace ngraph private: std::vector m_nodes; - std::vector m_inputs; - std::vector m_outputs; }; /// \brief Representation of ONNX subgraph. It is used for example by ONNX Loop op. @@ -86,7 +71,7 @@ namespace ngraph /// /// \param[in] model The ONNX model object. /// \param[in] parent_graph The reference to the parent graph. - Subgraph(std::unique_ptr&& model, const Graph& parent_graph); + Subgraph(std::shared_ptr model, const Graph& parent_graph); /// \brief Return nodes which are on the edge the subgraph and the parent graph. /// \return Vector of edge nodes from parent scope. diff --git a/ngraph/frontend/onnx_import/src/core/graph_cache.cpp b/ngraph/frontend/onnx/onnx_import/src/core/graph_cache.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/graph_cache.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/graph_cache.cpp diff --git a/ngraph/frontend/onnx_import/src/core/graph_cache.hpp b/ngraph/frontend/onnx/onnx_import/src/core/graph_cache.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/graph_cache.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/graph_cache.hpp diff --git a/ngraph/frontend/onnx_import/src/core/model.cpp b/ngraph/frontend/onnx/onnx_import/src/core/model.cpp similarity index 94% rename from ngraph/frontend/onnx_import/src/core/model.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/model.cpp index 2ddd3edac02e7a..c7c0993eda1ccd 100644 --- a/ngraph/frontend/onnx_import/src/core/model.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/core/model.cpp @@ -4,9 +4,9 @@ #include -#include "core/model.hpp" #include "ngraph/log.hpp" -#include "onnx_import/onnx_framework_node.hpp" +#include "onnx_framework_node.hpp" +#include "onnx_import/core/model.hpp" #include "ops_bridge.hpp" namespace ngraph @@ -32,8 +32,8 @@ namespace ngraph throw ngraph_error("Couldn't find operator set's version for domain: " + domain + "."); } - Model::Model(std::unique_ptr&& model_proto) - : m_model_proto{std::move(model_proto)} + Model::Model(std::shared_ptr model_proto) + : m_model_proto{model_proto} { // Walk through the elements of opset_import field and register operator sets // for each domain. An exception UnknownDomain() will raise if the domain is diff --git a/ngraph/frontend/onnx_import/src/core/node.cpp b/ngraph/frontend/onnx/onnx_import/src/core/node.cpp similarity index 98% rename from ngraph/frontend/onnx_import/src/core/node.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/node.cpp index b6f2797263b384..fbdcd8d216407f 100644 --- a/ngraph/frontend/onnx_import/src/core/node.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/core/node.cpp @@ -53,7 +53,6 @@ namespace ngraph } const std::vector& attributes() const; - OutputVector get_ng_nodes(const Node& node) const; OutputVector get_ng_inputs() const; const std::string& domain() const; @@ -172,11 +171,6 @@ namespace ngraph return get_subgraph_from_attribute(name); } - OutputVector Node::Impl::get_ng_nodes(const Node& node) const - { - return m_graph->make_ng_nodes(node); - } - OutputVector Node::Impl::get_ng_inputs() const { OutputVector result; @@ -232,7 +226,6 @@ namespace ngraph } OutputVector Node::get_ng_inputs() const { return m_pimpl->get_ng_inputs(); } - OutputVector Node::get_ng_nodes() const { return m_pimpl->get_ng_nodes(*this); } const std::string& Node::domain() const { return m_pimpl->domain(); } const std::string& Node::op_type() const { return m_pimpl->op_type(); } const std::string& Node::get_description() const { return m_pimpl->description(); } diff --git a/ngraph/frontend/onnx_import/src/core/null_node.cpp b/ngraph/frontend/onnx/onnx_import/src/core/null_node.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/null_node.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/null_node.cpp diff --git a/ngraph/frontend/onnx_import/src/core/null_node.hpp b/ngraph/frontend/onnx/onnx_import/src/core/null_node.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/null_node.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/null_node.hpp diff --git a/ngraph/frontend/onnx_import/src/core/sparse_tensor.hpp b/ngraph/frontend/onnx/onnx_import/src/core/sparse_tensor.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/sparse_tensor.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/sparse_tensor.hpp diff --git a/ngraph/frontend/onnx_import/src/core/tensor.hpp b/ngraph/frontend/onnx/onnx_import/src/core/tensor.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/tensor.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/tensor.hpp diff --git a/ngraph/frontend/onnx_import/src/core/transform.cpp b/ngraph/frontend/onnx/onnx_import/src/core/transform.cpp similarity index 99% rename from ngraph/frontend/onnx_import/src/core/transform.cpp rename to ngraph/frontend/onnx/onnx_import/src/core/transform.cpp index 119a602ef30bd4..30ce7d78b83503 100644 --- a/ngraph/frontend/onnx_import/src/core/transform.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/core/transform.cpp @@ -5,8 +5,8 @@ #include #include -#include "core/model.hpp" #include "core/transform.hpp" +#include "onnx_import/core/model.hpp" #include "ngraph/file_util.hpp" #include "ops_bridge.hpp" diff --git a/ngraph/frontend/onnx_import/src/core/transform.hpp b/ngraph/frontend/onnx/onnx_import/src/core/transform.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/transform.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/transform.hpp diff --git a/ngraph/frontend/onnx_import/src/core/value_info.hpp b/ngraph/frontend/onnx/onnx_import/src/core/value_info.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/core/value_info.hpp rename to ngraph/frontend/onnx/onnx_import/src/core/value_info.hpp diff --git a/ngraph/frontend/onnx_import/src/default_opset.hpp b/ngraph/frontend/onnx/onnx_import/src/default_opset.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/default_opset.hpp rename to ngraph/frontend/onnx/onnx_import/src/default_opset.hpp diff --git a/ngraph/frontend/onnx_import/src/exceptions.cpp b/ngraph/frontend/onnx/onnx_import/src/exceptions.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/exceptions.cpp rename to ngraph/frontend/onnx/onnx_import/src/exceptions.cpp diff --git a/ngraph/frontend/onnx_import/src/exceptions.hpp b/ngraph/frontend/onnx/onnx_import/src/exceptions.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/exceptions.hpp rename to ngraph/frontend/onnx/onnx_import/src/exceptions.hpp diff --git a/ngraph/frontend/onnx_import/src/onnx.cpp b/ngraph/frontend/onnx/onnx_import/src/onnx.cpp similarity index 86% rename from ngraph/frontend/onnx_import/src/onnx.cpp rename to ngraph/frontend/onnx/onnx_import/src/onnx.cpp index 09f6623611d4eb..39beac60108b06 100644 --- a/ngraph/frontend/onnx_import/src/onnx.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/onnx.cpp @@ -19,8 +19,8 @@ namespace ngraph std::shared_ptr import_onnx_model(std::istream& stream, const std::string& model_path) { - ONNX_NAMESPACE::ModelProto model_proto{onnx_common::parse_from_istream(stream)}; - + auto model_proto = std::make_shared( + onnx_common::parse_from_istream(stream)); return detail::import_onnx_model(model_proto, model_path); } @@ -58,6 +58,11 @@ namespace ngraph op_name, version, domain == "ai.onnx" ? "" : domain); } + std::shared_ptr convert_decoded_function(std::shared_ptr function) + { + return detail::convert_decoded_function(function); + } + } // namespace onnx_import } // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/onnx_framework_node.cpp b/ngraph/frontend/onnx/onnx_import/src/onnx_framework_node.cpp similarity index 90% rename from ngraph/frontend/onnx_import/src/onnx_framework_node.cpp rename to ngraph/frontend/onnx/onnx_import/src/onnx_framework_node.cpp index bf52a1a2c0b8a0..c9432d84bfc82b 100644 --- a/ngraph/frontend/onnx_import/src/onnx_framework_node.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/onnx_framework_node.cpp @@ -14,7 +14,7 @@ // limitations under the License. //***************************************************************************** -#include +#include namespace ngraph { @@ -25,7 +25,7 @@ namespace ngraph std::shared_ptr ONNXFrameworkNode::clone_with_new_inputs(const OutputVector& inputs) const { - return std::make_shared(m_node, inputs); + return std::make_shared(m_graph, m_node, inputs); } NGRAPH_RTTI_DEFINITION(ONNXSubgraphFrameworkNode, "ONNXSubgraphFrameworkNode", 1); diff --git a/ngraph/frontend/onnx_import/include/onnx_import/onnx_framework_node.hpp b/ngraph/frontend/onnx/onnx_import/src/onnx_framework_node.hpp similarity index 68% rename from ngraph/frontend/onnx_import/include/onnx_import/onnx_framework_node.hpp rename to ngraph/frontend/onnx/onnx_import/src/onnx_framework_node.hpp index bfa902a5ac449c..7a5269e65986f2 100644 --- a/ngraph/frontend/onnx_import/include/onnx_import/onnx_framework_node.hpp +++ b/ngraph/frontend/onnx/onnx_import/src/onnx_framework_node.hpp @@ -17,6 +17,8 @@ #pragma once #include +#include +#include #include #include #include @@ -41,19 +43,32 @@ namespace ngraph public: NGRAPH_RTTI_DECLARATION; - ONNXFrameworkNode(const onnx_import::Node& node) + ONNXFrameworkNode(std::shared_ptr graph, + const onnx_import::Node& node) : FrameworkNode(node.get_ng_inputs(), node.get_outputs_size()) , m_node(node) + , m_graph(graph) { } - ONNXFrameworkNode(const onnx_import::Node& node, const OutputVector& inputs) + ONNXFrameworkNode(std::shared_ptr graph, + const onnx_import::Node& node, + const OutputVector& inputs) : FrameworkNode(inputs, node.get_outputs_size()) , m_node(node) + , m_graph(graph) { } - const onnx_import::Node& get_onnx_node() const { return m_node; } + OutputVector get_ng_nodes() const + { + OutputVector ng_nodes{m_graph->make_ng_nodes(m_node)}; + if (ng_nodes.size() > get_output_size()) + { + ng_nodes.resize(get_output_size()); + } + return ng_nodes; + } virtual std::shared_ptr clone_with_new_inputs(const OutputVector& inputs) const override; @@ -68,8 +83,11 @@ namespace ngraph return true; } - private: + protected: onnx_import::Node m_node; + + private: + std::shared_ptr m_graph; }; class ONNXSubgraphFrameworkNode : public ONNXFrameworkNode @@ -77,19 +95,18 @@ namespace ngraph public: NGRAPH_RTTI_DECLARATION; - ONNXSubgraphFrameworkNode(const onnx_import::Node& node, const OutputVector& inputs) - : ONNXFrameworkNode(node, inputs) + ONNXSubgraphFrameworkNode(std::shared_ptr graph, + const onnx_import::Node& node, + const OutputVector& inputs) + : ONNXFrameworkNode(graph, node, inputs) { } - void infer_inputs_from_parent() - { - get_onnx_node().get_subgraph()->infer_inputs_from_parent(); - } + void infer_inputs_from_parent() { m_node.get_subgraph()->infer_inputs_from_parent(); } std::shared_ptr get_subgraph_body() const { - auto subgraph = get_onnx_node().get_subgraph(); + auto subgraph = m_node.get_subgraph(); return std::make_shared(subgraph->get_ng_outputs(), subgraph->get_ng_parameters(), subgraph->get_name()); diff --git a/ngraph/frontend/onnx_import/src/onnx_utils.cpp b/ngraph/frontend/onnx/onnx_import/src/onnx_utils.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/onnx_utils.cpp rename to ngraph/frontend/onnx/onnx_import/src/onnx_utils.cpp diff --git a/ngraph/frontend/onnx_import/src/op/abs.hpp b/ngraph/frontend/onnx/onnx_import/src/op/abs.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/abs.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/abs.hpp diff --git a/ngraph/frontend/onnx_import/src/op/acos.hpp b/ngraph/frontend/onnx/onnx_import/src/op/acos.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/acos.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/acos.hpp diff --git a/ngraph/frontend/onnx_import/src/op/acosh.hpp b/ngraph/frontend/onnx/onnx_import/src/op/acosh.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/acosh.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/acosh.hpp diff --git a/ngraph/frontend/onnx_import/src/op/add.cpp b/ngraph/frontend/onnx/onnx_import/src/op/add.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/add.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/add.cpp diff --git a/ngraph/frontend/onnx_import/src/op/add.hpp b/ngraph/frontend/onnx/onnx_import/src/op/add.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/add.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/add.hpp diff --git a/ngraph/frontend/onnx_import/src/op/and.hpp b/ngraph/frontend/onnx/onnx_import/src/op/and.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/and.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/and.hpp diff --git a/ngraph/frontend/onnx_import/src/op/argmax.cpp b/ngraph/frontend/onnx/onnx_import/src/op/argmax.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/argmax.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/argmax.cpp diff --git a/ngraph/frontend/onnx_import/src/op/argmax.hpp b/ngraph/frontend/onnx/onnx_import/src/op/argmax.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/argmax.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/argmax.hpp diff --git a/ngraph/frontend/onnx_import/src/op/argmin.cpp b/ngraph/frontend/onnx/onnx_import/src/op/argmin.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/argmin.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/argmin.cpp diff --git a/ngraph/frontend/onnx_import/src/op/argmin.hpp b/ngraph/frontend/onnx/onnx_import/src/op/argmin.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/argmin.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/argmin.hpp diff --git a/ngraph/frontend/onnx_import/src/op/asin.hpp b/ngraph/frontend/onnx/onnx_import/src/op/asin.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/asin.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/asin.hpp diff --git a/ngraph/frontend/onnx_import/src/op/asinh.hpp b/ngraph/frontend/onnx/onnx_import/src/op/asinh.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/asinh.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/asinh.hpp diff --git a/ngraph/frontend/onnx_import/src/op/atan.hpp b/ngraph/frontend/onnx/onnx_import/src/op/atan.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/atan.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/atan.hpp diff --git a/ngraph/frontend/onnx_import/src/op/atanh.hpp b/ngraph/frontend/onnx/onnx_import/src/op/atanh.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/atanh.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/atanh.hpp diff --git a/ngraph/frontend/onnx_import/src/op/average_pool.cpp b/ngraph/frontend/onnx/onnx_import/src/op/average_pool.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/average_pool.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/average_pool.cpp diff --git a/ngraph/frontend/onnx_import/src/op/average_pool.hpp b/ngraph/frontend/onnx/onnx_import/src/op/average_pool.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/average_pool.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/average_pool.hpp diff --git a/ngraph/frontend/onnx_import/src/op/batch_norm.cpp b/ngraph/frontend/onnx/onnx_import/src/op/batch_norm.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/batch_norm.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/batch_norm.cpp diff --git a/ngraph/frontend/onnx_import/src/op/batch_norm.hpp b/ngraph/frontend/onnx/onnx_import/src/op/batch_norm.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/batch_norm.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/batch_norm.hpp diff --git a/ngraph/frontend/onnx_import/src/op/bitshift.cpp b/ngraph/frontend/onnx/onnx_import/src/op/bitshift.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/bitshift.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/bitshift.cpp diff --git a/ngraph/frontend/onnx_import/src/op/bitshift.hpp b/ngraph/frontend/onnx/onnx_import/src/op/bitshift.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/bitshift.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/bitshift.hpp diff --git a/ngraph/frontend/onnx_import/src/op/cast.cpp b/ngraph/frontend/onnx/onnx_import/src/op/cast.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cast.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/cast.cpp diff --git a/ngraph/frontend/onnx_import/src/op/cast.hpp b/ngraph/frontend/onnx/onnx_import/src/op/cast.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cast.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/cast.hpp diff --git a/ngraph/frontend/onnx_import/src/op/ceil.hpp b/ngraph/frontend/onnx/onnx_import/src/op/ceil.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/ceil.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/ceil.hpp diff --git a/ngraph/frontend/onnx_import/src/op/clip.cpp b/ngraph/frontend/onnx/onnx_import/src/op/clip.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/clip.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/clip.cpp diff --git a/ngraph/frontend/onnx_import/src/op/clip.hpp b/ngraph/frontend/onnx/onnx_import/src/op/clip.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/clip.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/clip.hpp diff --git a/ngraph/frontend/onnx_import/src/op/compress.cpp b/ngraph/frontend/onnx/onnx_import/src/op/compress.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/compress.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/compress.cpp diff --git a/ngraph/frontend/onnx_import/src/op/compress.hpp b/ngraph/frontend/onnx/onnx_import/src/op/compress.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/compress.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/compress.hpp diff --git a/ngraph/frontend/onnx_import/src/op/concat.cpp b/ngraph/frontend/onnx/onnx_import/src/op/concat.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/concat.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/concat.cpp diff --git a/ngraph/frontend/onnx_import/src/op/concat.hpp b/ngraph/frontend/onnx/onnx_import/src/op/concat.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/concat.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/concat.hpp diff --git a/ngraph/frontend/onnx_import/src/op/constant.cpp b/ngraph/frontend/onnx/onnx_import/src/op/constant.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/constant.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/constant.cpp diff --git a/ngraph/frontend/onnx_import/src/op/constant.hpp b/ngraph/frontend/onnx/onnx_import/src/op/constant.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/constant.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/constant.hpp diff --git a/ngraph/frontend/onnx_import/src/op/constant_fill.cpp b/ngraph/frontend/onnx/onnx_import/src/op/constant_fill.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/constant_fill.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/constant_fill.cpp diff --git a/ngraph/frontend/onnx_import/src/op/constant_fill.hpp b/ngraph/frontend/onnx/onnx_import/src/op/constant_fill.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/constant_fill.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/constant_fill.hpp diff --git a/ngraph/frontend/onnx_import/src/op/constant_of_shape.cpp b/ngraph/frontend/onnx/onnx_import/src/op/constant_of_shape.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/constant_of_shape.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/constant_of_shape.cpp diff --git a/ngraph/frontend/onnx_import/src/op/constant_of_shape.hpp b/ngraph/frontend/onnx/onnx_import/src/op/constant_of_shape.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/constant_of_shape.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/constant_of_shape.hpp diff --git a/ngraph/frontend/onnx_import/src/op/conv.cpp b/ngraph/frontend/onnx/onnx_import/src/op/conv.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/conv.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/conv.cpp diff --git a/ngraph/frontend/onnx_import/src/op/conv.hpp b/ngraph/frontend/onnx/onnx_import/src/op/conv.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/conv.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/conv.hpp diff --git a/ngraph/frontend/onnx_import/src/op/conv_integer.cpp b/ngraph/frontend/onnx/onnx_import/src/op/conv_integer.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/conv_integer.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/conv_integer.cpp diff --git a/ngraph/frontend/onnx_import/src/op/conv_integer.hpp b/ngraph/frontend/onnx/onnx_import/src/op/conv_integer.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/conv_integer.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/conv_integer.hpp diff --git a/ngraph/frontend/onnx_import/src/op/conv_transpose.cpp b/ngraph/frontend/onnx/onnx_import/src/op/conv_transpose.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/conv_transpose.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/conv_transpose.cpp diff --git a/ngraph/frontend/onnx_import/src/op/conv_transpose.hpp b/ngraph/frontend/onnx/onnx_import/src/op/conv_transpose.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/conv_transpose.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/conv_transpose.hpp diff --git a/ngraph/frontend/onnx_import/src/op/cos.cpp b/ngraph/frontend/onnx/onnx_import/src/op/cos.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cos.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/cos.cpp diff --git a/ngraph/frontend/onnx_import/src/op/cos.hpp b/ngraph/frontend/onnx/onnx_import/src/op/cos.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cos.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/cos.hpp diff --git a/ngraph/frontend/onnx_import/src/op/cosh.cpp b/ngraph/frontend/onnx/onnx_import/src/op/cosh.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cosh.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/cosh.cpp diff --git a/ngraph/frontend/onnx_import/src/op/cosh.hpp b/ngraph/frontend/onnx/onnx_import/src/op/cosh.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cosh.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/cosh.hpp diff --git a/ngraph/frontend/onnx_import/src/op/cum_sum.cpp b/ngraph/frontend/onnx/onnx_import/src/op/cum_sum.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cum_sum.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/cum_sum.cpp diff --git a/ngraph/frontend/onnx_import/src/op/cum_sum.hpp b/ngraph/frontend/onnx/onnx_import/src/op/cum_sum.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/cum_sum.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/cum_sum.hpp diff --git a/ngraph/frontend/onnx_import/src/op/depth_to_space.cpp b/ngraph/frontend/onnx/onnx_import/src/op/depth_to_space.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/depth_to_space.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/depth_to_space.cpp diff --git a/ngraph/frontend/onnx_import/src/op/depth_to_space.hpp b/ngraph/frontend/onnx/onnx_import/src/op/depth_to_space.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/depth_to_space.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/depth_to_space.hpp diff --git a/ngraph/frontend/onnx_import/src/op/dequantize_linear.cpp b/ngraph/frontend/onnx/onnx_import/src/op/dequantize_linear.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/dequantize_linear.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/dequantize_linear.cpp diff --git a/ngraph/frontend/onnx_import/src/op/dequantize_linear.hpp b/ngraph/frontend/onnx/onnx_import/src/op/dequantize_linear.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/dequantize_linear.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/dequantize_linear.hpp diff --git a/ngraph/frontend/onnx_import/src/op/div.hpp b/ngraph/frontend/onnx/onnx_import/src/op/div.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/div.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/div.hpp diff --git a/ngraph/frontend/onnx_import/src/op/dropout.cpp b/ngraph/frontend/onnx/onnx_import/src/op/dropout.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/dropout.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/dropout.cpp diff --git a/ngraph/frontend/onnx_import/src/op/dropout.hpp b/ngraph/frontend/onnx/onnx_import/src/op/dropout.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/dropout.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/dropout.hpp diff --git a/ngraph/frontend/onnx_import/src/op/einsum.cpp b/ngraph/frontend/onnx/onnx_import/src/op/einsum.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/einsum.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/einsum.cpp diff --git a/ngraph/frontend/onnx_import/src/op/einsum.hpp b/ngraph/frontend/onnx/onnx_import/src/op/einsum.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/einsum.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/einsum.hpp diff --git a/ngraph/frontend/onnx_import/src/op/elu.cpp b/ngraph/frontend/onnx/onnx_import/src/op/elu.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/elu.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/elu.cpp diff --git a/ngraph/frontend/onnx_import/src/op/elu.hpp b/ngraph/frontend/onnx/onnx_import/src/op/elu.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/elu.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/elu.hpp diff --git a/ngraph/frontend/onnx_import/src/op/equal.hpp b/ngraph/frontend/onnx/onnx_import/src/op/equal.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/equal.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/equal.hpp diff --git a/ngraph/frontend/onnx_import/src/op/erf.hpp b/ngraph/frontend/onnx/onnx_import/src/op/erf.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/erf.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/erf.hpp diff --git a/ngraph/frontend/onnx_import/src/op/exp.hpp b/ngraph/frontend/onnx/onnx_import/src/op/exp.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/exp.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/exp.hpp diff --git a/ngraph/frontend/onnx_import/src/op/expand.cpp b/ngraph/frontend/onnx/onnx_import/src/op/expand.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/expand.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/expand.cpp diff --git a/ngraph/frontend/onnx_import/src/op/expand.hpp b/ngraph/frontend/onnx/onnx_import/src/op/expand.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/expand.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/expand.hpp diff --git a/ngraph/frontend/onnx_import/src/op/eye_like.cpp b/ngraph/frontend/onnx/onnx_import/src/op/eye_like.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/eye_like.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/eye_like.cpp diff --git a/ngraph/frontend/onnx_import/src/op/eye_like.hpp b/ngraph/frontend/onnx/onnx_import/src/op/eye_like.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/eye_like.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/eye_like.hpp diff --git a/ngraph/frontend/onnx_import/src/op/flatten.cpp b/ngraph/frontend/onnx/onnx_import/src/op/flatten.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/flatten.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/flatten.cpp diff --git a/ngraph/frontend/onnx_import/src/op/flatten.hpp b/ngraph/frontend/onnx/onnx_import/src/op/flatten.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/flatten.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/flatten.hpp diff --git a/ngraph/frontend/onnx_import/src/op/floor.hpp b/ngraph/frontend/onnx/onnx_import/src/op/floor.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/floor.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/floor.hpp diff --git a/ngraph/frontend/onnx_import/src/op/gather.hpp b/ngraph/frontend/onnx/onnx_import/src/op/gather.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gather.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/gather.hpp diff --git a/ngraph/frontend/onnx_import/src/op/gather_elements.hpp b/ngraph/frontend/onnx/onnx_import/src/op/gather_elements.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gather_elements.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/gather_elements.hpp diff --git a/ngraph/frontend/onnx_import/src/op/gather_nd.cpp b/ngraph/frontend/onnx/onnx_import/src/op/gather_nd.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gather_nd.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/gather_nd.cpp diff --git a/ngraph/frontend/onnx_import/src/op/gather_nd.hpp b/ngraph/frontend/onnx/onnx_import/src/op/gather_nd.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gather_nd.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/gather_nd.hpp diff --git a/ngraph/frontend/onnx_import/src/op/gemm.cpp b/ngraph/frontend/onnx/onnx_import/src/op/gemm.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gemm.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/gemm.cpp diff --git a/ngraph/frontend/onnx_import/src/op/gemm.hpp b/ngraph/frontend/onnx/onnx_import/src/op/gemm.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gemm.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/gemm.hpp diff --git a/ngraph/frontend/onnx_import/src/op/global_average_pool.cpp b/ngraph/frontend/onnx/onnx_import/src/op/global_average_pool.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/global_average_pool.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/global_average_pool.cpp diff --git a/ngraph/frontend/onnx_import/src/op/global_average_pool.hpp b/ngraph/frontend/onnx/onnx_import/src/op/global_average_pool.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/global_average_pool.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/global_average_pool.hpp diff --git a/ngraph/frontend/onnx_import/src/op/global_max_pool.cpp b/ngraph/frontend/onnx/onnx_import/src/op/global_max_pool.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/global_max_pool.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/global_max_pool.cpp diff --git a/ngraph/frontend/onnx_import/src/op/global_max_pool.hpp b/ngraph/frontend/onnx/onnx_import/src/op/global_max_pool.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/global_max_pool.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/global_max_pool.hpp diff --git a/ngraph/frontend/onnx_import/src/op/greater.hpp b/ngraph/frontend/onnx/onnx_import/src/op/greater.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/greater.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/greater.hpp diff --git a/ngraph/frontend/onnx_import/src/op/gru.cpp b/ngraph/frontend/onnx/onnx_import/src/op/gru.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gru.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/gru.cpp diff --git a/ngraph/frontend/onnx_import/src/op/gru.hpp b/ngraph/frontend/onnx/onnx_import/src/op/gru.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/gru.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/gru.hpp diff --git a/ngraph/frontend/onnx_import/src/op/hard_sigmoid.cpp b/ngraph/frontend/onnx/onnx_import/src/op/hard_sigmoid.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/hard_sigmoid.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/hard_sigmoid.cpp diff --git a/ngraph/frontend/onnx_import/src/op/hard_sigmoid.hpp b/ngraph/frontend/onnx/onnx_import/src/op/hard_sigmoid.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/hard_sigmoid.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/hard_sigmoid.hpp diff --git a/ngraph/frontend/onnx_import/src/op/hardmax.cpp b/ngraph/frontend/onnx/onnx_import/src/op/hardmax.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/hardmax.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/hardmax.cpp diff --git a/ngraph/frontend/onnx_import/src/op/hardmax.hpp b/ngraph/frontend/onnx/onnx_import/src/op/hardmax.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/hardmax.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/hardmax.hpp diff --git a/ngraph/frontend/onnx_import/src/op/identity.hpp b/ngraph/frontend/onnx/onnx_import/src/op/identity.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/identity.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/identity.hpp diff --git a/ngraph/frontend/onnx_import/src/op/image_scaler.cpp b/ngraph/frontend/onnx/onnx_import/src/op/image_scaler.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/image_scaler.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/image_scaler.cpp diff --git a/ngraph/frontend/onnx_import/src/op/image_scaler.hpp b/ngraph/frontend/onnx/onnx_import/src/op/image_scaler.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/image_scaler.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/image_scaler.hpp diff --git a/ngraph/frontend/onnx_import/src/op/instance_norm.cpp b/ngraph/frontend/onnx/onnx_import/src/op/instance_norm.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/instance_norm.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/instance_norm.cpp diff --git a/ngraph/frontend/onnx_import/src/op/instance_norm.hpp b/ngraph/frontend/onnx/onnx_import/src/op/instance_norm.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/instance_norm.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/instance_norm.hpp diff --git a/ngraph/frontend/onnx_import/src/op/leaky_relu.cpp b/ngraph/frontend/onnx/onnx_import/src/op/leaky_relu.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/leaky_relu.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/leaky_relu.cpp diff --git a/ngraph/frontend/onnx_import/src/op/leaky_relu.hpp b/ngraph/frontend/onnx/onnx_import/src/op/leaky_relu.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/leaky_relu.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/leaky_relu.hpp diff --git a/ngraph/frontend/onnx_import/src/op/less.hpp b/ngraph/frontend/onnx/onnx_import/src/op/less.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/less.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/less.hpp diff --git a/ngraph/frontend/onnx_import/src/op/log.cpp b/ngraph/frontend/onnx/onnx_import/src/op/log.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/log.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/log.cpp diff --git a/ngraph/frontend/onnx_import/src/op/log.hpp b/ngraph/frontend/onnx/onnx_import/src/op/log.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/log.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/log.hpp diff --git a/ngraph/frontend/onnx_import/src/op/log_softmax.cpp b/ngraph/frontend/onnx/onnx_import/src/op/log_softmax.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/log_softmax.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/log_softmax.cpp diff --git a/ngraph/frontend/onnx_import/src/op/log_softmax.hpp b/ngraph/frontend/onnx/onnx_import/src/op/log_softmax.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/log_softmax.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/log_softmax.hpp diff --git a/ngraph/frontend/onnx_import/src/op/loop.cpp b/ngraph/frontend/onnx/onnx_import/src/op/loop.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/loop.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/loop.cpp diff --git a/ngraph/frontend/onnx_import/src/op/loop.hpp b/ngraph/frontend/onnx/onnx_import/src/op/loop.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/loop.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/loop.hpp diff --git a/ngraph/frontend/onnx_import/src/op/lp_norm.cpp b/ngraph/frontend/onnx/onnx_import/src/op/lp_norm.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lp_norm.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/lp_norm.cpp diff --git a/ngraph/frontend/onnx_import/src/op/lp_norm.hpp b/ngraph/frontend/onnx/onnx_import/src/op/lp_norm.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lp_norm.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/lp_norm.hpp diff --git a/ngraph/frontend/onnx_import/src/op/lp_pool.cpp b/ngraph/frontend/onnx/onnx_import/src/op/lp_pool.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lp_pool.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/lp_pool.cpp diff --git a/ngraph/frontend/onnx_import/src/op/lp_pool.hpp b/ngraph/frontend/onnx/onnx_import/src/op/lp_pool.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lp_pool.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/lp_pool.hpp diff --git a/ngraph/frontend/onnx_import/src/op/lrn.cpp b/ngraph/frontend/onnx/onnx_import/src/op/lrn.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lrn.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/lrn.cpp diff --git a/ngraph/frontend/onnx_import/src/op/lrn.hpp b/ngraph/frontend/onnx/onnx_import/src/op/lrn.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lrn.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/lrn.hpp diff --git a/ngraph/frontend/onnx_import/src/op/lstm.cpp b/ngraph/frontend/onnx/onnx_import/src/op/lstm.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lstm.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/lstm.cpp diff --git a/ngraph/frontend/onnx_import/src/op/lstm.hpp b/ngraph/frontend/onnx/onnx_import/src/op/lstm.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/lstm.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/lstm.hpp diff --git a/ngraph/frontend/onnx_import/src/op/matmul.hpp b/ngraph/frontend/onnx/onnx_import/src/op/matmul.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/matmul.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/matmul.hpp diff --git a/ngraph/frontend/onnx_import/src/op/max.hpp b/ngraph/frontend/onnx/onnx_import/src/op/max.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/max.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/max.hpp diff --git a/ngraph/frontend/onnx_import/src/op/max_pool.cpp b/ngraph/frontend/onnx/onnx_import/src/op/max_pool.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/max_pool.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/max_pool.cpp diff --git a/ngraph/frontend/onnx_import/src/op/max_pool.hpp b/ngraph/frontend/onnx/onnx_import/src/op/max_pool.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/max_pool.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/max_pool.hpp diff --git a/ngraph/frontend/onnx_import/src/op/mean.cpp b/ngraph/frontend/onnx/onnx_import/src/op/mean.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mean.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/mean.cpp diff --git a/ngraph/frontend/onnx_import/src/op/mean.hpp b/ngraph/frontend/onnx/onnx_import/src/op/mean.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mean.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/mean.hpp diff --git a/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.cpp b/ngraph/frontend/onnx/onnx_import/src/op/mean_variance_normalization.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mean_variance_normalization.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/mean_variance_normalization.cpp diff --git a/ngraph/frontend/onnx_import/src/op/mean_variance_normalization.hpp b/ngraph/frontend/onnx/onnx_import/src/op/mean_variance_normalization.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mean_variance_normalization.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/mean_variance_normalization.hpp diff --git a/ngraph/frontend/onnx_import/src/op/min.hpp b/ngraph/frontend/onnx/onnx_import/src/op/min.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/min.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/min.hpp diff --git a/ngraph/frontend/onnx_import/src/op/mod.cpp b/ngraph/frontend/onnx/onnx_import/src/op/mod.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mod.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/mod.cpp diff --git a/ngraph/frontend/onnx_import/src/op/mod.hpp b/ngraph/frontend/onnx/onnx_import/src/op/mod.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mod.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/mod.hpp diff --git a/ngraph/frontend/onnx_import/src/op/mul.hpp b/ngraph/frontend/onnx/onnx_import/src/op/mul.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/mul.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/mul.hpp diff --git a/ngraph/frontend/onnx_import/src/op/neg.hpp b/ngraph/frontend/onnx/onnx_import/src/op/neg.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/neg.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/neg.hpp diff --git a/ngraph/frontend/onnx_import/src/op/non_max_suppression.cpp b/ngraph/frontend/onnx/onnx_import/src/op/non_max_suppression.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/non_max_suppression.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/non_max_suppression.cpp diff --git a/ngraph/frontend/onnx_import/src/op/non_max_suppression.hpp b/ngraph/frontend/onnx/onnx_import/src/op/non_max_suppression.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/non_max_suppression.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/non_max_suppression.hpp diff --git a/ngraph/frontend/onnx_import/src/op/non_zero.cpp b/ngraph/frontend/onnx/onnx_import/src/op/non_zero.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/non_zero.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/non_zero.cpp diff --git a/ngraph/frontend/onnx_import/src/op/non_zero.hpp b/ngraph/frontend/onnx/onnx_import/src/op/non_zero.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/non_zero.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/non_zero.hpp diff --git a/ngraph/frontend/onnx_import/src/op/not.hpp b/ngraph/frontend/onnx/onnx_import/src/op/not.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/not.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/not.hpp diff --git a/ngraph/frontend/onnx_import/src/op/onehot.cpp b/ngraph/frontend/onnx/onnx_import/src/op/onehot.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/onehot.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/onehot.cpp diff --git a/ngraph/frontend/onnx_import/src/op/onehot.hpp b/ngraph/frontend/onnx/onnx_import/src/op/onehot.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/onehot.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/onehot.hpp diff --git a/ngraph/frontend/onnx_import/src/op/or.hpp b/ngraph/frontend/onnx/onnx_import/src/op/or.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/or.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/or.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/deformable_conv_2d.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/detection_output.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/detection_output.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/detection_output.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/generate_proposals_single_image.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/prior_grid_generator.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/roi_feature_extractor.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/experimental_detectron/topk_rios.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/fake_quantize.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/fake_quantize.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/group_norm.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/group_norm.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/normalize.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/normalize.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/normalize.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/normalize.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/normalize.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/prior_box.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/prior_box.hpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.cpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/swish.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/swish.cpp diff --git a/ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.hpp b/ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/swish.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/org.openvinotoolkit/swish.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/org.openvinotoolkit/swish.hpp diff --git a/ngraph/frontend/onnx_import/src/op/pad.cpp b/ngraph/frontend/onnx/onnx_import/src/op/pad.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/pad.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/pad.cpp diff --git a/ngraph/frontend/onnx_import/src/op/pad.hpp b/ngraph/frontend/onnx/onnx_import/src/op/pad.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/pad.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/pad.hpp diff --git a/ngraph/frontend/onnx_import/src/op/pow.cpp b/ngraph/frontend/onnx/onnx_import/src/op/pow.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/pow.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/pow.cpp diff --git a/ngraph/frontend/onnx_import/src/op/pow.hpp b/ngraph/frontend/onnx/onnx_import/src/op/pow.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/pow.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/pow.hpp diff --git a/ngraph/frontend/onnx_import/src/op/prelu.cpp b/ngraph/frontend/onnx/onnx_import/src/op/prelu.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/prelu.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/prelu.cpp diff --git a/ngraph/frontend/onnx_import/src/op/prelu.hpp b/ngraph/frontend/onnx/onnx_import/src/op/prelu.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/prelu.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/prelu.hpp diff --git a/ngraph/frontend/onnx_import/src/op/quant_conv.cpp b/ngraph/frontend/onnx/onnx_import/src/op/quant_conv.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/quant_conv.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/quant_conv.cpp diff --git a/ngraph/frontend/onnx_import/src/op/quant_conv.hpp b/ngraph/frontend/onnx/onnx_import/src/op/quant_conv.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/quant_conv.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/quant_conv.hpp diff --git a/ngraph/frontend/onnx_import/src/op/quantize_linear.cpp b/ngraph/frontend/onnx/onnx_import/src/op/quantize_linear.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/quantize_linear.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/quantize_linear.cpp diff --git a/ngraph/frontend/onnx_import/src/op/quantize_linear.hpp b/ngraph/frontend/onnx/onnx_import/src/op/quantize_linear.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/quantize_linear.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/quantize_linear.hpp diff --git a/ngraph/frontend/onnx_import/src/op/range.cpp b/ngraph/frontend/onnx/onnx_import/src/op/range.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/range.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/range.cpp diff --git a/ngraph/frontend/onnx_import/src/op/range.hpp b/ngraph/frontend/onnx/onnx_import/src/op/range.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/range.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/range.hpp diff --git a/ngraph/frontend/onnx_import/src/op/reciprocal.cpp b/ngraph/frontend/onnx/onnx_import/src/op/reciprocal.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reciprocal.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/reciprocal.cpp diff --git a/ngraph/frontend/onnx_import/src/op/reciprocal.hpp b/ngraph/frontend/onnx/onnx_import/src/op/reciprocal.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reciprocal.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/reciprocal.hpp diff --git a/ngraph/frontend/onnx_import/src/op/reduce.cpp b/ngraph/frontend/onnx/onnx_import/src/op/reduce.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reduce.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/reduce.cpp diff --git a/ngraph/frontend/onnx_import/src/op/reduce.hpp b/ngraph/frontend/onnx/onnx_import/src/op/reduce.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reduce.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/reduce.hpp diff --git a/ngraph/frontend/onnx_import/src/op/relu.hpp b/ngraph/frontend/onnx/onnx_import/src/op/relu.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/relu.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/relu.hpp diff --git a/ngraph/frontend/onnx_import/src/op/reshape.cpp b/ngraph/frontend/onnx/onnx_import/src/op/reshape.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reshape.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/reshape.cpp diff --git a/ngraph/frontend/onnx_import/src/op/reshape.hpp b/ngraph/frontend/onnx/onnx_import/src/op/reshape.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reshape.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/reshape.hpp diff --git a/ngraph/frontend/onnx_import/src/op/resize.cpp b/ngraph/frontend/onnx/onnx_import/src/op/resize.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/resize.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/resize.cpp diff --git a/ngraph/frontend/onnx_import/src/op/resize.hpp b/ngraph/frontend/onnx/onnx_import/src/op/resize.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/resize.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/resize.hpp diff --git a/ngraph/frontend/onnx_import/src/op/reverse_sequence.cpp b/ngraph/frontend/onnx/onnx_import/src/op/reverse_sequence.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reverse_sequence.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/reverse_sequence.cpp diff --git a/ngraph/frontend/onnx_import/src/op/reverse_sequence.hpp b/ngraph/frontend/onnx/onnx_import/src/op/reverse_sequence.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/reverse_sequence.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/reverse_sequence.hpp diff --git a/ngraph/frontend/onnx_import/src/op/rnn.cpp b/ngraph/frontend/onnx/onnx_import/src/op/rnn.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/rnn.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/rnn.cpp diff --git a/ngraph/frontend/onnx_import/src/op/rnn.hpp b/ngraph/frontend/onnx/onnx_import/src/op/rnn.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/rnn.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/rnn.hpp diff --git a/ngraph/frontend/onnx_import/src/op/roi_align.cpp b/ngraph/frontend/onnx/onnx_import/src/op/roi_align.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/roi_align.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/roi_align.cpp diff --git a/ngraph/frontend/onnx_import/src/op/roi_align.hpp b/ngraph/frontend/onnx/onnx_import/src/op/roi_align.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/roi_align.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/roi_align.hpp diff --git a/ngraph/frontend/onnx_import/src/op/round.cpp b/ngraph/frontend/onnx/onnx_import/src/op/round.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/round.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/round.cpp diff --git a/ngraph/frontend/onnx_import/src/op/round.hpp b/ngraph/frontend/onnx/onnx_import/src/op/round.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/round.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/round.hpp diff --git a/ngraph/frontend/onnx_import/src/op/scatter_elements.cpp b/ngraph/frontend/onnx/onnx_import/src/op/scatter_elements.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/scatter_elements.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/scatter_elements.cpp diff --git a/ngraph/frontend/onnx_import/src/op/scatter_elements.hpp b/ngraph/frontend/onnx/onnx_import/src/op/scatter_elements.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/scatter_elements.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/scatter_elements.hpp diff --git a/ngraph/frontend/onnx_import/src/op/scatter_nd.cpp b/ngraph/frontend/onnx/onnx_import/src/op/scatter_nd.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/scatter_nd.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/scatter_nd.cpp diff --git a/ngraph/frontend/onnx_import/src/op/scatter_nd.hpp b/ngraph/frontend/onnx/onnx_import/src/op/scatter_nd.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/scatter_nd.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/scatter_nd.hpp diff --git a/ngraph/frontend/onnx_import/src/op/selu.cpp b/ngraph/frontend/onnx/onnx_import/src/op/selu.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/selu.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/selu.cpp diff --git a/ngraph/frontend/onnx_import/src/op/selu.hpp b/ngraph/frontend/onnx/onnx_import/src/op/selu.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/selu.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/selu.hpp diff --git a/ngraph/frontend/onnx_import/src/op/shape.cpp b/ngraph/frontend/onnx/onnx_import/src/op/shape.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/shape.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/shape.cpp diff --git a/ngraph/frontend/onnx_import/src/op/shape.hpp b/ngraph/frontend/onnx/onnx_import/src/op/shape.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/shape.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/shape.hpp diff --git a/ngraph/frontend/onnx_import/src/op/shrink.cpp b/ngraph/frontend/onnx/onnx_import/src/op/shrink.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/shrink.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/shrink.cpp diff --git a/ngraph/frontend/onnx_import/src/op/shrink.hpp b/ngraph/frontend/onnx/onnx_import/src/op/shrink.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/shrink.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/shrink.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sigmoid.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sigmoid.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sigmoid.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sigmoid.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sign.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sign.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sign.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sign.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sin.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sin.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sin.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sin.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sinh.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sinh.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sinh.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sinh.hpp diff --git a/ngraph/frontend/onnx_import/src/op/size.cpp b/ngraph/frontend/onnx/onnx_import/src/op/size.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/size.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/size.cpp diff --git a/ngraph/frontend/onnx_import/src/op/size.hpp b/ngraph/frontend/onnx/onnx_import/src/op/size.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/size.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/size.hpp diff --git a/ngraph/frontend/onnx_import/src/op/slice.cpp b/ngraph/frontend/onnx/onnx_import/src/op/slice.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/slice.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/slice.cpp diff --git a/ngraph/frontend/onnx_import/src/op/slice.hpp b/ngraph/frontend/onnx/onnx_import/src/op/slice.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/slice.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/slice.hpp diff --git a/ngraph/frontend/onnx_import/src/op/softmax.cpp b/ngraph/frontend/onnx/onnx_import/src/op/softmax.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/softmax.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/softmax.cpp diff --git a/ngraph/frontend/onnx_import/src/op/softmax.hpp b/ngraph/frontend/onnx/onnx_import/src/op/softmax.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/softmax.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/softmax.hpp diff --git a/ngraph/frontend/onnx_import/src/op/softplus.cpp b/ngraph/frontend/onnx/onnx_import/src/op/softplus.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/softplus.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/softplus.cpp diff --git a/ngraph/frontend/onnx_import/src/op/softplus.hpp b/ngraph/frontend/onnx/onnx_import/src/op/softplus.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/softplus.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/softplus.hpp diff --git a/ngraph/frontend/onnx_import/src/op/softsign.cpp b/ngraph/frontend/onnx/onnx_import/src/op/softsign.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/softsign.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/softsign.cpp diff --git a/ngraph/frontend/onnx_import/src/op/softsign.hpp b/ngraph/frontend/onnx/onnx_import/src/op/softsign.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/softsign.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/softsign.hpp diff --git a/ngraph/frontend/onnx_import/src/op/space_to_depth.cpp b/ngraph/frontend/onnx/onnx_import/src/op/space_to_depth.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/space_to_depth.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/space_to_depth.cpp diff --git a/ngraph/frontend/onnx_import/src/op/space_to_depth.hpp b/ngraph/frontend/onnx/onnx_import/src/op/space_to_depth.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/space_to_depth.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/space_to_depth.hpp diff --git a/ngraph/frontend/onnx_import/src/op/split.cpp b/ngraph/frontend/onnx/onnx_import/src/op/split.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/split.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/split.cpp diff --git a/ngraph/frontend/onnx_import/src/op/split.hpp b/ngraph/frontend/onnx/onnx_import/src/op/split.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/split.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/split.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sqrt.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sqrt.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sqrt.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sqrt.hpp diff --git a/ngraph/frontend/onnx_import/src/op/squeeze.cpp b/ngraph/frontend/onnx/onnx_import/src/op/squeeze.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/squeeze.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/squeeze.cpp diff --git a/ngraph/frontend/onnx_import/src/op/squeeze.hpp b/ngraph/frontend/onnx/onnx_import/src/op/squeeze.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/squeeze.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/squeeze.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sub.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sub.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sub.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sub.hpp diff --git a/ngraph/frontend/onnx_import/src/op/sum.hpp b/ngraph/frontend/onnx/onnx_import/src/op/sum.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/sum.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/sum.hpp diff --git a/ngraph/frontend/onnx_import/src/op/tan.hpp b/ngraph/frontend/onnx/onnx_import/src/op/tan.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/tan.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/tan.hpp diff --git a/ngraph/frontend/onnx_import/src/op/tanh.hpp b/ngraph/frontend/onnx/onnx_import/src/op/tanh.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/tanh.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/tanh.hpp diff --git a/ngraph/frontend/onnx_import/src/op/thresholded_relu.cpp b/ngraph/frontend/onnx/onnx_import/src/op/thresholded_relu.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/thresholded_relu.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/thresholded_relu.cpp diff --git a/ngraph/frontend/onnx_import/src/op/thresholded_relu.hpp b/ngraph/frontend/onnx/onnx_import/src/op/thresholded_relu.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/thresholded_relu.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/thresholded_relu.hpp diff --git a/ngraph/frontend/onnx_import/src/op/tile.cpp b/ngraph/frontend/onnx/onnx_import/src/op/tile.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/tile.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/tile.cpp diff --git a/ngraph/frontend/onnx_import/src/op/tile.hpp b/ngraph/frontend/onnx/onnx_import/src/op/tile.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/tile.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/tile.hpp diff --git a/ngraph/frontend/onnx_import/src/op/topk.cpp b/ngraph/frontend/onnx/onnx_import/src/op/topk.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/topk.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/topk.cpp diff --git a/ngraph/frontend/onnx_import/src/op/topk.hpp b/ngraph/frontend/onnx/onnx_import/src/op/topk.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/topk.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/topk.hpp diff --git a/ngraph/frontend/onnx_import/src/op/transpose.cpp b/ngraph/frontend/onnx/onnx_import/src/op/transpose.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/transpose.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/transpose.cpp diff --git a/ngraph/frontend/onnx_import/src/op/transpose.hpp b/ngraph/frontend/onnx/onnx_import/src/op/transpose.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/transpose.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/transpose.hpp diff --git a/ngraph/frontend/onnx_import/src/op/unsqueeze.cpp b/ngraph/frontend/onnx/onnx_import/src/op/unsqueeze.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/unsqueeze.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/unsqueeze.cpp diff --git a/ngraph/frontend/onnx_import/src/op/unsqueeze.hpp b/ngraph/frontend/onnx/onnx_import/src/op/unsqueeze.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/unsqueeze.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/unsqueeze.hpp diff --git a/ngraph/frontend/onnx_import/src/op/upsample.cpp b/ngraph/frontend/onnx/onnx_import/src/op/upsample.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/upsample.cpp rename to ngraph/frontend/onnx/onnx_import/src/op/upsample.cpp diff --git a/ngraph/frontend/onnx_import/src/op/upsample.hpp b/ngraph/frontend/onnx/onnx_import/src/op/upsample.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/upsample.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/upsample.hpp diff --git a/ngraph/frontend/onnx_import/src/op/where.hpp b/ngraph/frontend/onnx/onnx_import/src/op/where.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/where.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/where.hpp diff --git a/ngraph/frontend/onnx_import/src/op/xor.hpp b/ngraph/frontend/onnx/onnx_import/src/op/xor.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/op/xor.hpp rename to ngraph/frontend/onnx/onnx_import/src/op/xor.hpp diff --git a/ngraph/frontend/onnx_import/src/ops_bridge.cpp b/ngraph/frontend/onnx/onnx_import/src/ops_bridge.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/ops_bridge.cpp rename to ngraph/frontend/onnx/onnx_import/src/ops_bridge.cpp diff --git a/ngraph/frontend/onnx_import/src/ops_bridge.hpp b/ngraph/frontend/onnx/onnx_import/src/ops_bridge.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/ops_bridge.hpp rename to ngraph/frontend/onnx/onnx_import/src/ops_bridge.hpp diff --git a/ngraph/frontend/onnx_import/src/precomp.hpp b/ngraph/frontend/onnx/onnx_import/src/precomp.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/precomp.hpp rename to ngraph/frontend/onnx/onnx_import/src/precomp.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/arg_min_max_factory.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/arg_min_max_factory.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/arg_min_max_factory.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/arg_min_max_factory.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/arg_min_max_factory.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/common.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/common.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/common.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/common.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/common.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/common.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/common.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/common.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/convpool.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/convpool.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/convpool.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/convpool.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/convpool.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/convpool.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/convpool.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/convpool.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/onnx_internal.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/onnx_internal.cpp similarity index 75% rename from ngraph/frontend/onnx_import/src/utils/onnx_internal.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/onnx_internal.cpp index 8e60171a198c91..689eef00cc3f35 100644 --- a/ngraph/frontend/onnx_import/src/utils/onnx_internal.cpp +++ b/ngraph/frontend/onnx/onnx_import/src/utils/onnx_internal.cpp @@ -5,10 +5,10 @@ #include #include "core/graph.hpp" -#include "core/model.hpp" #include "core/null_node.hpp" #include "core/transform.hpp" -#include "onnx_import/onnx_framework_node.hpp" +#include "onnx_framework_node.hpp" +#include "onnx_import/core/model.hpp" #include "onnx_import/utils/onnx_internal.hpp" namespace ngraph @@ -61,7 +61,7 @@ namespace ngraph } } - void convert_decoded_function(std::shared_ptr function) + std::shared_ptr convert_decoded_function(std::shared_ptr function) { for (const auto& node : function->get_ordered_ops()) { @@ -75,12 +75,7 @@ namespace ngraph subgraph_node->infer_inputs_from_parent(); convert_decoded_function(subgraph_node->get_subgraph_body()); } - const auto& onnx_node = raw_node->get_onnx_node(); - OutputVector ng_nodes{onnx_node.get_ng_nodes()}; - if (ng_nodes.size() > raw_node->get_output_size()) - { - ng_nodes.resize(raw_node->get_output_size()); - } + auto ng_nodes = raw_node->get_ng_nodes(); replace_node(raw_node, ng_nodes); } else @@ -90,22 +85,37 @@ namespace ngraph node->revalidate_and_infer_types(); } } - remove_dangling_parameters(function); - remove_dangling_results(function); + detail::remove_dangling_parameters(function); + detail::remove_dangling_results(function); + + return function; } - std::shared_ptr import_onnx_model(ONNX_NAMESPACE::ModelProto& model_proto, - const std::string& model_path) + void apply_transformations(ONNX_NAMESPACE::ModelProto& model_proto, + const std::string& model_path) { transform::expand_onnx_functions(model_proto); transform::fixup_legacy_operators(model_proto); transform::update_external_data_paths(model_proto, model_path); + } - auto p_model_proto = common::make_unique(model_proto); - auto model = common::make_unique(std::move(p_model_proto)); - Graph graph{std::move(model)}; + std::shared_ptr + import_onnx_model(std::shared_ptr model_proto, + const std::string& model_path) + { + apply_transformations(*model_proto, model_path); + Graph graph{model_proto}; return graph.convert(); } + + std::shared_ptr + decode_to_framework_nodes(std::shared_ptr model_proto, + const std::string& model_path) + { + apply_transformations(*model_proto, model_path); + auto graph = std::make_shared(model_proto); + return graph->decode(); + } } // namespace detail } // namespace onnx_import } // namespace ngraph diff --git a/ngraph/frontend/onnx_import/src/utils/pooling_factory.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/pooling_factory.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/pooling_factory.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/pooling_factory.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/pooling_factory.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/pooling_factory.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/pooling_factory.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/pooling_factory.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/provenance_tag.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/provenance_tag.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/provenance_tag.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/provenance_tag.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/provenance_tag.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/provenance_tag.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/provenance_tag.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/provenance_tag.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/recurrent.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/recurrent.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/recurrent.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/recurrent.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/recurrent.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/recurrent.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/recurrent.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/recurrent.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/reshape.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/reshape.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/reshape.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/reshape.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/reshape.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/reshape.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/reshape.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/reshape.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/tensor_external_data.cpp b/ngraph/frontend/onnx/onnx_import/src/utils/tensor_external_data.cpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/tensor_external_data.cpp rename to ngraph/frontend/onnx/onnx_import/src/utils/tensor_external_data.cpp diff --git a/ngraph/frontend/onnx_import/src/utils/tensor_external_data.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/tensor_external_data.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/tensor_external_data.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/tensor_external_data.hpp diff --git a/ngraph/frontend/onnx_import/src/utils/variadic.hpp b/ngraph/frontend/onnx/onnx_import/src/utils/variadic.hpp similarity index 100% rename from ngraph/frontend/onnx_import/src/utils/variadic.hpp rename to ngraph/frontend/onnx/onnx_import/src/utils/variadic.hpp diff --git a/ngraph/python/tests/test_ngraph/test_frontend_onnx.py b/ngraph/python/tests/test_ngraph/test_frontend_onnx.py new file mode 100644 index 00000000000000..3ef545f3a3c780 --- /dev/null +++ b/ngraph/python/tests/test_ngraph/test_frontend_onnx.py @@ -0,0 +1,99 @@ +# Copyright (C) 2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import onnx +import numpy as np +from onnx.helper import make_graph, make_model, make_tensor_value_info + +from ngraph.frontend import FrontEndManager +from tests.runtime import get_runtime + + +def create_onnx_model(): + add = onnx.helper.make_node("Add", inputs=["x", "y"], outputs=["z"]) + const_tensor = onnx.helper.make_tensor("const_tensor", onnx.TensorProto.FLOAT, (2, 2), [0.5, 1, 1.5, 2.0]) + const_node = onnx.helper.make_node("Constant", [], outputs=["const_node"], + value=const_tensor, name="const_node") + mul = onnx.helper.make_node("Mul", inputs=["z", "const_node"], outputs=["out"]) + input_tensors = [ + make_tensor_value_info("x", onnx.TensorProto.FLOAT, (2, 2)), + make_tensor_value_info("y", onnx.TensorProto.FLOAT, (2, 2)), + ] + output_tensors = [make_tensor_value_info("out", onnx.TensorProto.FLOAT, (2, 2))] + graph = make_graph([add, const_node, mul], "graph", input_tensors, output_tensors) + return make_model(graph, producer_name="ngraph ONNX Importer") + + +def run_function(function, *inputs, expected): + runtime = get_runtime() + computation = runtime.computation(function) + actual = computation(*inputs) + assert len(actual) == len(expected) + for i in range(len(actual)): + np.testing.assert_allclose(expected[i], actual[i], rtol=1e-3, atol=1e-6) + + +fem = None +onnx_model_filename = "model.onnx" + + +def setup_module(): + if not os.environ.get("OV_FRONTEND_PATH"): + if os.environ.get("LD_LIBRARY_PATH"): + os.environ["OV_FRONTEND_PATH"] = os.environ["LD_LIBRARY_PATH"] + if not os.environ.get("OV_FRONTEND_PATH"): + raise RuntimeError("Please set OV_FRONTEND_PATH env variable to point " + "to directory that has libonnx_ngraph_frontend.so") + global fem + fem = FrontEndManager() + onnx.save_model(create_onnx_model(), onnx_model_filename) + + +def teardown_module(): + os.remove(onnx_model_filename) + + +def test_get_available_front_ends(): + front_ends = fem.get_available_front_ends() + assert "onnx" in front_ends + + +def test_convert(): + fe = fem.load_by_framework(framework="onnx") + assert fe + + model = fe.load_from_file(onnx_model_filename) + assert model + + function = fe.convert(model) + assert function + + a = np.array([[1, 2], [3, 4]], dtype=np.float32) + b = np.array([[2, 3], [4, 5]], dtype=np.float32) + expected = np.array([[1.5, 5], [10.5, 18]], dtype=np.float32) + run_function(function, a, b, expected=[expected]) + + +def test_decode_and_convert(): + fe = fem.load_by_framework(framework="onnx") + assert fe + + model = fe.load_from_file(onnx_model_filename) + assert model + + decoded_function = fe.decode(model) + assert decoded_function + for op in decoded_function.get_ordered_ops(): + assert op.get_type_name() in ["Parameter", "Constant", "ONNXFrameworkNode", + "ONNXSubgraphFrameworkNode", "Result"] + + function = fe.convert(decoded_function) + assert function + for op in function.get_ordered_ops(): + assert op.get_type_name() not in ["ONNXFrameworkNode", "ONNXSubgraphFrameworkNode"] + + a = np.array([[1, 2], [3, 4]], dtype=np.float32) + b = np.array([[2, 3], [4, 5]], dtype=np.float32) + expected = np.array([[1.5, 5], [10.5, 18]], dtype=np.float32) + run_function(function, a, b, expected=[expected]) From 01b5179f0833d1b556e655aa05181f75413a763c Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Thu, 15 Jul 2021 12:49:17 +0000 Subject: [PATCH 02/10] rename NGRAPH_ONNX_EDITOR_ENABLE to NGRAPH_ONNX_FRONTEND_ENABLE --- .ci/azure/linux.yml | 2 +- .ci/azure/linux_onnxruntime.yml | 2 +- .ci/openvino-onnx/Dockerfile | 2 +- cmake/coverage.cmake | 12 ++++++++---- ngraph/CMakeLists.txt | 6 +++--- ngraph/frontend/onnx/CMakeLists.txt | 2 +- .../test_frontend_onnx.py | 0 .../test_frontendmanager.py | 0 ngraph/test/CMakeLists.txt | 4 ++-- 9 files changed, 17 insertions(+), 13 deletions(-) rename ngraph/python/tests/{test_ngraph => test_frontend}/test_frontend_onnx.py (100%) rename ngraph/python/tests/{test_ngraph => test_frontend}/test_frontendmanager.py (100%) diff --git a/.ci/azure/linux.yml b/.ci/azure/linux.yml index f9fcee6a66eb77..0dda8beea9abe8 100644 --- a/.ci/azure/linux.yml +++ b/.ci/azure/linux.yml @@ -109,7 +109,7 @@ jobs: -DENABLE_WHEEL=ON -DENABLE_TESTS=ON -DNGRAPH_ONNX_IMPORT_ENABLE=ON - -DNGRAPH_ONNX_EDITOR_ENABLE=ON + -DNGRAPH_ONNX_FRONTEND_ENABLE=ON -DENABLE_FASTER_BUILD=ON -DENABLE_STRICT_DEPENDENCIES=OFF -DIE_EXTRA_MODULES=$(OPENVINO_CONTRIB_REPO_DIR)/modules diff --git a/.ci/azure/linux_onnxruntime.yml b/.ci/azure/linux_onnxruntime.yml index bc8248256455fc..a2bfee8c70ac3e 100644 --- a/.ci/azure/linux_onnxruntime.yml +++ b/.ci/azure/linux_onnxruntime.yml @@ -95,7 +95,7 @@ jobs: -DENABLE_SAMPLES=OFF -DENABLE_SPEECH_DEMO=OFF -DNGRAPH_ONNX_IMPORT_ENABLE=ON - -DNGRAPH_ONNX_EDITOR_ENABLE=ON + -DNGRAPH_ONNX_FRONTEND_ENABLE=ON -DNGRAPH_DEBUG_ENABLE=OFF $(REPO_DIR) workingDirectory: $(BUILD_DIR) diff --git a/.ci/openvino-onnx/Dockerfile b/.ci/openvino-onnx/Dockerfile index 45fb6d12a8ca0e..315598225627e0 100644 --- a/.ci/openvino-onnx/Dockerfile +++ b/.ci/openvino-onnx/Dockerfile @@ -69,7 +69,7 @@ RUN cmake .. \ -DENABLE_PYTHON=ON \ -DPYTHON_EXECUTABLE=/usr/bin/python3 \ -DNGRAPH_ONNX_IMPORT_ENABLE=ON \ - -DNGRAPH_ONNX_EDITOR_ENABLE=ON \ + -DNGRAPH_ONNX_FRONTEND_ENABLE=ON \ -DNGRAPH_DEBUG_ENABLE=OFF \ -DCMAKE_INSTALL_PREFIX=/openvino/dist \ -DNGRAPH_USE_PROTOBUF_LITE=${PROTOBUF_LITE} diff --git a/cmake/coverage.cmake b/cmake/coverage.cmake index 22709e927de48f..3a6eb3106556ee 100644 --- a/cmake/coverage.cmake +++ b/cmake/coverage.cmake @@ -92,16 +92,20 @@ ie_coverage_genhtml(INFO_FILE "ngraph" if(NGRAPH_ONNX_IMPORT_ENABLE) ie_coverage_extract(INPUT "openvino" OUTPUT "onnx_importer" - PATTERNS "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx_common*" - "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx_import*") + PATTERNS "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx/onnx_common*" + "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx/onnx_import*") ie_coverage_genhtml(INFO_FILE "onnx_importer" PREFIX "${OV_COVERAGE_BASE_DIRECTORY}") endif() -if(NGRAPH_ONNX_EDITOR_ENABLE) +if(NGRAPH_ONNX_FRONTEND_ENABLE) ie_coverage_extract(INPUT "openvino" OUTPUT "onnx_editor" - PATTERNS "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx_editor*") + PATTERNS "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx/onnx_editor*") ie_coverage_genhtml(INFO_FILE "onnx_editor" PREFIX "${OV_COVERAGE_BASE_DIRECTORY}") + ie_coverage_extract(INPUT "openvino" OUTPUT "onnx_ngraph_frontend" + PATTERNS "${OV_COVERAGE_BASE_DIRECTORY}/ngraph/frontend/onnx/frontend*") + ie_coverage_genhtml(INFO_FILE "onnx_ngraph_frontend" + PREFIX "${OV_COVERAGE_BASE_DIRECTORY}") endif() diff --git a/ngraph/CMakeLists.txt b/ngraph/CMakeLists.txt index 20fe4a9af12a52..83f1b5dfd60e5c 100644 --- a/ngraph/CMakeLists.txt +++ b/ngraph/CMakeLists.txt @@ -21,20 +21,20 @@ option(NGRAPH_UNIT_TEST_ENABLE "Control the building of unit tests" ON) option(NGRAPH_UNIT_TEST_BACKENDS_ENABLE "Control the building of unit tests using backends" ON) option(NGRAPH_DEBUG_ENABLE "Enable output for NGRAPH_DEBUG statements" OFF) option(NGRAPH_ONNX_IMPORT_ENABLE "Enable ONNX importer" OFF) -option(NGRAPH_ONNX_EDITOR_ENABLE "Enable ONNX Editor" OFF) +option(NGRAPH_ONNX_FRONTEND_ENABLE "Enable ONNX FrontEnd" OFF) option(NGRAPH_PDPD_FRONTEND_ENABLE "Enable PaddlePaddle FrontEnd" OFF) option(NGRAPH_USE_PROTOBUF_LITE "Compiles and links with protobuf-lite" OFF) if (NGRAPH_ONNX_IMPORT_ENABLE OR NGRAPH_PDPD_FRONTEND_ENABLE) option(NGRAPH_USE_SYSTEM_PROTOBUF "Use system provided Protobuf shared object" OFF) endif() -if(NGRAPH_ONNX_EDITOR_ENABLE AND NOT NGRAPH_ONNX_IMPORT_ENABLE) +if(NGRAPH_ONNX_FRONTEND_ENABLE AND NOT NGRAPH_ONNX_IMPORT_ENABLE) message(FATAL_ERROR "ONNX Editor component requires ONNX Importer. Set NGRAPH_ONNX_IMPORT_ENABLE=ON.") endif() message(STATUS "NGRAPH_DEBUG_ENABLE: ${NGRAPH_DEBUG_ENABLE}") message(STATUS "NGRAPH_ONNX_IMPORT_ENABLE: ${NGRAPH_ONNX_IMPORT_ENABLE}") -message(STATUS "NGRAPH_ONNX_EDITOR_ENABLE: ${NGRAPH_ONNX_EDITOR_ENABLE}") +message(STATUS "NGRAPH_ONNX_FRONTEND_ENABLE: ${NGRAPH_ONNX_FRONTEND_ENABLE}") message(STATUS "NGRAPH_PDPD_FRONTEND_ENABLE: ${NGRAPH_PDPD_FRONTEND_ENABLE}") message(STATUS "NGRAPH_USE_PROTOBUF_LITE: ${NGRAPH_USE_PROTOBUF_LITE}") message(STATUS "NGRAPH_UNIT_TEST_ENABLE: ${NGRAPH_UNIT_TEST_ENABLE}") diff --git a/ngraph/frontend/onnx/CMakeLists.txt b/ngraph/frontend/onnx/CMakeLists.txt index 123d256e26507e..e2b5da927687f9 100644 --- a/ngraph/frontend/onnx/CMakeLists.txt +++ b/ngraph/frontend/onnx/CMakeLists.txt @@ -4,7 +4,7 @@ add_subdirectory(onnx_common) add_subdirectory(onnx_import) -if (NGRAPH_ONNX_EDITOR_ENABLE) +if (NGRAPH_ONNX_FRONTEND_ENABLE) add_subdirectory(onnx_editor) add_subdirectory(frontend) endif() diff --git a/ngraph/python/tests/test_ngraph/test_frontend_onnx.py b/ngraph/python/tests/test_frontend/test_frontend_onnx.py similarity index 100% rename from ngraph/python/tests/test_ngraph/test_frontend_onnx.py rename to ngraph/python/tests/test_frontend/test_frontend_onnx.py diff --git a/ngraph/python/tests/test_ngraph/test_frontendmanager.py b/ngraph/python/tests/test_frontend/test_frontendmanager.py similarity index 100% rename from ngraph/python/tests/test_ngraph/test_frontendmanager.py rename to ngraph/python/tests/test_frontend/test_frontendmanager.py diff --git a/ngraph/test/CMakeLists.txt b/ngraph/test/CMakeLists.txt index d6ed497fbf9991..b2f48df094f4b4 100644 --- a/ngraph/test/CMakeLists.txt +++ b/ngraph/test/CMakeLists.txt @@ -528,7 +528,7 @@ if (NGRAPH_ONNX_IMPORT_ENABLE AND NOT NGRAPH_USE_PROTOBUF_LITE) onnx/onnx_tensor_names.cpp) endif() -if (NGRAPH_ONNX_EDITOR_ENABLE) +if (NGRAPH_ONNX_FRONTEND_ENABLE) list(APPEND SRC onnx/onnx_editor.cpp) list(APPEND MULTI_TEST_SRC onnx/onnx_test_utils.in.cpp @@ -633,7 +633,7 @@ if (NGRAPH_ONNX_IMPORT_ENABLE) target_link_libraries(unit-test PRIVATE onnx_importer) endif() -if (NGRAPH_ONNX_EDITOR_ENABLE) +if (NGRAPH_ONNX_FRONTEND_ENABLE) target_link_libraries(unit-test PRIVATE onnx_editor) endif() From 8d79baf89ca62eac0430666e6ac50ea5ab12bc66 Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Thu, 15 Jul 2021 14:08:37 +0000 Subject: [PATCH 03/10] fix error message --- ngraph/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngraph/CMakeLists.txt b/ngraph/CMakeLists.txt index 83f1b5dfd60e5c..9fd4ec50b5d3cf 100644 --- a/ngraph/CMakeLists.txt +++ b/ngraph/CMakeLists.txt @@ -29,7 +29,7 @@ if (NGRAPH_ONNX_IMPORT_ENABLE OR NGRAPH_PDPD_FRONTEND_ENABLE) option(NGRAPH_USE_SYSTEM_PROTOBUF "Use system provided Protobuf shared object" OFF) endif() if(NGRAPH_ONNX_FRONTEND_ENABLE AND NOT NGRAPH_ONNX_IMPORT_ENABLE) - message(FATAL_ERROR "ONNX Editor component requires ONNX Importer. Set NGRAPH_ONNX_IMPORT_ENABLE=ON.") + message(FATAL_ERROR "ONNX FrontEnd component requires ONNX Importer. Set NGRAPH_ONNX_IMPORT_ENABLE=ON.") endif() message(STATUS "NGRAPH_DEBUG_ENABLE: ${NGRAPH_DEBUG_ENABLE}") From 0b9c2985e1ae939ce54208b13d60438e57fb5cfa Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Mon, 19 Jul 2021 14:20:41 +0000 Subject: [PATCH 04/10] apply code style --- .../include/onnx_frontend/input_model.hpp | 1 - .../frontend/include/onnx_frontend/place.hpp | 35 ++++++++++--------- .../frontend/onnx/frontend/src/frontend.cpp | 13 ++++--- .../onnx/frontend/src/input_model.cpp | 10 +++--- 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp index 1d6270796f89af..6d3e8228f174bb 100644 --- a/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp @@ -16,7 +16,6 @@ namespace ngraph public: InputModelONNX(const std::string& path); - std::vector get_inputs() const override; Place::Ptr get_place_by_tensor_name(const std::string& tensor_name) const override; void set_partial_shape(Place::Ptr place, const ngraph::PartialShape& shape) override; diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp index a72739b7ca9e29..b960ca72b2873e 100644 --- a/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp @@ -13,19 +13,22 @@ namespace ngraph class FRONTEND_API PlaceInputEdgeONNX : public Place { public: - PlaceInputEdgeONNX(const onnx_editor::InputEdge& edge) : m_edge(edge) - {} + PlaceInputEdgeONNX(const onnx_editor::InputEdge& edge) + : m_edge(edge) + { + } private: onnx_editor::InputEdge m_edge; - }; class FRONTEND_API PlaceOutputEdgeONNX : public Place { public: - PlaceOutputEdgeONNX(const onnx_editor::OutputEdge& edge) : m_edge(edge) - {} + PlaceOutputEdgeONNX(const onnx_editor::OutputEdge& edge) + : m_edge(edge) + { + } private: onnx_editor::OutputEdge m_edge; @@ -35,15 +38,12 @@ namespace ngraph { public: PlaceTensorONNX(const std::string& name, const onnx_editor::ONNXModelEditor& editor) - : m_name(name), - m_editor(editor) + : m_name(name) + , m_editor(editor) { } - std::vector get_names() const override - { - return {m_name}; - } + std::vector get_names() const override { return {m_name}; } Place::Ptr get_producing_port() const override { @@ -54,18 +54,19 @@ namespace ngraph { std::vector ret; auto edges = m_editor.find_output_consumers(m_name); - std::transform(edges.begin(), edges.end(), std::back_inserter(ret), - [] (const onnx_editor::InputEdge& edge) { + std::transform(edges.begin(), + edges.end(), + std::back_inserter(ret), + [](const onnx_editor::InputEdge& edge) { return std::make_shared(edge); - }); + }); return ret; } Ptr get_input_port(int input_port_index) const override { - return std::make_shared( - m_editor.find_input_edge(onnx_editor::EditorNode(m_name), - onnx_editor::EditorInput(input_port_index))); + return std::make_shared(m_editor.find_input_edge( + onnx_editor::EditorNode(m_name), onnx_editor::EditorInput(input_port_index))); } private: diff --git a/ngraph/frontend/onnx/frontend/src/frontend.cpp b/ngraph/frontend/onnx/frontend/src/frontend.cpp index b2120d970884a2..7954adc1d242d2 100644 --- a/ngraph/frontend/onnx/frontend/src/frontend.cpp +++ b/ngraph/frontend/onnx/frontend/src/frontend.cpp @@ -2,17 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 // -#include +#include +#include #include #include -#include -#include - +#include using namespace ngraph; using namespace ngraph::frontend; - extern "C" FRONTEND_API FrontEndVersion GetAPIVersion() { return OV_FRONTEND_API_VERSION; @@ -22,7 +20,7 @@ extern "C" FRONTEND_API void* GetFrontEndData() { FrontEndPluginInfo* res = new FrontEndPluginInfo(); res->m_name = "onnx"; - res->m_creator = [] (FrontEndCapFlags) { return std::make_shared(); }; + res->m_creator = [](FrontEndCapFlags) { return std::make_shared(); }; return res; } @@ -38,7 +36,8 @@ std::shared_ptr FrontEndONNX::convert(InputModel::Ptr model) c return model_onnx->convert(); } -std::shared_ptr FrontEndONNX::convert(std::shared_ptr partially_converted) const +std::shared_ptr + FrontEndONNX::convert(std::shared_ptr partially_converted) const { return onnx_import::convert_decoded_function(partially_converted); } diff --git a/ngraph/frontend/onnx/frontend/src/input_model.cpp b/ngraph/frontend/onnx/frontend/src/input_model.cpp index 8080ba695b1234..7a068aee97b161 100644 --- a/ngraph/frontend/onnx/frontend/src/input_model.cpp +++ b/ngraph/frontend/onnx/frontend/src/input_model.cpp @@ -2,17 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 // +#include #include #include -#include - using namespace ngraph; using namespace ngraph::frontend; - -InputModelONNX::InputModelONNX(const std::string& path) : m_editor(path) -{} +InputModelONNX::InputModelONNX(const std::string& path) + : m_editor(path) +{ +} std::vector InputModelONNX::get_inputs() const { From c7c41aa4e9f8ab6322c8973a5a9c22b73c007d56 Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Mon, 19 Jul 2021 15:28:08 +0000 Subject: [PATCH 05/10] disable ONNX frontend by default --- cmake/features.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/features.cmake b/cmake/features.cmake index 34e2ec9e188fc8..5cca3c6c1451e7 100644 --- a/cmake/features.cmake +++ b/cmake/features.cmake @@ -121,7 +121,7 @@ else() endif() ie_dependent_option(NGRAPH_ONNX_IMPORT_ENABLE "Enable ONNX importer" ON "protoc_available" OFF) -ie_dependent_option(NGRAPH_ONNX_FRONTEND_ENABLE "Enable ONNX FrontEnd" ON "NGRAPH_ONNX_IMPORT_ENABLE" OFF) +ie_dependent_option(NGRAPH_ONNX_FRONTEND_ENABLE "Enable ONNX FrontEnd" OFF "NGRAPH_ONNX_IMPORT_ENABLE" OFF) ie_dependent_option(NGRAPH_PDPD_FRONTEND_ENABLE "Enable PaddlePaddle FrontEnd" ON "protoc_available" OFF) ie_dependent_option(NGRAPH_USE_PROTOBUF_LITE "Compiles and links with protobuf-lite" OFF "NGRAPH_ONNX_IMPORT_ENABLE OR NGRAPH_PDPD_FRONTEND_ENABLE" OFF) From f74740f7ead5280a4efa32076e0402738241fb3e Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Tue, 20 Jul 2021 11:00:57 +0000 Subject: [PATCH 06/10] apply code style --- .../mock_mo_ngraph_frontend/mock_mo_frontend.hpp | 1 - .../onnx/frontend/include/onnx_frontend/frontend.hpp | 3 +-- ngraph/frontend/onnx/frontend/src/frontend.cpp | 7 +++++-- .../mock/mock_py_ngraph_frontend/mock_py_frontend.hpp | 3 ++- ngraph/test/frontend/frontend_manager.cpp | 3 +-- ngraph/test/frontend/shared/src/cut_specific_model.cpp | 2 +- ngraph/test/frontend/shared/src/load_from.cpp | 2 +- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/model-optimizer/unit_tests/mock_mo_frontend/mock_mo_ngraph_frontend/mock_mo_frontend.hpp b/model-optimizer/unit_tests/mock_mo_frontend/mock_mo_ngraph_frontend/mock_mo_frontend.hpp index ab0de8f3357e7c..e6b91764a0d169 100644 --- a/model-optimizer/unit_tests/mock_mo_frontend/mock_mo_ngraph_frontend/mock_mo_frontend.hpp +++ b/model-optimizer/unit_tests/mock_mo_frontend/mock_mo_ngraph_frontend/mock_mo_frontend.hpp @@ -309,7 +309,6 @@ class MOCK_API FrontEndMockPy : public FrontEnd public: FrontEndMockPy() {} - std::shared_ptr convert(InputModel::Ptr model) const override { m_stat.m_convert_model++; diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp index 4c9a02e0aa15a6..2be0e3bd4a573e 100644 --- a/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp @@ -17,11 +17,10 @@ namespace ngraph std::shared_ptr convert(std::shared_ptr partially_converted) const override; std::shared_ptr decode(InputModel::Ptr model) const override; + protected: InputModel::Ptr load_impl(const std::vector>& params) const override; - - }; } // namespace frontend diff --git a/ngraph/frontend/onnx/frontend/src/frontend.cpp b/ngraph/frontend/onnx/frontend/src/frontend.cpp index d2474e4b3c40be..fd714fe25d7be2 100644 --- a/ngraph/frontend/onnx/frontend/src/frontend.cpp +++ b/ngraph/frontend/onnx/frontend/src/frontend.cpp @@ -26,8 +26,11 @@ extern "C" FRONTEND_API void* GetFrontEndData() InputModel::Ptr FrontEndONNX::load_impl(const std::vector>& variants) const { - NGRAPH_CHECK(variants.size() == 1, "Only one parameter to load function is expected. Got " + std::to_string(variants.size())); - NGRAPH_CHECK(is_type>(variants[0]), "Parameter to load function need to be a std::string"); + NGRAPH_CHECK(variants.size() == 1, + "Only one parameter to load function is expected. Got " + + std::to_string(variants.size())); + NGRAPH_CHECK(is_type>(variants[0]), + "Parameter to load function need to be a std::string"); auto path = as_type_ptr>(variants[0])->get(); return std::make_shared(path); } diff --git a/ngraph/python/tests/mock/mock_py_ngraph_frontend/mock_py_frontend.hpp b/ngraph/python/tests/mock/mock_py_ngraph_frontend/mock_py_frontend.hpp index c2654f7d8745ea..d3e09583481769 100644 --- a/ngraph/python/tests/mock/mock_py_ngraph_frontend/mock_py_frontend.hpp +++ b/ngraph/python/tests/mock/mock_py_ngraph_frontend/mock_py_frontend.hpp @@ -504,7 +504,8 @@ class MOCK_API FrontEndMockPy : public FrontEnd InputModel::Ptr load_impl(const std::vector>& params) const override { if (params.size() > 0 && is_type>(params[0])) - m_stat.m_load_paths.push_back(as_type_ptr>(params[0])->get()); + m_stat.m_load_paths.push_back( + as_type_ptr>(params[0])->get()); return std::make_shared(); } diff --git a/ngraph/test/frontend/frontend_manager.cpp b/ngraph/test/frontend/frontend_manager.cpp index 218ecded3adf0a..b190c1e7860fa0 100644 --- a/ngraph/test/frontend/frontend_manager.cpp +++ b/ngraph/test/frontend/frontend_manager.cpp @@ -34,8 +34,7 @@ static int set_test_env(const char* name, const char* value) TEST(FrontEndManagerTest, testAvailableFrontEnds) { FrontEndManager fem; - ASSERT_NO_THROW(fem.register_front_end( - "mock", []() { return std::make_shared(); })); + ASSERT_NO_THROW(fem.register_front_end("mock", []() { return std::make_shared(); })); auto frontends = fem.get_available_front_ends(); ASSERT_NE(std::find(frontends.begin(), frontends.end(), "mock"), frontends.end()); FrontEnd::Ptr fe; diff --git a/ngraph/test/frontend/shared/src/cut_specific_model.cpp b/ngraph/test/frontend/shared/src/cut_specific_model.cpp index a9e7ee1a4ca4e0..c784745900330b 100644 --- a/ngraph/test/frontend/shared/src/cut_specific_model.cpp +++ b/ngraph/test/frontend/shared/src/cut_specific_model.cpp @@ -3,8 +3,8 @@ // #include "cut_specific_model.hpp" -#include "utils.hpp" #include "ngraph/opsets/opset7.hpp" +#include "utils.hpp" using namespace ngraph; using namespace ngraph::frontend; diff --git a/ngraph/test/frontend/shared/src/load_from.cpp b/ngraph/test/frontend/shared/src/load_from.cpp index 937f86f1f0ccf2..d7a7e666b69999 100644 --- a/ngraph/test/frontend/shared/src/load_from.cpp +++ b/ngraph/test/frontend/shared/src/load_from.cpp @@ -63,7 +63,7 @@ TEST_P(FrontEndLoadFromTest, testLoadFromTwoFiles) TEST_P(FrontEndLoadFromTest, testLoadFromStream) { auto ifs = std::make_shared(m_param.m_modelsPath + m_param.m_stream, - std::ios::in | std::ifstream::binary); + std::ios::in | std::ifstream::binary); auto is = std::dynamic_pointer_cast(ifs); std::vector frontends; FrontEnd::Ptr fe; From 6b1add7a8f2df336b281d25ebc0ccc85b6d39063 Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Tue, 20 Jul 2021 13:27:30 +0000 Subject: [PATCH 07/10] apply review comments --- ngraph/frontend/onnx/frontend/CMakeLists.txt | 6 ---- .../frontend/onnx/frontend/src/frontend.cpp | 2 +- .../onnx/frontend/src/input_model.cpp | 4 +-- .../onnx_frontend => src}/input_model.hpp | 0 .../{include/onnx_frontend => src}/place.hpp | 0 .../onnx_import/utils/onnx_internal.hpp | 1 - .../tests/test_frontend/test_frontend_onnx.py | 31 ++----------------- 7 files changed, 6 insertions(+), 38 deletions(-) rename ngraph/frontend/onnx/frontend/{include/onnx_frontend => src}/input_model.hpp (100%) rename ngraph/frontend/onnx/frontend/{include/onnx_frontend => src}/place.hpp (100%) diff --git a/ngraph/frontend/onnx/frontend/CMakeLists.txt b/ngraph/frontend/onnx/frontend/CMakeLists.txt index 64436e24d3d78e..aab7a150db87c9 100644 --- a/ngraph/frontend/onnx/frontend/CMakeLists.txt +++ b/ngraph/frontend/onnx/frontend/CMakeLists.txt @@ -32,12 +32,6 @@ target_include_directories(onnx_ngraph_frontend PUBLIC $ #include #include -#include +#include #include using namespace ngraph; diff --git a/ngraph/frontend/onnx/frontend/src/input_model.cpp b/ngraph/frontend/onnx/frontend/src/input_model.cpp index 7a068aee97b161..58ebe098f84b39 100644 --- a/ngraph/frontend/onnx/frontend/src/input_model.cpp +++ b/ngraph/frontend/onnx/frontend/src/input_model.cpp @@ -3,8 +3,8 @@ // #include -#include -#include +#include +#include using namespace ngraph; using namespace ngraph::frontend; diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp b/ngraph/frontend/onnx/frontend/src/input_model.hpp similarity index 100% rename from ngraph/frontend/onnx/frontend/include/onnx_frontend/input_model.hpp rename to ngraph/frontend/onnx/frontend/src/input_model.hpp diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp b/ngraph/frontend/onnx/frontend/src/place.hpp similarity index 100% rename from ngraph/frontend/onnx/frontend/include/onnx_frontend/place.hpp rename to ngraph/frontend/onnx/frontend/src/place.hpp diff --git a/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp b/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp index ef2232e239159f..006fcc561e6c36 100644 --- a/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp +++ b/ngraph/frontend/onnx/onnx_import/include/onnx_import/utils/onnx_internal.hpp @@ -36,7 +36,6 @@ namespace ngraph /// /// \return An nGraph function that represents a single output from the created /// graph. - ONNX_IMPORTER_API std::shared_ptr import_onnx_model(std::shared_ptr model_proto, const std::string& model_path); diff --git a/ngraph/python/tests/test_frontend/test_frontend_onnx.py b/ngraph/python/tests/test_frontend/test_frontend_onnx.py index 3c65658e34cba9..2ff7d68d8c14fe 100644 --- a/ngraph/python/tests/test_frontend/test_frontend_onnx.py +++ b/ngraph/python/tests/test_frontend/test_frontend_onnx.py @@ -36,19 +36,11 @@ def run_function(function, *inputs, expected): np.testing.assert_allclose(expected[i], actual[i], rtol=1e-3, atol=1e-6) -fem = None +fem = FrontEndManager() onnx_model_filename = "model.onnx" def setup_module(): - if not os.environ.get("OV_FRONTEND_PATH"): - if os.environ.get("LD_LIBRARY_PATH"): - os.environ["OV_FRONTEND_PATH"] = os.environ["LD_LIBRARY_PATH"] - if not os.environ.get("OV_FRONTEND_PATH"): - raise RuntimeError("Please set OV_FRONTEND_PATH env variable to point " - "to directory that has libonnx_ngraph_frontend.so") - global fem - fem = FrontEndManager() onnx.save_model(create_onnx_model(), onnx_model_filename) @@ -57,26 +49,9 @@ def teardown_module(): def skip_if_onnx_frontend_is_disabled(): - paths = os.environ["OV_FRONTEND_PATH"].split(":") - found = False - if platform == "linux": - libname = "libonnx_ngraph_frontend.so" - elif platform == "darwin": - libname = "libonnx_ngraph_frontend.dylib" - elif platform == "win32": - libname = "onnx_ngraph_frontend.dll" - for path in paths: - if os.path.exists(os.path.join(path, libname)): - found = True - if not found: - pytest.skip() - - -def test_get_available_front_ends(): - skip_if_onnx_frontend_is_disabled() - front_ends = fem.get_available_front_ends() - assert "onnx" in front_ends + if not "onnx" in front_ends: + pytest.skip() def test_convert(): From fe3ddabeb84d5a1376134a29a62180aba1d45178 Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Tue, 20 Jul 2021 19:57:45 +0200 Subject: [PATCH 08/10] add ONNX_FRONTEND_API macro --- .../onnx/frontend/include/onnx_frontend/frontend.hpp | 8 +++++++- ngraph/frontend/onnx/frontend/src/frontend.cpp | 4 ++-- ngraph/frontend/onnx/frontend/src/input_model.hpp | 2 +- ngraph/frontend/onnx/frontend/src/place.hpp | 6 +++--- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp b/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp index 2be0e3bd4a573e..fdc004365d6672 100644 --- a/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp +++ b/ngraph/frontend/onnx/frontend/include/onnx_frontend/frontend.hpp @@ -6,11 +6,17 @@ #include +#ifdef onnx_ngraph_frontend_EXPORTS +#define ONNX_FRONTEND_API NGRAPH_HELPER_DLL_EXPORT +#else +#define ONNX_FRONTEND_API NGRAPH_HELPER_DLL_IMPORT +#endif + namespace ngraph { namespace frontend { - class FRONTEND_API FrontEndONNX : public FrontEnd + class ONNX_FRONTEND_API FrontEndONNX : public FrontEnd { public: std::shared_ptr convert(InputModel::Ptr model) const override; diff --git a/ngraph/frontend/onnx/frontend/src/frontend.cpp b/ngraph/frontend/onnx/frontend/src/frontend.cpp index 4675e69d9ba07d..520e040dc1799b 100644 --- a/ngraph/frontend/onnx/frontend/src/frontend.cpp +++ b/ngraph/frontend/onnx/frontend/src/frontend.cpp @@ -11,12 +11,12 @@ using namespace ngraph; using namespace ngraph::frontend; -extern "C" FRONTEND_API FrontEndVersion GetAPIVersion() +extern "C" ONNX_FRONTEND_API FrontEndVersion GetAPIVersion() { return OV_FRONTEND_API_VERSION; } -extern "C" FRONTEND_API void* GetFrontEndData() +extern "C" ONNX_FRONTEND_API void* GetFrontEndData() { FrontEndPluginInfo* res = new FrontEndPluginInfo(); res->m_name = "onnx"; diff --git a/ngraph/frontend/onnx/frontend/src/input_model.hpp b/ngraph/frontend/onnx/frontend/src/input_model.hpp index 6d3e8228f174bb..e1003e3c1bbee5 100644 --- a/ngraph/frontend/onnx/frontend/src/input_model.hpp +++ b/ngraph/frontend/onnx/frontend/src/input_model.hpp @@ -11,7 +11,7 @@ namespace ngraph { namespace frontend { - class FRONTEND_API InputModelONNX : public InputModel + class InputModelONNX : public InputModel { public: InputModelONNX(const std::string& path); diff --git a/ngraph/frontend/onnx/frontend/src/place.hpp b/ngraph/frontend/onnx/frontend/src/place.hpp index b960ca72b2873e..28bbc558741d38 100644 --- a/ngraph/frontend/onnx/frontend/src/place.hpp +++ b/ngraph/frontend/onnx/frontend/src/place.hpp @@ -10,7 +10,7 @@ namespace ngraph { namespace frontend { - class FRONTEND_API PlaceInputEdgeONNX : public Place + class PlaceInputEdgeONNX : public Place { public: PlaceInputEdgeONNX(const onnx_editor::InputEdge& edge) @@ -22,7 +22,7 @@ namespace ngraph onnx_editor::InputEdge m_edge; }; - class FRONTEND_API PlaceOutputEdgeONNX : public Place + class PlaceOutputEdgeONNX : public Place { public: PlaceOutputEdgeONNX(const onnx_editor::OutputEdge& edge) @@ -34,7 +34,7 @@ namespace ngraph onnx_editor::OutputEdge m_edge; }; - class FRONTEND_API PlaceTensorONNX : public Place + class PlaceTensorONNX : public Place { public: PlaceTensorONNX(const std::string& name, const onnx_editor::ONNXModelEditor& editor) From 1b8c82c795c617265f5b0c067900cada2e680794 Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Wed, 21 Jul 2021 08:45:08 +0000 Subject: [PATCH 09/10] apply code style --- ngraph/frontend/onnx/frontend/src/frontend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngraph/frontend/onnx/frontend/src/frontend.cpp b/ngraph/frontend/onnx/frontend/src/frontend.cpp index 520e040dc1799b..3caa85db68c365 100644 --- a/ngraph/frontend/onnx/frontend/src/frontend.cpp +++ b/ngraph/frontend/onnx/frontend/src/frontend.cpp @@ -4,8 +4,8 @@ #include #include -#include #include +#include #include using namespace ngraph; From 92552d85e0a799c0ea0333435af0a9a9d6ddfb31 Mon Sep 17 00:00:00 2001 From: Mateusz Tabaka Date: Wed, 21 Jul 2021 09:32:42 +0000 Subject: [PATCH 10/10] fix flake style --- ngraph/python/tests/test_frontend/test_frontend_onnx.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ngraph/python/tests/test_frontend/test_frontend_onnx.py b/ngraph/python/tests/test_frontend/test_frontend_onnx.py index 2ff7d68d8c14fe..1dbe6a34ae637c 100644 --- a/ngraph/python/tests/test_frontend/test_frontend_onnx.py +++ b/ngraph/python/tests/test_frontend/test_frontend_onnx.py @@ -5,7 +5,6 @@ import onnx import numpy as np from onnx.helper import make_graph, make_model, make_tensor_value_info -from sys import platform import pytest from ngraph.frontend import FrontEndManager @@ -50,7 +49,7 @@ def teardown_module(): def skip_if_onnx_frontend_is_disabled(): front_ends = fem.get_available_front_ends() - if not "onnx" in front_ends: + if "onnx" not in front_ends: pytest.skip()