Hello デバイス照会サンプル¶
このサンプルでは、デバイス照会 API 機能を使用して OpenVINO™ ランタイムデバイスを表示し、そのメトリックとデフォルトの構成値を出力する方法を示します。サンプルをビルドするには、「サンプルを使ってみる」の「サンプル・アプリケーションをビルド」セクションにある手順を参照してください。
どのように動作するか¶
このサンプルでは、利用可能なすべての OpenVINO™ ランタイムデバイスを照会し、サポートされているメトリックとプラグイン構成パラメーターを出力します。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2018-2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
import logging as log
import sys
import openvino as ov
def param_to_string(parameters) -> str:
"""Convert a list/tuple of parameters returned from OV to a string."""
if isinstance(parameters, (list, tuple)):
return ', '.join([str(x) for x in parameters])
else:
return str(parameters)
def main():
log.basicConfig(format='[ %(levelname)s ] %(message)s', level=log.INFO, stream=sys.stdout)
# --------------------------- Step 1. Initialize OpenVINO Runtime Core --------------------------------------------
core = ov.Core()
# --------------------------- Step 2. Get metrics of available devices --------------------------------------------
log.info('Available devices:')
for device in core.available_devices:
log.info(f'{device} :')
log.info('\tSUPPORTED_PROPERTIES:')
for property_key in core.get_property(device, 'SUPPORTED_PROPERTIES'):
if property_key not in ('SUPPORTED_PROPERTIES'):
try:
property_val = core.get_property(device, property_key)
except TypeError:
property_val = 'UNSUPPORTED TYPE'
log.info(f'\t\t{property_key}: {param_to_string(property_val)}')
log.info('')
# -----------------------------------------------------------------------------------------------------------------
return 0
if __name__ == '__main__':
sys.exit(main())
// Copyright (C) 2018-2024 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <cstdlib>
#include <iomanip>
#include <memory>
#include <set>
#include <string>
#include <tuple>
#include <vector>
// clang-format off
#include "openvino/openvino.hpp"
#include "samples/common.hpp"
#include "samples/slog.hpp"
// clang-format on
/**
* @brief Print OV Parameters
* @param reference on OV Parameter
* @return void
*/
void print_any_value(const ov::Any& value) {
if (value.empty()) {
slog::info << "EMPTY VALUE" << slog::endl;
} else {
std::string stringValue = value.as<std::string>();
slog::info << (stringValue.empty() ? "\"\"" : stringValue) << slog::endl;
}
}
int main(int argc, char* argv[]) {
try {
// -------- Get OpenVINO runtime version --------
slog::info << ov::get_openvino_version() << slog::endl;
// -------- Parsing and validation of input arguments --------
if (argc != 1) {
std::cout << "Usage : " << argv[0] << std::endl;
return EXIT_FAILURE;
}
// -------- Step 1. Initialize OpenVINO Runtime Core --------
ov::Core core;
// -------- Step 2. Get list of available devices --------
std::vector<std::string> availableDevices = core.get_available_devices();
// -------- Step 3. Query and print supported metrics and config keys --------
slog::info << "Available devices: " << slog::endl;
for (auto&& device : availableDevices) {
slog::info << device << slog::endl;
// Query supported properties and print all of them
slog::info << "\tSUPPORTED_PROPERTIES: " << slog::endl;
auto supported_properties = core.get_property(device, ov::supported_properties);
for (auto&& property : supported_properties) {
if (property != ov::supported_properties.name()) {
slog::info << "\t\t" << (property.is_mutable() ? "Mutable: " : "Immutable: ") << property << " : "
<< slog::flush;
print_any_value(core.get_property(device, property));
}
}
slog::info << slog::endl;
}
} catch (const std::exception& ex) {
std::cerr << std::endl << "Exception occurred: " << ex.what() << std::endl << std::flush;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
実行¶
サンプルにはコマンドライン・パラメーターがありません。レポートを取得するには、次のコマンドを実行します。
python hello_query_device.py
hello_query_device
サンプルの出力¶
アプリケーションは、使用可能なすべてのデバイスとサポートされているメトリックの構成パラメーターのデフォルト値とともに出力します。
例:
[ INFO ] Available devices:
[ INFO ] CPU :
[ INFO ] SUPPORTED_PROPERTIES:
[ INFO ] AVAILABLE_DEVICES:
[ INFO ] FULL_DEVICE_NAME: Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz
[ INFO ] OPTIMIZATION_CAPABILITIES: FP32, FP16, INT8, BIN
[ INFO ] RANGE_FOR_ASYNC_INFER_REQUESTS: 1, 1, 1
[ INFO ] RANGE_FOR_STREAMS: 1, 8
[ INFO ] IMPORT_EXPORT_SUPPORT: True
[ INFO ] CACHE_DIR:
[ INFO ] ENABLE_CPU_PINNING: NO
[ INFO ] INFERENCE_NUM_THREADS: 0
[ INFO ] NUM_STREAMS: 1
[ INFO ] DUMP_EXEC_GRAPH_AS_DOT:
[ INFO ] INFERENCE_PRECISION_HINT: f32
[ INFO ] EXCLUSIVE_ASYNC_REQUESTS: NO
[ INFO ] PERFORMANCE_HINT:
[ INFO ] PERFORMANCE_HINT_NUM_REQUESTS: 0
[ INFO ] PERF_COUNT: NO
[ INFO ] OpenVINO Runtime version ......... <version>
[ INFO ] Build ........... <build>
[ INFO ]
[ INFO ] Available devices:
[ INFO ] CPU
[ INFO ] SUPPORTED_PROPERTIES:
[ INFO ] AVAILABLE_DEVICES : [ ]
[ INFO ] FULL_DEVICE_NAME : Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz
[ INFO ] OPTIMIZATION_CAPABILITIES : [ FP32 FP16 INT8 BIN ]
[ INFO ] RANGE_FOR_ASYNC_INFER_REQUESTS : { 1, 1, 1 }
[ INFO ] RANGE_FOR_STREAMS : { 1, 8 }
[ INFO ] IMPORT_EXPORT_SUPPORT : true
[ INFO ] CACHE_DIR : ""
[ INFO ] ENABLE_CPU_PINNING : NO
[ INFO ] INFERENCE_NUM_THREADS : 0
[ INFO ] NUM_STREAMS : 1
[ INFO ] DUMP_EXEC_GRAPH_AS_DOT : ""
[ INFO ] INFERENCE_PRECISION_HINT : f32
[ INFO ] EXCLUSIVE_ASYNC_REQUESTS : NO
[ INFO ] PERFORMANCE_HINT : ""
[ INFO ] PERFORMANCE_HINT_NUM_REQUESTS : 0
[ INFO ] PERF_COUNT : NO