Commit Graph

35 Commits

Author SHA1 Message Date
Gladilov, Gleb
e61a594199 [IE][VPU]: Configuration options in VPU plugins refactoring (#3211)
* [IE]: Enables Abstract class -> Parameter conversion support

Parameter has templated constructor allowing to write code

```
Parameter p = i; // i of type int for example
```

This constructor uses SFINAE to resolve ambiguity with
move-constructor, so checks that argument is not of the same type.
In case it's not the same type it calls std::tuple constructors that
constructs an instance of argument type. In the following case:

```
Parameter p = static_cast<Parameter>(abstractRef);
// abstractRef is a reference to abstract class
```

We have a reference to some abstract class that defines explicit
cast operator to Parameter. In contrast with expectations,
instead of cast operator, Parameter constructor is instantiated,
since template type deduction for Parameter constructor didn't fail
(abstract class has not the same type as Parameter). Instantiation
of tuple constructor used inside failed: it's impossible to create an
instance of abstract class what lead to compile-time error. To resolve
the issue additional condition introduced to check if argument type is
abstract.

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE]: Enables PrintTo method for Parameter and tests on it

Inference Engine API for configuration options uses Parameter
type as a return type of GetConfig method. Parameter is intended
to store object associated with configuration option.
To support objects of different types its constructor is templated.
Parameter overloads cast operators which are templated
as well. Both constructor and cast operators are implicit, which
makes it possible to implicitly convert any type to Parameter
and vice versa.

Since Parameter is a part of Inference Engine configuration API it's
essential google tests on API contain Parameter as tests parameter.
For each test parameter Google Test framework tries to print it to
an output stream. For that purpose, Google Test checks if test
parameter has output stream operator or PrintTo method. If not, it
checks if it could be implicitly converted to integral type and,
in this case, prints it as a long integer.

InferenceEngine::Parameter does not define output stream operator,
but could be implicitly converted to an integer, according cast
operators mentioned above, so Google Test tries to convert to
integer. Since Parameter not necessarily contains integer, this
conversion throws an exception of type mismatch, which makes it
impossible to use Parameter in Google Test framework as is.

In order to resolve that issue Parameter should define either
output stream operator or PrintTo method. If Parameter will
define output stream operator it will make it possible to compile
streaming almost any object to an output stream. The reason for it
is C++ checks if object could be implicitly converted to other type
which defines output stream operator, if objects itself doesn't do it
(e.g. `stream << "text";` calls std::string::operator<<, since
char const* is implicitly convertible to std::string).

Taking this into consideration the only way to support Parameter in
Google Test without breaking backward compatibility is define PrintTo
method.

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE]: Fixes ill-formed extending std names

According to the standard:

The behavior of a C++ program is undefined if
it adds declarations or definitions to namespace
std or to a namespace within namespace std unless
otherwise specified. A program may add a template
specialization for any standard library template
to namespace std only if the declaration depends
on a user-defined type and the specialization meets
the standard library requirements for the original
template and is not explicitly prohibited.

As as an unexpected result, InferenceEngine::Parameter
that contains std::vector<std::string> can be printed
via PrintTo. In that case operator<< version from
Inference Engine is picked up.

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Moves CompilationConfig out of GT header

Keeping config in a separate header simplifies migration
to new interface.

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Removes Platform enum

Since there is enum from MVNC for the same purpose
there is no need in Platform anyway

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Introduces containers utility header

Contains some helpers to work with C++ maps

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Introduces new configuration API

The main ideas are separate option-specific logic
from common container, automate logic processing
public vs private, deprecated, compile-time vs
runtime-time options and remove code duplication.

Since IE defines configuration API using std::string
and Parameter, options have to provide ways to be
represented as Parameter (ex.: GetConfig is called)
and be defined using std::string (ex.: SetConfig is
called). Keeping information about actual key value
is useful for error reporting.

New API fallbacks to previous version in case of
unsupported options are requested. This way migration
becomes iterative and looks simpler.

Options containers are related to corresponding components:
CompilationConfig (name to be changed) - GraphTransformer,
PluginConfiguration - base class for plugins configurations,
MyriadConfiguration - Myriad plugin configuration,
HDDLConfiguration - HDDL plugin configuration (to be
introduced in a separate request)

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Replaces CompilationConfig with PluginConfiguration

Some of options to be refactored are stored inside CompilationConfig.
CompilationConfig is passed to graph transformer as a compiler to be
processed. Since it's separate data structure and migration process
is iterative we need a mechanism to provide some of compilation
options from new interface and some from old. It cannot be done via
plugin specific class (MyriadConfiguration), since there are others
plugins as graph transformer users. Plugin specific class
(MyriadConfiguration) already inherits from old version (MyriadConfig),
which in turn inherits from ParsedConfig containing CompilationConfig.

To resolve the issue MyriadConfig inheritance from ParsedConfig is made
virtual to make it possible for PluginConfiguration to virtually inherit
from ParsedConfig as well an so make PluginConfiguration data structure
for configuration options for graph transformer. Since
PluginConfiguration is base class of MyriadConfiguration as well as
MyriadConfig and inheritance is virtual plugin just casts its specific
configuration to base one passing to graph transformer.

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Enables new tests on configuration API

* Enables following new shared tests on configuration API
  * Can load network with empty configuration
  * Check default value for configuration option
  * Can load network with correct configuration
  * Check custom value for configuration option (set and compare)
  * Check public configuration options are visible through API
  * Check private configuration options are invisible through API
  * Check GetConfig throws an exception on incorrect key
* Refactors myriad plugin instantiations for shared tests

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Extracts LogLevel enum to a separate header

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Refactors LOG_LEVEL configuration option

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Refactors COPY_OPTIMIZATION configuration option

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Fixes behavior tests build

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Updates tests on new exception class

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Removes unused variable from mvnc test

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>

* [IE][VPU]: Removes SizeVector streaming call

New assertion macro IE_ASSERT implementation uses
output streaming operator with r-value reference
argument as a stream. This prevents the compiler
from picking up overload from InferenceEngine::details,
since our version takes stream by non-const l-value
reference.

Since there is no simple solution to provide output
streaming operator overload for r-value references as
well and this call is just a message for assert in
test utilities, it was decided just to remove call
for now.

Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
2021-06-17 18:54:39 +03:00
Ilya Lavrenov
eff9f00320 Refactored ie_plugin_config.hpp (#5899) 2021-06-01 16:31:29 +03:00
Ilya Lavrenov
12f2bb72da Updates on deprecated stuff (#5838)
* Removed cloneFunction from ngraph CNNNetwork impl

* Removed custom clone

* Localize deprecation suppressions

* Removed Jira tickets

* Fixed MYRIAD tests compilation on Windows
2021-05-27 16:14:07 +03:00
Ilya Lavrenov
5b8b2141d4 Removing legacy from new tests infra (#5846)
* Removed old stuff

* Moved more stuff to old helpers

* Rewritten LRN tests

* Removed IRBuild_v6

* Fixed caching tests by changing test function

* Removed Jira tickets
2021-05-27 00:11:13 +03:00
Ilya Lavrenov
181ad06668 Auto (#5645)
* Added LoadNetwork(filename) to AUTO

* Added more files

* So pointer can be used without loading

* Changed InferencePlugin, ICore to return internal interfaces

* Added SoPointers for InferRequest, ExecutableNetwork

* Fixed Windows

* Fixed KMB

* Fixes for KMB

* Removed dereference operator

* Play with include files

* Fixed compilation with older compilers

* Fixed comments

* Fixed win build

* Try  to fix Windows

* Try  to fix Windows 2

* Fixed windows

* Fixed windows

* Removed SOPointer as a base class

* Reverted back SOPointer split

* Code review

Co-authored-by: apankratovantonp <anton.pankratov@intel.com>
2021-05-19 13:18:58 +03:00
Ilya Lavrenov
c76c0eb39e Moved ie_tests to legacy (#5561)
* Removed obsolete tests files

* Removed old SLT

* Moved ie_tests to legacy
2021-05-12 12:57:48 +03:00
Irina Efode
935405ad2d [IE TESTS] Remove dummy file for beh tests (#5436) 2021-05-06 12:56:09 +03:00
Ilya Lavrenov
c350f61a42 Move all base wrapper classes from Plugin API to source folder (#5419)
* Small refactoring in TEMPLATE plugin

* Fixed compilation on Windows

* Fixed code style

* Hide CALL_STATUS_FNC helpers to private API

* Moved some base classes to private place from plugin_api

* Updates for VariableState creation

* Take Jane's changes for Demension names

* Revert "Take Jane's changes for Demension names"

This reverts commit 9f6c8fa5a6.

* Removed ICNNNetwork include

* removed more icnnnetwork includes

* Added missed include with ie_input_info.hpp

* Fixed GNA plugin to provide names w/o \0
2021-04-29 19:50:46 +03:00
Anton Pankratv
b20d9b725c Used internal exec network impl (#4922) 2021-04-08 12:29:41 +03:00
Alexey Suhov
a748c26fee Align copyright notice in cpp and cmake source files (CVS-51320) (#4950) 2021-03-25 02:40:09 +03:00
Anton Pankratv
a2b8b974b8 Simplified IE Exceptions Implementation (#4258) 2021-03-18 16:30:16 +03:00
Ilya Lavrenov
24fb09edb3 Improvements in cmake scripts (#4766)
1. Find Threads only once in IEDevScripts package
2. Small refactoring in IE Dev Package
2021-03-15 13:07:38 +03:00
Ilya Lavrenov
9cfe909e1e Unused variables (#3963)
* Added -Wused-variable flag

* Fixes for clang compiler

* Removed wrong -Wno-error from protobuf compilation

* More fixes
2021-01-22 17:41:15 +03:00
Ilya Lavrenov
61ccde700f Refactored VPU tests not to use old interfaces (#3888)
* Refactored VPU tests not to use old interfaces

* Added except of exceptions

* Commented failing part of HDDL tests
2021-01-21 15:05:12 +03:00
Ilya Lavrenov
9465073f58 Introduce IEDevScripts package (#3661)
* Refactored developer package

* Added fuzzing for CMAKE_MODULE_LINKER_FLAGS as well

* Added options for developer package

* More improvements

* Further improvements

* Removed global CMAKE_MODULE_PATH population

* Fixes

* Final fixes

* Fixed python build

* Fix for TBB

* Fixed Find TBB

* Fixed install

* Fixes for OV features

* Split developer targets per component

* Fixed IE build tree config

* Fixed ITT

* Fixed review comments

* Clean export dependencies

* Fixed export of pugixml

* Added IEDevScripts_DIR for Android

* Fixed Android #2

* Fixed Android #3

* Fixed python cc

* Disabled Core threading tests on GNA
2020-12-22 18:44:59 +03:00
Ilya Lavrenov
9ca5fbaf02 Reshape v7: remove (#1379)
* Removed shape inference fr IR v7 and older

* Disabled dynamic batch tests which require reshape

* Fixes tests 2

* Disabled MKLDNN tests with convolution reshape

* Fixed GPU tests

* Disable VPU tests with batch size > 1 for old IRs

* Removed most of shape infer functions for old representation

* Removed most of CNNLayer validators

* Fixed validators and keep only parseParams

* Removed tests on invalid IR v7

* Disabled more VPU tests

* Removed Backetize validator

* Disable one more Myriad tests case where reshape for old IR is needed

* Removed useless reshape

* Need to replace GRUCell with Unique

* Moved shape infer functions for experimental layers to Core IE

* Fixed shape inference functions not to depend on legacy

* Added missed SparseToDense

* Added descriptive error message

* Fixed comments
2020-09-15 15:08:17 +03:00
Andrey Chekhonin
b683b5501d [IE][VPU]: Fix behavior tests for MXpcie (#1879)
* Moved mem type patching under USB protocol switch
* Myriad beh tests fix
2020-09-07 10:38:07 +03:00
Nikita Kudriavtsev
4b348500d4 [IE][VPU]: Reduce XLink log level in AOTBehaviorTests (#2044) 2020-09-04 11:59:51 +03:00
Maksim Doronin
66aa119b11 [IE][VPU]: Refactor vpu configs (#1334)
* [IE][VPU]: Refactor vpu configs

* [IE][VPU][GT]: Refactor vpu configs usage in GT

* [IE][VPU]: Refactor vpu configs usage in myriad plugin

* [IE][VPU]: Refactor vpu configs usage in tests

* [IE][VPU]: Refactor vpu configs usage in deprecated_tests

* [IE][VPU]: Refactor vpu configs usage in tools

* [IE][VPU]: Use hddl metric vars instead of macros

* [IE][VPU]: style fixes

* [IE][VPU]: Replace MYRIAD_FORCE_RESET with MYRIAD_ENABLE_FORCE_RESET

* [IE][VPU]: Resolve confilcts with MYRIAD_TILING_CMX_LIMIT_KB

* [IE][VPU]: Remove MYRIAD_PLATFORM from tools

* [IE][VPU]: Fix DISABLE_REORDER config in StridedSlice

* [IE][VPU]: Redesign config headers hierarchy

* [IE][VPU]: Clarify comments related to vpu configs

* [IE][VPU]: Leave default values of deprecated configs

* [IE][VPU]: Revert beh tests on VPU_MYRIAD_PLATFORM

* [IE][VPU]: Revert beh tests with deprecated configs

* [IE][VPU]: Resolve conflicts

* [IE][VPU]: Revert opencv dependency
2020-08-17 17:30:38 +03:00
Ilya Lavrenov
a4dcfed1a9 Simplified plugin interfaces (#1745)
* Simplified plugin interface

* Allow not implemented

* Fixes

* Fixed CPU plugin tests

* Fixed tests dependencies

* Fixes

* Fixed GPU plugin compilation

* Renamed plugin

* Fixes

* Removed tests for plugin base

* Fix2

* Fix 2

* Define a macro to define plugin creation function

* Clean-up

* Fixed OSX build

* Fixed CentOS

* Fixed exception catch / throw

* Fixed clang issue

* Fixed python tests on macOsx
2020-08-14 12:11:54 +03:00
Ilya Lavrenov
a7579d5c35 Removed ICNNNetReader interface (#1042)
* Removed ICNNNetReader interface

* Fixed stress tests

* Fixed comments in VPU plugin

* Removed duplicated stress tests

* Fixed watchdog tests
2020-06-23 22:34:26 +03:00
Anton Zaytsev
34de464027 [IE TESTS] move BehaviorTestPlugin to the new IE tests infra & small refactoring for Behavior tests (#784)
* [ci-skip][IE TESTS] move beh_test_plugin

* [ci-skip][IE TESTS] move BehaviorHolderTest

* [ci-skip][IE TESTS] fix GNA layout test

* [ci-skip][IE TESTS] fix cmake

* [ci-skip][IE TESTS] fix lib in IEBehaviorTest

* [ci-skip][IE TESTS] separate layout and cpp_wrapers test and fix namespace

* [ci-skip][IE TESTS] fix holders test

* [ci-skip][IE TESTS] fix namespace

* [ci-skip][IE TESTS] fix codestyle

* [ci-skip][IE TESTS] fix test_plugin

* [ci-skip][IE TESTS] fix test_plugin v2

* [ci-skip][IE TESTS] disabled gpu instance for test_plugin

* [ci-skip][IE TESTS] fix
2020-06-23 21:43:13 +03:00
Ilya Lavrenov
0b2827e027 Moved plugin to hidden folder (#999) 2020-06-19 21:04:12 +03:00
Ilya Lavrenov
e8aed763d2 Removed Int8 normalizer and statistics (#919)
* Removed Int8 normalizer and statistics

* Removed statistics handling from tests utils

* Fixed tests compilation with statistics
2020-06-19 15:10:21 +03:00
Ilya Lavrenov
3bfc35b3fc Execution graph via ngraph for CPU plugin (#510)
* Execution graph via ngraph for CPU plugin

* Fixes

* Migrated to VariantImpl instead of Parameter

* Reverted to dedicated ExecutionNode once again

* Re-use new execution graph in tests

* Fixed one more tests to use execution graph via ngraph::Function
2020-06-17 14:42:41 +03:00
Nikita Kudriavtsev
ac65ea30fd [ICV] Watchdog switch + ddr initialization (#554)
* [IE Myriad] Added XLinkBootFirmware method in XLink API for booting firmware buffer

* [IE Myriad] Patch firmware in mvnc. Added test to check device reset without connecting.

* [IE Myriad] Added option MOVIDIUS_DDR_TYPE for Myriad plugin

* [IE Myriad] Added tests for new option MOVIDIUS_DDR_TYPE

* [IE Myriad] Update firmware 1201 -> 1212

* [IE Myriad] Convolution3x3 tests are disabled due to firmware issue. #-32921
2020-06-08 20:51:45 +03:00
Anton Zaytsev
b457553593 [IE TESTS] Move InferRequestTests (#618)
* [IE TESTS] move Infer_request tests

* fix v0

* [ci-skip][IE TESTS] test update basic class v0

* [ci-skip][IE TESTS] test update basic class v1

* [ci-skip][IE TESTS] test update basic class

* [ci-skip][IE TESTS] test update basic class v3

* [ci-skip][IE TESTS] test update basic class final versions

* [ci-skip][IE TESTS] fix

* [ci-skip][IE TESTS] fix codestaly and comment

Co-authored-by: Irina Efode <irina.efode@intel.com>
2020-06-03 12:16:00 +03:00
Anton Zaytsev
00b53d6c33 [IE TESTS] Move Config behavior tests (#615)
* [ci-skip][IE TESTS] move config test

* [ci-skip][IE TESTS] fix config
2020-05-28 13:55:37 +03:00
Anton Zaytsev
25d36568f8 [IE TESTS] Move ExecGraphInfoTests (#617)
* [ci-skip][IE TESTS] move ExecGraph test

* [ci-skip][IE TESTS] fix

* [ci-skip][IE TESTS] fix codestyle

Co-authored-by: Zaytsev, Anton <antonzay@intel.com>
2020-05-28 13:48:16 +03:00
Ilya Churaev
3c718809d3 Added ONNX reader for the OpenVINO (#532)
* Added ONNX reader for the OpenVINO

* Fixed comments

* Fixed comments

* Fixed message

* Fixed memory consumption

* Revert IReaderPtr

* Fixed Myriad tests

* Fixed comment

* Renamed inference_engine_ir_readers to inference_engine_ir_reader
2020-05-27 18:37:19 +03:00
Alexey Suhov
deb008a26f publish master branch snapshot, revision 8d31237e2c3f673cbb0f0ba110fc10f5cce1d2bb 2020-05-22 02:23:12 +03:00
Alexey Suhov
f30dcc218c publish master branch snapshot, revision 9df5eb1f84e13a35720a918f88324561222ab114 2020-05-20 01:13:06 +03:00
Alexey Suhov
ba0a339888 publish master branch snapshot, revision 59af1853ca21ea08acf17b177da0b239753deb46 2020-05-18 17:21:58 +03:00
Alexey Suhov
5b428f0655 publish master branch snapshot, revision 49482ae3bea0cbaa07474f86f36db11943142687 2020-05-13 21:12:22 +03:00
Alexey Suhov
357cc7eb4c publish master branch snapshot, revision 0110d9c98fd7209589d06344f0d836f61d81f4b3 2020-04-27 21:21:29 +03:00