Skip to content

Commit 5bb3298

Browse files
Merge branch 'main' into export-D97662639
2 parents c70cfd1 + b24535b commit 5bb3298

120 files changed

Lines changed: 4735 additions & 1059 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.ci/scripts/export_model_artifact.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ if [ "$MODEL_NAME" = "qwen3_5_moe" ]; then
424424
test -f "${OUTPUT_DIR}/model.pte"
425425
test -f "${OUTPUT_DIR}/aoti_cuda_blob.ptd"
426426
ls -al "${OUTPUT_DIR}"
427+
427428
exit 0
428429
fi
429430

.ci/scripts/test_model_e2e_windows.ps1

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,19 @@ try {
135135
Write-Host "::group::Check CUDA toolchain"
136136
$nvccOutput = nvcc --version | Out-String
137137
Write-Host $nvccOutput
138-
nvidia-smi
138+
$nvidiaSmiCmd = Get-Command nvidia-smi -ErrorAction SilentlyContinue
139+
if ($null -eq $nvidiaSmiCmd) {
140+
Write-Host "nvidia-smi not available (command not found; driver may not be installed)"
141+
}
142+
else {
143+
try {
144+
nvidia-smi
145+
}
146+
catch {
147+
Write-Host "nvidia-smi failed (driver or GPU issue). Error details:"
148+
Write-Host $_
149+
}
150+
}
139151
if (-not [string]::IsNullOrWhiteSpace($ExpectedCudaVersion)) {
140152
$versionMatch = [Regex]::Match($nvccOutput, "release\s+(\d+\.\d+)")
141153
if (-not $versionMatch.Success) {

.ci/scripts/wheel/test_linux.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,25 @@
1111
from examples.models import Backend, Model
1212

1313
if __name__ == "__main__":
14-
# On Linux x86_64 the wheel is built with the Qualcomm backend.
15-
# Verify that it was registered correctly.
16-
if platform.system() == "Linux" and platform.machine() in ("x86_64", "amd64"):
14+
if platform.system() == "Linux":
1715
from executorch.extension.pybindings.portable_lib import (
1816
_get_registered_backend_names,
1917
)
2018

2119
registered = _get_registered_backend_names()
20+
21+
# QNN backend is only available on x86_64.
22+
if platform.machine() in ("x86_64", "amd64"):
23+
assert (
24+
"QnnBackend" in registered
25+
), f"QnnBackend not found in registered backends: {registered}"
26+
print("✓ QnnBackend is registered")
27+
28+
# OpenVINO backend is available on all Linux architectures.
2229
assert (
23-
"QnnBackend" in registered
24-
), f"QnnBackend not found in registered backends: {registered}"
25-
print("✓ QnnBackend is registered")
30+
"OpenvinoBackend" in registered
31+
), f"OpenvinoBackend not found in registered backends: {registered}"
32+
print("✓ OpenvinoBackend is registered")
2633

2734
test_base.run_tests(
2835
model_tests=[

.ci/scripts/wheel/test_linux_aarch64.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,20 @@
1212
# coremltools does not support linux aarch64 yet and install from the source fails on runtime
1313
# https://github.com/apple/coremltools/issues/1254
1414
# https://github.com/apple/coremltools/issues/2195
15+
16+
from executorch.extension.pybindings.portable_lib import (
17+
_get_registered_backend_names,
18+
)
19+
20+
registered = _get_registered_backend_names()
21+
22+
# OpenVINO backend uses dlopen (no build-time SDK dependency), so it
23+
# is compiled into the wheel on all Linux architectures.
24+
assert (
25+
"OpenvinoBackend" in registered
26+
), f"OpenvinoBackend not found in registered backends: {registered}"
27+
print("✓ OpenvinoBackend is registered")
28+
1529
test_base.run_tests(
1630
model_tests=[
1731
test_base.ModelTest(

.github/workflows/android-release-artifacts.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ jobs:
145145
export BUILD_AAR_DIR=aar-out
146146
bash scripts/build_android_library.sh
147147
mkdir -p "${ARTIFACTS_DIR_NAME}"
148-
cp aar-out/executorch.aar "${ARTIFACTS_DIR_NAME}/executorch.aar"
148+
cp aar-out/executorch.aar "${ARTIFACTS_DIR_NAME}/executorch-${FLAVOR}.aar"
149149
150-
shasum -a 256 "${ARTIFACTS_DIR_NAME}/executorch.aar"
150+
shasum -a 256 "${ARTIFACTS_DIR_NAME}/executorch-${FLAVOR}.aar"
151151
152152
# Publish to maven staging
153153
UPLOAD_TO_MAVEN="${{ inputs.upload_to_maven }}"
@@ -172,11 +172,6 @@ jobs:
172172
- name: Upload AAR RC to AWS S3
173173
shell: bash
174174
run: |
175-
wget https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/executorch.aar
176-
shasum -a 256 executorch.aar > executorch.aar.sha256sums
177-
178-
pip install awscli==1.32.18
179-
AWS_CMD="aws s3 cp"
180175
VERSION="${{ inputs.version }}"
181176
FLAVOR="${{ inputs.flavor }}"
182177
if [ -z "$VERSION" ]; then
@@ -185,5 +180,11 @@ jobs:
185180
if [ -z "$FLAVOR" ]; then
186181
FLAVOR="xnnpack"
187182
fi
183+
wget https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/executorch-${FLAVOR}.aar
184+
mv executorch-${FLAVOR}.aar executorch.aar
185+
shasum -a 256 executorch.aar > executorch.aar.sha256sums
186+
187+
pip install awscli==1.32.18
188+
AWS_CMD="aws s3 cp"
188189
${AWS_CMD} executorch.aar s3://ossci-android/executorch/release/${VERSION}-${FLAVOR}/executorch.aar --acl public-read
189190
${AWS_CMD} executorch.aar.sha256sums s3://ossci-android/executorch/release/${VERSION}-${FLAVOR}/executorch.aar.sha256sums --acl public-read

.github/workflows/android-release-on-tag.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ on:
66
- 'v*.*.*-rc*'
77
- 'v*.*.*'
88

9+
permissions:
10+
id-token: write
11+
contents: read
12+
913
jobs:
1014
prepare:
1115
runs-on: ubuntu-latest

.github/workflows/cuda-windows.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ jobs:
4848
- model_repo: "nvidia"
4949
model_name: "parakeet-tdt"
5050
quant: "quantized-int4-weight-only"
51-
- model_repo: "nvidia"
52-
model_name: "diar_streaming_sortformer_4spk-v2"
53-
quant: "non-quantized"
51+
# TODO: sortformer produces 0 segments on Windows after D97788666.
52+
# Temporarily disabled until root cause is debugged.
53+
# - model_repo: "nvidia"
54+
# model_name: "diar_streaming_sortformer_4spk-v2"
55+
# quant: "non-quantized"
5456
- model_repo: "mistralai"
5557
model_name: "Voxtral-Mini-4B-Realtime-2602"
5658
quant: "quantized-int4-tile-packed"
@@ -129,9 +131,11 @@ jobs:
129131
- model_repo: "nvidia"
130132
model_name: "parakeet-tdt"
131133
quant: "quantized-int4-weight-only"
132-
- model_repo: "nvidia"
133-
model_name: "diar_streaming_sortformer_4spk-v2"
134-
quant: "non-quantized"
134+
# TODO: sortformer produces 0 segments on Windows after D97788666.
135+
# Temporarily disabled until root cause is debugged.
136+
# - model_repo: "nvidia"
137+
# model_name: "diar_streaming_sortformer_4spk-v2"
138+
# quant: "non-quantized"
135139
- model_repo: "mistralai"
136140
model_name: "Voxtral-Mini-4B-Realtime-2602"
137141
quant: "quantized-int4-tile-packed"

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,9 @@ if(EXECUTORCH_BUILD_KERNELS_TORCHAO)
846846
set(TORCHAO_ENABLE_ARM_NEON_DOT ON)
847847
set(TORCHAO_BUILD_KLEIDIAI ON)
848848

849+
# TorchAO requires find_package(Torch) for include dirs; add its cmake path.
850+
add_torch_to_cmake_prefix_path()
851+
849852
# TorchAO kernels look for EXECUTORCH_INCLUDE_DIRS
850853
if(DEFINED EXECUTORCH_INCLUDE_DIRS)
851854
message(FATAL_ERROR "EXECUTORCH_INCLUDE_DIRS is already defined")

Makefile

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,18 +296,21 @@ voxtral_realtime-cuda:
296296
@echo " Binary: cmake-out/examples/models/voxtral_realtime/voxtral_realtime_runner"
297297

298298
silero-vad-cpu:
299-
@echo "==> Building and installing ExecuTorch..."
300-
cmake --workflow --preset llm-release
301-
@echo "==> Building Silero VAD runner (CPU)..."
299+
@echo "==> Configuring and installing ExecuTorch (without LLM runner)..."
300+
cmake --preset llm-release -DEXECUTORCH_BUILD_EXTENSION_LLM_RUNNER=OFF
301+
cmake --build cmake-out --parallel "$$(sysctl -n hw.ncpu)"
302+
cmake --install cmake-out
303+
@echo "==> Building Silero VAD runners (CPU)..."
302304
cmake -DCMAKE_BUILD_TYPE=Release \
303305
-DCMAKE_FIND_ROOT_PATH=$(CURDIR)/cmake-out \
304306
-DCMAKE_PREFIX_PATH=$(CURDIR)/cmake-out \
305307
-S examples/models/silero_vad \
306308
-B cmake-out/examples/models/silero_vad
307-
cmake --build cmake-out/examples/models/silero_vad --target silero_vad_runner
309+
cmake --build cmake-out/examples/models/silero_vad --target silero_vad_runner silero_vad_stream_runner
308310
@echo ""
309311
@echo "✓ Build complete!"
310312
@echo " Binary: cmake-out/examples/models/silero_vad/silero_vad_runner"
313+
@echo " Binary: cmake-out/examples/models/silero_vad/silero_vad_stream_runner"
311314

312315
llama-cpu:
313316
@echo "==> Building and installing ExecuTorch..."

README-wheel.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@ PyTorch programs.
66

77
The `executorch` pip package is in beta.
88
* Supported python versions: 3.10, 3.11, 3.12, 3.13
9-
* Compatible systems: Linux x86_64, macOS aarch64
9+
* Compatible systems: Linux x86_64, Linux aarch64, macOS aarch64
1010

1111
The prebuilt `executorch.runtime` module included in this package provides a way
1212
to run ExecuTorch `.pte` files, with some restrictions:
1313
* Only [core ATen operators](docs/source/ir-ops-set-definition.md) are linked into the prebuilt module
1414
* Only the [XNNPACK backend delegate](docs/source/backends/xnnpack/xnnpack-overview.md) is linked into the prebuilt module.
1515
* \[macOS only] [Core ML](docs/source/backends/coreml/coreml-overview.md) and [MPS](docs/source/backends/mps/mps-overview.md) backend
1616
are also linked into the prebuilt module.
17+
* \[Linux x86_64] [QNN](docs/source/backends-qualcomm.md) backend is linked into the prebuilt module.
18+
* \[Linux] [OpenVINO](docs/source/build-run-openvino.md) backend is also linked into the
19+
prebuilt module. OpenVINO requires the runtime to be installed separately:
20+
`pip install executorch[openvino]`
1721

1822
Please visit the [ExecuTorch website](https://pytorch.org/executorch) for
1923
tutorials and documentation. Here are some starting points:

0 commit comments

Comments
 (0)