Eltwise + ReLU merge is expected to be performed unconditionally
in all cases and since it does not require strides to be defined
could be performed before adjustDataLayout pass.
Unfortunately, there are cases with unexpected degradation after
such a change is introduced. In specific case it seems to be
caused by degradation in HW operation (convolution). It was not
investigated completely and reason is still unknown (convolution
itself remains unchanged in network, but for some reason works
slower).
It has been decided to introduce change only in case of dynamic
models to have performance benefit for some cases and avoid
degradations in others.
Moving mergeEltwiseAndReLU pass before adjustDataLayout for
dynamic cases allows to get additional performance gain due to
lack of extra copy stages introduced in adjustDataLayout.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][VPU][GT]: Introduce Split by dynamic dimension check
At the moment, myriad plugin does not support split operation
by dynamic axis. To be sure there is no issue with optimized-out
split operation which should have been replaced with copy
stage - assertion before DTS transformation is introduced.
Check should be performed before loop with DTS transformations
because it requires dynamic context (dynamic dimension should be
visible as dynamic), otherwise dynamic dimension would be
replaced with upper-bound estimation and check will always pass.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][nGraph]: Fixes normalize_axis symbol exporting
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* Remove 49 operators from layer creator
* Remove debug code
* Add specificCreator for deconvolution
* add specificCreator for logical not
* Fix concat creator behavior for negative axis
* add creator for TopK, overrides for visit_attribute methods
* remove layerCreator templates for removed ops
* Disable exception check for Deconvolution and TopK
* add specificCreator for stridedSlice
* add specificCreator for DetecionOutput
* resolve conflict with batchNormInference changes
* fix detection output visit_attributes for some of the bools
* Remove Ceiling from LayerCreator
* Change detectionOutput param validation to expect bool instead of uint
* detectionOutput specificCreator to set bool params as int strings
* Add vector of integer value accessor handling to xml deserializer.
* Fix indentation
* Add IEGeneric node type handling.
* Remove dependency on plugin_api library.
IEGeneric type name is passed via Visiotr API as new syntetic atribute.
* Add custom operations support
* Fix charachter literals comparison.
* Pass custom opsets to CNNNetwork:serialize().
IE extensions are stored in ngraph CNNNetwork and later used to pass
custom opsets to serialization transformation.
* Refactor custom ops tests to use template_extension library.
* Add comment on __generic_ie_type__ purpose.
* Loop op ngraph implementation, update IE IR Reader and ngraph to cnn converter
* refactoring SubGraphOp class
* type prop unit tests
* ngraph code style
* update comment
* single layer tests for Loop operation
* fix file name
* Add SpecialBodyPorts attribute in Loop op, update single layer tests
* first debug version
* more tests
* missing test file
* removed not needed shapes from test data
* move test data to new folder
* shape infer tests
* Added execution tests
* add several new tests cases, strict checks in Loop impl, temporary disable single layer tests
* ngraph codestyle, refactoring, clone_new_args test
* resolve review remarks
* fix build
* fix tests
* more execution tests
* add a new constructor of Loop op, resolve review remarks
* execution tests
* synchro with current version
* handle scalars and more tests
* scalar test enabled
* loop reference impl
* bug fixes in tests, onnx importer part and in the ref implementation of the Loop op
* applied remarks
* handle unsupported cases
* rewrite unit tests
* update INTERPRETER manifest
* is_termination_condition_always_true simplification
* [TEST] update python models tests
* review remarks
* added xfail to tiny_yolov3
* missing model test
* revert test data
* fixed numbers of failing tests
* fixed failed test description
* fix test message
* fix xfail test
* zoo models tests clean-up
* missing comma
Co-authored-by: Ivan Tikhonov <ivan.tikhonov@intel.com>
LoadNetwork takes network argument by constant reference.
Myriad plugin implementation applies transformations to
given network in order to get compiled model.
Transformations take network argument by non-constant
reference, so at some point of time network copy must be
acquired. ICNNNetwork is neither copyable nor movable, so
the only way to get network copy is using special utility
returning std::shared_ptr.
Myriad plugin does not expose any ownership strategy,
so prefers to take network argument by simple reference.
Plugin also requires nGraph -> CNN conversion during
LoadNetwork implementation. Conversion utilities returns
std::shared_ptr, which makes plugin to use workaround for
lifetime of converted object (to have 2 "pointers" to
network: raw pointer to input network and smart pointer to
converted network). Such workarounds make code more
error-prone, because using wrong pointer to semantically
the same object may lead to unexpected results.
To overcome these issues API has been changed in a way to
make interfaces more clear (do not expose ownership strategy
or mutability) and get rid of unnecessary workarounds.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>