Add OpenVINO backend for Intel iGPU/dGPU (Arc)
All checks were successful
Mirror to GitHub / mirror (push) Successful in 1s
release / build (push) Successful in 2m12s

Mirrors the rocm/cuda pattern: ort::ep::OpenVINO with device_type "GPU"
(covers both Intel integrated graphics and Arc discrete GPUs through the
same EP), load-dynamic/dlopen so no OpenVINO toolkit is needed at build
time, and its own --openvino flag / backend = "openvino" config value.
Folded into the `full` feature alongside npu/rocm/cuda.

OpenVINO's provider options go through a generic key/value FFI interface
rather than a fixed C struct (unlike MIGraphX's OrtMIGraphXProviderOptions),
so it should be less exposed to the ABI-version-skew crash MIGraphX hit --
but that's inference from the EP's design, not verified against real
hardware. Like CUDA, this is compile-checked only: no Intel GPU in this
dev environment to runtime-verify against.

Version bump: breadmill 0.2.2 -> 0.2.3.
This commit is contained in:
Breadway 2026-07-03 22:58:27 +08:00
parent e5922e9c90
commit c6ed6a41d8
8 changed files with 112 additions and 35 deletions

View file

@ -1,6 +1,6 @@
[package]
name = "breadmill"
version = "0.2.2"
version = "0.2.3"
edition = "2021"
license = "MIT"
@ -14,13 +14,17 @@ npu = ["ort/vitis", "ort/load-dynamic"]
# libonnxruntime_providers_rocm.so, which most distros don't package.
rocm = ["ort/migraphx", "ort/load-dynamic"]
cuda = ["ort/cuda", "ort/load-dynamic"]
# Intel iGPU/dGPU (Arc) + CPU via OpenVINO. One EP covers Intel's whole
# hardware line by device_type string ("CPU"/"GPU"/"GPU.0"/"NPU"/"HETERO:...");
# we always request "GPU" since CPU is already covered by the cpu backend.
openvino = ["ort/openvino", "ort/load-dynamic"]
# All backends in one binary. Safe to combine: every backend here uses
# ort's load-dynamic (dlopen) mode, so none of this links against an actual
# NPU/ROCm/CUDA toolkit at build time — which ONNX Runtime actually gets
# loaded (and thus which EPs are really available) is decided at runtime by
# ORT_DYLIB_PATH / the dynamic linker, per the --npu/--rocm/--cuda flag or
# `backend` config value in use for that run.
full = ["npu", "rocm", "cuda"]
# NPU/ROCm/CUDA/OpenVINO toolkit at build time — which ONNX Runtime actually
# gets loaded (and thus which EPs are really available) is decided at
# runtime by ORT_DYLIB_PATH / the dynamic linker, per the --npu/--rocm/
# --cuda/--openvino flag or `backend` config value in use for that run.
full = ["npu", "rocm", "cuda", "openvino"]
[[bin]]
name = "breadmill"