推理设备支持

OpenVINO™ 运行时可以使用以下设备类型来推理深度学习模型:

有关更详细的硬件列表,请参见 支持的设备

对于与我们用于基准测试的设备类似的设备,可以使用 英特尔® DevCloud for the Edge (一种可以访问英特尔® 硬件的远程开发环境)和最新版本的英特尔® 发行版 OpenVINO™ 工具套件进行访问。 了解更多信息在此处注册

功能支持表

下表展示了 OpenVINO™ 器件插件支持的关键功能。

功能

CPU

GPU

GNA

Arm® CPU

异构执行

多设备执行

部分

自动批处理

多流执行

模型缓存

部分

动态形状

部分

导入/导出

预处理加速

部分

有状态模型

扩展性

有关插件特定功能限制的更多详细信息,请参见相应的插件页面。

枚举可用设备

OpenVINO™ 运行时 API 具有枚举设备及其功能的专用方法。请参阅 Hello 查询设备 C++ 样本 。这是样本的示例输出(仅截断为设备名称):

./hello_query_device
Available devices:
    Device: CPU
...
    Device: GPU.0
...
    Device: GPU.1
...
    Device: HDDL

枚举设备并与多设备配合使用的简单编程方式如下:

ov::Core core;
std::shared_ptr<ov::Model> model = core.read_model("sample.xml");
std::vector<std::string> availableDevices = core.get_available_devices();
std::string all_devices;
for (auto && device : availableDevices) {
    all_devices += device;
    all_devices += ((device == availableDevices[availableDevices.size()-1]) ? "" : ",");
}
ov::CompiledModel compileModel = core.compile_model(model, "MULTI",
    ov::device::priorities(all_devices));

除了典型的“CPU”、“GPU”、“HDDL”等之外,当设备的多个实例可用时,名称会更有限定性。例如,在 hello_query_sample 中这样枚举两个英特尔® Movidius™ Myriad™ X 电脑棒。

...
    Device: MYRIAD.1.2-ma2480
...
    Device: MYRIAD.1.4-ma2480

因此,使用这两者的显式配置将是“MULTI:MYRIAD.1.2-ma2480,MYRIAD.1.4-ma2480”。因此,循环遍历“MYRIAD”类型的所有可用设备的代码如下:

ov::Core core;
std::vector<std::string> GPUDevices = core.get_property("GPU", ov::available_devices);
std::string all_devices;
for (size_t i = 0; i < GPUDevices.size(); ++i) {
    all_devices += std::string("GPU.")
                            + GPUDevices[i]
                            + std::string(i < (GPUDevices.size() -1) ? "," : "");
}
ov::CompiledModel compileModel = core.compile_model("sample.xml", "MULTI",
    ov::device::priorities(all_devices));