Files
openvino/docs/IE_DG/InferenceEngine_QueryAPI.md

85 lines
3.7 KiB
Markdown
Raw Normal View History

Introduction to Inference Engine Device Query API {#openvino_docs_IE_DG_InferenceEngine_QueryAPI}
===============================
This section provides a high-level description of the process of querying of different device properties and configuration values.
Refer to the [Hello Query Device Sample](../../inference-engine/samples/hello_query_device/README.md) sources and [Multi-Device Plugin guide](supported_plugins/MULTI.md) for example of using the Inference Engine Query API in user applications.
## Using the Inference Engine Query API in Your Code
The Inference Engine `Core` class provides the following API to query device information, set or get different device configuration properties:
* <code>InferenceEngine::Core::GetAvailableDevices</code> - Provides a list of available devices. If there are more than one instance of a specific device, the devices are enumerated with `.suffix` where `suffix` is a unique string identifier. The device name can be passed to all methods of the `InferenceEngine::Core` class that work with devices, for example `InferenceEngine::Core::LoadNetwork`.
* <code>InferenceEngine::Core::GetMetric</code> - Provides information about specific device.
<code>InferenceEngine::Core::GetConfig</code> - Gets the current value of a specific configuration key.
* <code>InferenceEngine::Core::SetConfig</code> - Sets a new value for the configuration key.
The `InferenceEngine::ExecutableNetwork` class is also extended to support the Query API:
* <code>InferenceEngine::ExecutableNetwork::GetMetric</code>
* <code>InferenceEngine::ExecutableNetwork::GetConfig</code>
* <code>InferenceEngine::ExecutableNetwork::SetConfig</code>
## Query API in the Core Class
### GetAvailableDevices
@snippet snippets/InferenceEngine_QueryAPI0.cpp part0
The function returns list of available devices, for example:
```
MYRIAD.1.2-ma2480
MYRIAD.1.4-ma2480
FPGA.0
FPGA.1
CPU
Feature/azaytsev/cherry picks from 2021 2 (#4069) * Added info on DockerHub CI Framework * Feature/azaytsev/change layout (#3295) * Changes according to feedback comments * Replaced @ref's with html links * Fixed links, added a title page for installing from repos and images, fixed formatting issues * Added links * minor fix * Added DL Streamer to the list of components installed by default * Link fixes * Link fixes * ovms doc fix (#2988) * added OpenVINO Model Server * ovms doc fixes Co-authored-by: Trawinski, Dariusz <dariusz.trawinski@intel.com> * Updated openvino_docs.xml * Added Intel® Iris® Xe Dedicated Graphics, naming convention info (#3523) * Added Intel® Iris® Xe Dedicated Graphics, naming convention info * Added GPU.0 GPU.1 * added info about Intel® Iris® Xe MAX Graphics drivers * Feature/azaytsev/transition s3 bucket (#3609) * Replaced https://download.01.org/ links with https://storage.openvinotoolkit.org/ * Fixed links # Conflicts: # inference-engine/ie_bridges/java/samples/README.md * Benchmarks 2021 2 (#3590) * Initial changes * Updates * Updates * Updates * Fixed graph names * minor fix * Fixed link * Implemented changes according to the review changes * fixed links * Updated Legal_Information.md according to review feedback * Replaced Uzel* UI-AR8 with Mustang-V100-MX8 * Feature/azaytsev/ovsa docs (#3627) * Added ovsa_get_started.md * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Updated the GSG topic, added a new image * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Formatting issues fixes * Revert "Formatting issues fixes" This reverts commit c6e6207431d8622e2ff083315d2d99875734a5b6. * Replaced to Security section * doc fixes (#3626) Co-authored-by: Nikolay Tyukaev <ntyukaev_lo@jenkins.inn.intel.com> # Conflicts: # docs/IE_DG/network_state_intro.md * fix latex formula (#3630) Co-authored-by: Nikolay Tyukaev <ntyukaev_lo@jenkins.inn.intel.com> * fix comments ngraph api 2021.2 (#3520) * fix comments ngraph api * remove whitespace * fixes Co-authored-by: Nikolay Tyukaev <ntyukaev_lo@jenkins.inn.intel.com> * Feature/azaytsev/g api docs (#3731) * Initial commit * Added content * Added new content for g-api documentation. Removed obsolete links through all docs * Fixed layout * Fixed layout * Added new topics * Added new info * added a note * Removed redundant .svg # Conflicts: # docs/get_started/get_started_dl_workbench.md * [Cherry-pick] DL Workbench cross-linking (#3488) * Added links to MO and Benchmark App * Changed wording * Fixes a link * fixed a link * Changed the wording * Links to WB * Changed wording * Changed wording * Fixes * Changes the wording * Minor corrections * Removed an extra point * cherry-pick * Added the doc * More instructions and images * Added slide * Borders for screenshots * fixes * Fixes * Added link to Benchmark app * Replaced the image * tiny fix * tiny fix * Fixed a typo * Feature/azaytsev/g api docs (#3731) * Initial commit * Added content * Added new content for g-api documentation. Removed obsolete links through all docs * Fixed layout * Fixed layout * Added new topics * Added new info * added a note * Removed redundant .svg * Doc updates 2021 2 (#3749) * Change the name of parameter tensorflow_use_custom_operations_config to transformations_config * Fixed formatting * Corrected MYRIAD plugin name * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Installation Guides formatting fixes * Fixed link to Model Optimizer Extensibility * Fixed link to Model Optimizer Extensibility * Fixed link to Model Optimizer Extensibility * Fixed link to Model Optimizer Extensibility * Fixed link to Model Optimizer Extensibility * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Fixed formatting * Updated IGS, added links to Get Started Guides * Fixed links * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Fixed formatting issues * Move the Note to the proper place * Removed optimization notice # Conflicts: # docs/ops/detection/DetectionOutput_1.md * minor fix * Benchmark updates (#4041) * Link fixes for 2021.2 benchmark page (#4086) * Benchmark updates * Fixed links Co-authored-by: Trawinski, Dariusz <dariusz.trawinski@intel.com> Co-authored-by: Nikolay Tyukaev <nikolay.tyukaev@intel.com> Co-authored-by: Nikolay Tyukaev <ntyukaev_lo@jenkins.inn.intel.com> Co-authored-by: Alina Alborova <alina.alborova@intel.com>
2021-02-02 11:29:12 +03:00
GPU.0
GPU.1
...
```
Each device name can then be passed to:
* `InferenceEngine::Core::LoadNetwork` to load the network to a specific device.
* `InferenceEngine::Core::GetMetric` to get common or device specific metrics.
* All other methods of the `Core` class that accept `deviceName`.
### GetConfig()
The code below demonstrates how to understand whether `HETERO` device dumps `.dot` files with split graphs during the split stage:
@snippet snippets/InferenceEngine_QueryAPI1.cpp part1
For documentation about common configuration keys, refer to `ie_plugin_config.hpp`. Device specific configuration keys can be found in corresponding plugin folders.
### GetMetric()
* To extract device properties such as available device, device name, supported configuration keys, and others, use the `InferenceEngine::Core::GetMetric` method:
@snippet snippets/InferenceEngine_QueryAPI2.cpp part2
A returned value looks as follows: `Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz`.
> **NOTE**: All metrics have specific type, which is specified during metric instantiation. The list of common device-agnostic metrics can be found in `ie_plugin_config.hpp`. Device specific metrics (for example, for `HDDL`, `MYRIAD` devices) can be found in corresponding plugin folders.
## Query API in the ExecutableNetwork Class
### GetMetric()
The method is used to get executable network specific metric such as `METRIC_KEY(OPTIMAL_NUMBER_OF_INFER_REQUESTS)`:
@snippet snippets/InferenceEngine_QueryAPI3.cpp part3
Or the current temperature of `MYRIAD` device:
@snippet snippets/InferenceEngine_QueryAPI4.cpp part4
### GetConfig()
The method is used to get information about configuration values the executable network has been created with:
@snippet snippets/InferenceEngine_QueryAPI5.cpp part5
### SetConfig()
The only device that supports this method is [Multi-Device](supported_plugins/MULTI.md).