Add nGraph function serialization. (#2579)
authorJozef Daniecki <jozef.daniecki@intel.com>
Tue, 27 Oct 2020 03:57:48 +0000 (04:57 +0100)
committerGitHub <noreply@github.com>
Tue, 27 Oct 2020 03:57:48 +0000 (06:57 +0300)
commitc6fc247f9911ffce1ae4b93f76096aa23e6ec6c4
tree5038e9c28cbe3ad880ac663b4d7e6c27c1bac47d
parent940eb43095949323504b471dc1a328dbbd9ff54b
Add nGraph function serialization. (#2579)

* Add nGraph function serialization.

* Turn of execption throwing on failed visitation.

* CNNNetworkNgrapImpl serialize also support fallback to v7 serialization.

* Add error message for legacy IR not implemented case.

* Store tests models in files.

* Add tests with multiple layers.

* Style aligned to IE rules.

* Add visit_attributes to ExecutionNode.

* Layer version XML atribute implementation.

* Fix opset atribute creation for ExecutionGraph. Refactoring.

* Add missing header.

* Move opset collecting to private scope.

* Add missing header.

* Add test wit multiple oututs. Fix found issues: constant name, result
outputs.

* Move serialization to transformation library.

* Add versioning to serialization transformation.

* Add functional tests with ONNX importer path.

* Add nodes unique name checking and correction.

* Add checks for unsuported cases: dynamic shapes & GenericIE node

* General refactoring.

* Add comment describing type name translations.

* Add serialization deterministicity tests.

It's needed to ensure that subsequent calls to serialize() on the same function are giving the same results.

* Serialization in CNNNetworkNGraphImpl::serialize executed via pass::Manager.

Co-authored-by: Gleb Kazantaev <gleb.nnstu@gmail.com>
* NGRAPH_CHECK messages refactored.

* Performance and const correctness refactoring.

* Style formatting applied.

* Code simplifaction.

* Serialize transformation documentation refactoring.

* Changed compare_function() to throw on functions with multiple outputs.

Before this check was implemented with assert which means it was working
only in debug builds. Now it is working also in release build.

* Adjust tests to new compare_functions() behaviour.

* Replace cmakes add_definitions with more modern target_compile_definitions

Co-authored-by: Gleb Kazantaev <gleb.nnstu@gmail.com>
24 files changed:
inference-engine/src/inference_engine/CMakeLists.txt
inference-engine/src/inference_engine/cnn_network_ngraph_impl.cpp
inference-engine/src/inference_engine/network_serializer.cpp [deleted file]
inference-engine/src/inference_engine/network_serializer.hpp [deleted file]
inference-engine/src/plugin_api/exec_graph_info.hpp
inference-engine/src/transformations/CMakeLists.txt
inference-engine/src/transformations/include/transformations/serialize.hpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/serialize.cpp [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/CMakeLists.txt
inference-engine/tests/functional/inference_engine/ir_serialization/deterministicity.cpp [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc.bin [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc.prototxt [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc.xml [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers.bin [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers.prototxt [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/add_abc_initializers.xml [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/addmul_abc.bin [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/addmul_abc.prototxt [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/addmul_abc.xml [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/split_equal_parts_2d.bin [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/split_equal_parts_2d.prototxt [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/models/split_equal_parts_2d.xml [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/serialize.cpp [new file with mode: 0644]
inference-engine/tests/functional/inference_engine/ir_serialization/transformation.cpp [new file with mode: 0644]