OpenVINO 2019 C++代码检测CPU/VPU设备的正确方法(原2018API已失效)
检测OpenVINO 2019中CPU和VPU设备的C++实现
嘿,刚好我对OpenVINO 2019的API变更挺熟悉的,给你说下C++里检测CPU和VPU设备的正确姿势:
OpenVINO 2019引入了统一的InferenceEngine::Core类,替代了2018版本中分散的插件加载和设备检测API(比如旧的PluginDispatcher),这也是官方推荐的新用法。
核心步骤
- 初始化
Core对象:它会自动扫描并加载系统中所有可用的OpenVINO插件 - 获取所有可用设备列表:通过
GetAvailableDevices()方法得到设备ID集合 - 筛选目标设备:判断设备ID是否为
"CPU"(对应CPU设备)或"MYRIAD"(对应VPU设备,比如Intel神经计算棒) - 可选:获取设备详细信息:用
GetMetric()获取设备的友好名称、支持的精度等元数据
完整代码示例
#include <inference_engine.hpp> #include <iostream> #include <vector> using namespace InferenceEngine; int main() { try { // 初始化Core实例,自动加载所有可用插件 Core ie; // 获取系统中所有可用的设备ID std::vector<std::string> available_devices = ie.GetAvailableDevices(); std::cout << "检测到的可用设备:\n" << std::endl; for (const auto& device_id : available_devices) { std::cout << "设备ID: " << device_id << std::endl; // 获取设备的完整名称(友好标识) std::string full_name = ie.GetMetric(device_id, METRIC_KEY(FULL_DEVICE_NAME)).as<std::string>(); std::cout << " 完整名称: " << full_name << std::endl; // 识别CPU和VPU if (device_id == "CPU") { std::cout << " ✅ 这是CPU设备" << std::endl; } else if (device_id == "MYRIAD") { std::cout << " ✅ 这是VPU(Myriad)设备" << std::endl; } std::cout << "-------------------------\n"; } } catch (const std::exception& ex) { std::cerr << "出错啦:" << ex.what() << std::endl; return 1; } return 0; }
额外说明
- 如果你需要验证设备是否支持特定功能(比如FP16精度、特定层),可以用
GetMetric()获取更多指标,比如METRIC_KEY(SUPPORTED_CONFIG_KEYS)或METRIC_KEY(SUPPORTED_METRICS) - 编译时要确保链接正确的OpenVINO库:比如
inference_engine.lib,以及对应设备的插件库(cpu_extension.lib、myriadPlugin.lib等) - 2019版本彻底移除了旧的插件手动加载流程,所有设备管理都通过
Core类完成,这也是未来版本的统一标准
内容的提问来源于stack exchange,提问作者Remi_TRish
相关产品推荐
相关产品推荐

