OpenVINO 2022.3+ 必须使用 ov::Core 替代已弃用的 InferenceEngine::Core,统一采用 ov::Core + ov::Model + ov::CompiledModel 三件套,头文件改用 #include <openvino/openvino.hpp>,模型须先转为IR格式(v10/v11),加载时需严格匹配设备名大小写与版本,并手动管理输入输出张量内存。

OpenVINO 2022.3+ 版本必须用 ov::Core 替代旧版 InferenceEngine::Core
旧教程里满屏的 InferenceEngine::Core 和 IENetwork 在 OpenVINO 2022.3(含)之后已彻底弃用,继续用会编译失败或运行时崩溃。新 API 统一为 ov::Core + ov::Model + ov::CompiledModel 三件套。
实操要点:
- 头文件改用
#include <openvino></openvino>,别再包含inference_engine.hpp -
ov::Core构造后直接调用read_model()加载.xml(IR v10/v11 格式),不支持原始 ONNX/PyTorch 模型直读 - 模型必须先转成 OpenVINO IR 格式(用
mo.py或convert_model工具),否则read_model()报[ ERROR ] Cannot load model - CPU 推理默认启用多线程(
CPU设备),GPU 需显式指定"GPU"并确保已安装 Intel Graphics Driver 和 GPU Plugin
加载模型时指定设备名要小心大小写和后缀
"CPU"、"GPU"、"AUTO" 是合法设备名,但 "cpu" 或 "gpu" 会静默回退到 CPU,且不报错;"GPU.0" 这类带索引的写法仅在多 GPU 场景下有效,单卡写 "GPU" 就够了。
常见陷阱:
立即学习“C++免费学习笔记(深入)”;
-
core.compile_model(model, "GPU")在无核显机器上会抛出Unknown device: GPU异常,需提前用core.get_available_devices()检查 -
"AUTO"模式虽自动选设备,但默认优先 CPU;如想让 GPU 优先,得写"AUTO:GPU,CPU" - Intel Arc 独立显卡需用
"GPU.1"(取决于lspci | grep VGA中的 PCI ID 顺序),不是所有"GPU.*"都能被识别
ov::InferRequest 必须显式分配输入内存并同步等待结果
和旧版不同,ov::InferRequest 不再自动管理输入/输出张量内存,必须手动调用 set_input_tensor() 和 get_output_tensor(),否则推理结果是随机内存垃圾。
关键步骤:
- 用
compiled_model.create_infer_request()创建请求后,先调infer_request.set_input_tensor(input_tensor),其中input_tensor需用ov::Tensor构造,类型、尺寸、布局必须与模型输入完全一致(比如 NHWC 模型喂 NCHW 数据会静默出错) - 调
infer_request.infer()是同步阻塞调用;若想异步,得用infer_request.start_async()+infer_request.wait() - 输出 tensor 获取后,要用
tensor.data<float>()取指针,别直接用tensor.data()(返回void*,容易误读)
Intel GPU 推理性能差?检查驱动、插件和精度设置
实测中 GPU 推理比 CPU 还慢,大概率不是代码问题,而是环境配置偏差。
排查点:
- 确认 Intel Graphics Driver 版本 ≥ 26.20.100.8141(对应 Arc A750/A770),老驱动对 OpenVINO 2023.0+ 支持不全
- GPU Plugin 默认用 FP16 精度,但某些模型(尤其含自定义 OP 的)可能 fallback 到 FP32,用
ov::hint::inference_precision(ov::element::f16)显式指定可避免 - Linux 下需设置
export OPENCL_VENDOR=INTEL,否则 OpenCL runtime 可能加载错 vendor - Windows 上若用 WSL2,GPU 不可用——OpenVINO 的 GPU Plugin 不支持 WSL2 的 OpenCL 透传
最常被忽略的是模型 IR 版本和 Plugin 兼容性:用 OpenVINO 2023.0 转的 IR v11 模型,在 2022.3 的 runtime 上加载会失败,错误信息是 Unsupported opset version。版本必须严格对齐。


















