Hello デバイス照会サンプル#

このサンプルでは、Query Device 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) 

    # --------------------------- ステップ 1. OpenVINO ランタイムコアを初期化 -------------------------------------------- core = ov.Core() 

    # --------------------------- ステップ 2. 利用可能なデバイスのメトリックを取得 -------------------------------------------- 
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 

/** 
 * OV パラメーターを出力 
 * @param OV パラメーターの参照 
 * @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 { 
        // -------- OpenVINO ランタイムのバージョンを取得 -------- 
        slog::info << ov::get_openvino_version() << slog::endl; 

        // -------- 入力引数の解析と検証 -------- 
        if (argc != 1) { 
            std::cout << "Usage : " << argv[0] << std::endl; 
            return EXIT_FAILURE; 
        } 

        // -------- ステップ 1. OpenVINO ランタイムコアを初期化 -------- 
        ov::Core core; 

        // -------- ステップ 2. 利用可能なデバイスのリストを取得 -------- 
        std::vector<std::string> availableDevices = core.get_available_devices(); 

        // -------- ステップ 3. サポートされているメトリックと構成キーの照会と出力 -------- 
        slog::info << "Available devices: " << slog::endl; 
        for (auto&& device : availableDevices) { 
            slog::info << device << slog::endl; 

            // サポートされているプロパティーを照会してすべてを出力 
            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

関連情報#