Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 17 additions & 16 deletions .ci/scripts/setup-openvino.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,27 @@ for arg in "$@"; do
esac
done

# Download and install OpenVINO from release packages
OPENVINO_VERSION="2026.0"
OPENVINO_BUILD="2026.0.0.20965.c6d6a13a886"
OPENVINO_STABLE_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/${OPENVINO_VERSION}/linux/openvino_toolkit_ubuntu22_${OPENVINO_BUILD}_x86_64.tgz"

OPENVINO_NIGHTLY_BUILD_ID="2026.1.0-21310-c694fbc2b6d"
OPENVINO_NIGHTLY_BUILD="2026.1.0.dev20260312"
OPENVINO_NIGHTLY_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/nightly/${OPENVINO_NIGHTLY_BUILD_ID}/openvino_toolkit_ubuntu22_${OPENVINO_NIGHTLY_BUILD}_x86_64.tgz"

OPENVINO_PACKAGES_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages"
if [ "${USE_NIGHTLY}" = true ]; then
OPENVINO_URL="${OPENVINO_NIGHTLY_URL}"
OPENVINO_EXTRACTED_DIR="openvino_toolkit_ubuntu22_${OPENVINO_NIGHTLY_BUILD}_x86_64"
echo "Using OpenVINO nightly build: ${OPENVINO_NIGHTLY_BUILD_ID}"
# Only for quick testing. OpenVINO deletes nightlies after a few months, so
# take the newest one instead of pinning a build that will disappear.
OPENVINO_URL=$(curl -fsSL --retry 3 --retry-all-errors "${OPENVINO_PACKAGES_URL}/nightly/latest.txt" | sed -n 's/^ubuntu22_x86_64://p')
: "${OPENVINO_URL:?could not get the ubuntu22_x86_64 nightly from latest.txt}"
OPENVINO_SHA256=$(curl -fsSL --retry 3 --retry-all-errors "${OPENVINO_URL}.sha256" | sed -nE 's/^([0-9a-f]{64}).*/\1/p')
: "${OPENVINO_SHA256:?could not get the SHA-256 of the nightly from its .sha256 file}"
else
OPENVINO_URL="${OPENVINO_STABLE_URL}"
OPENVINO_EXTRACTED_DIR="openvino_toolkit_ubuntu22_${OPENVINO_BUILD}_x86_64"
echo "Using OpenVINO stable release: ${OPENVINO_BUILD}"
OPENVINO_VERSION="2026.4.1"
OPENVINO_BUILD="2026.4.1.22982.07f9c262b05"
OPENVINO_SHA256="e2541afe65a81d5aabe981f9a86ad2c7efe557922b71e5649b6aafffec7c982b"
OPENVINO_URL="${OPENVINO_PACKAGES_URL}/${OPENVINO_VERSION}/linux/openvino_toolkit_ubuntu22_${OPENVINO_BUILD}_x86_64.tgz"
fi
OPENVINO_EXTRACTED_DIR=$(basename "${OPENVINO_URL}" .tgz)
echo "Using OpenVINO: ${OPENVINO_EXTRACTED_DIR}"

curl -Lo /tmp/openvino_toolkit.tgz --retry 3 --retry-all-errors --fail ${OPENVINO_URL}
curl -Lo /tmp/openvino_toolkit.tgz --retry 3 --retry-all-errors --fail "${OPENVINO_URL}"
# The storage server answers a missing file with an HTML page and HTTP 200, so
# compare the download with the expected hash before extracting it.
echo "${OPENVINO_SHA256} /tmp/openvino_toolkit.tgz" | sha256sum -c -
tar -xzf /tmp/openvino_toolkit.tgz
mv "${OPENVINO_EXTRACTED_DIR}" openvino

Expand Down
2 changes: 1 addition & 1 deletion .ci/scripts/test_backend.sh
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ fi

if [[ "$FLOW" == *openvino* ]]; then
# Setup OpenVINO environment
source .ci/scripts/setup-openvino.sh --nightly
source .ci/scripts/setup-openvino.sh
EXTRA_BUILD_ARGS+=" -DEXECUTORCH_BUILD_OPENVINO=ON"
fi

Expand Down
3 changes: 1 addition & 2 deletions .ci/scripts/test_yolo26.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,7 @@ if [[ "${MODE}" =~ .*openvino.* ]]; then
OPENVINO=ON
TARGET_LIBS="$TARGET_LIBS openvino_backend "

# Install specific OpenVINO runtime from pip.
$PYTHON_EXECUTABLE -m pip install --pre openvino==2026.1.0.dev20260131 --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly
$PYTHON_EXECUTABLE -m pip install openvino==2026.4.1
$PYTHON_EXECUTABLE -m pip install -r backends/openvino/requirements.txt

# Set OPENVINO_LIB_PATH so the C++ demo runner can also find libopenvino_c.so.
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test-backend-openvino.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ on:
- ciflow/nightly/*
pull_request:
paths:
- .ci/scripts/setup-openvino.sh
- .ci/scripts/test_backend.sh
- .github/workflows/test-backend-openvino.yml
- .github/workflows/_test_backend.yml
workflow_dispatch:
Expand Down
4 changes: 2 additions & 2 deletions README-wheel.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ to run ExecuTorch `.pte` files, with some restrictions:
* \[Linux and Windows] [OpenVINO](docs/source/build-run-openvino.md) backend is also linked into the
prebuilt module. OpenVINO requires the runtime to be installed separately:
`pip install executorch[openvino]`. For now the extra installs no runtime on Python 3.15,
or on Linux aarch64 with Python 3.14, because the OpenVINO versions it supports publish no
build there.
or on Linux aarch64 with Python 3.14. OpenVINO publishes no build for Python 3.15, and its
aarch64 builds for Python 3.14 need glibc 2.35 or newer.

On Linux, macOS and Windows the runtime, kernels and backends also ship as shared libraries
with headers and a CMake package, so a C++ application can link them without building
Expand Down
2 changes: 1 addition & 1 deletion backends/openvino/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ On Linux and Windows, the OpenVINO backend is included in the ExecuTorch pip whe
pip install executorch[openvino]
```

For now the extra installs no runtime on Python 3.15, or on Linux aarch64 with Python 3.14, because the OpenVINO versions it supports publish no build there.
For now the extra installs no runtime on Python 3.15, or on Linux aarch64 with Python 3.14. OpenVINO publishes no build for Python 3.15, and its aarch64 builds for Python 3.14 need glibc 2.35 or newer.

The backend automatically discovers the OpenVINO C library from the pip-installed package, so no library search path setup is needed.

Expand Down
2 changes: 1 addition & 1 deletion backends/openvino/runtime/OpenvinoBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ bool OpenvinoBackend::ensure_loaded() const {
Error,
"OpenVINO runtime not found (loading '%s' failed: %s). "
"Ensure '%s' can be found (%s), or install with: "
"pip install \"openvino>=2025.1.0,<2026.0.0\"",
"pip install \"openvino>=2025.1.0,<2027.0.0\"",
to_utf8(effective_path).c_str(),
error.c_str(),
to_utf8(kDefaultLibName).c_str(),
Expand Down
5 changes: 3 additions & 2 deletions docs/source/build-run-openvino.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ pip install executorch[openvino]
```

For now the extra installs no runtime on Python 3.15, or on Linux aarch64 with Python
3.14, because the OpenVINO versions it supports publish no build there.
3.14. OpenVINO publishes no build for Python 3.15, and its aarch64 builds for Python 3.14
need glibc 2.35 or newer.

The backend automatically discovers the OpenVINO C library from the pip-installed
package — no environment variable setup is needed.
Expand All @@ -60,7 +61,7 @@ If you need a custom build (different platform, custom configuration, etc.), fol
Before you begin, ensure you have the OpenVINO runtime installed and configured on your system. For most users, we recommend installing it via pip:

```bash
pip install "openvino>=2025.1.0,<2026.0.0"
pip install "openvino>=2025.1.0,<2027.0.0"
```

Alternatively, you can build OpenVINO from source or follow the official [OpenVINO installation guide](https://docs.openvino.ai/2025/get-started/install-openvino.html) for platform-specific options:
Expand Down
3 changes: 2 additions & 1 deletion docs/source/using-executorch-cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,8 @@ Without it the delegate still registers and the program still links, and the fai
when the model is loaded.

For now the openvino extra installs no runtime on Python 3.15, or on Linux aarch64 with
Python 3.14, because the OpenVINO versions it supports publish no build there.
Python 3.14. OpenVINO publishes no build for Python 3.15, and its aarch64 builds for Python
3.14 need glibc 2.35 or newer.

The MLX delegate has a similar requirement. Its Metal kernels live in a separate `mlx.metallib`
file, which MLX looks for next to whichever library holds MLX code. The wheel ships it beside the
Expand Down
4 changes: 2 additions & 2 deletions examples/models/yolo26/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ To install ExecuTorch, follow this [guide](https://pytorch.org/executorch/stable

- [OpenVINO backend installation guide](../../../backends/openvino/README.md#quick-start-pip-wheel)

> **_NOTE:_** Please install the OpenVINO nightly version that supports the YOLO26 model.
> **_NOTE:_** Please install the OpenVINO version that supports the YOLO26 model.
```bash
python -m pip install --pre openvino==2026.1.0.dev20260131 --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly
python -m pip install openvino==2026.4.1
```

- [XNNPACK backend installation guide](https://pytorch.org/executorch/stable/tutorial-xnnpack-delegate-lowering.html#running-the-xnnpack-model-with-cmake)
Expand Down
7 changes: 4 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,10 @@ ethos_u = [
"tosa-tools==2026.5.0",
]
openvino = [
# The OpenVINO versions in this range publish no build for Python 3.15, or for Linux
# aarch64 on Python 3.14, so without these bounds pip fails to install the extra there.
"openvino>=2025.1.0,<2026.0.0; (platform_system == 'Linux' or (platform_system == 'Windows' and platform_machine == 'AMD64')) and python_version < '3.15' and (platform_machine != 'aarch64' or python_version < '3.14')",
# OpenVINO publishes no build for Python 3.15, and its Linux aarch64 builds for Python
# 3.14 need glibc 2.35 while the wheel needs only 2.28. Without these bounds pip fails to
# install the extra on Python 3.15 and on those older aarch64 systems.
"openvino>=2025.1.0,<2027.0.0; (platform_system == 'Linux' or (platform_system == 'Windows' and platform_machine == 'AMD64')) and python_version < '3.15' and (platform_machine != 'aarch64' or python_version < '3.14')",
]

[project.urls]
Expand Down
Loading