Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
a83e7c4
Fix 2 broken tests caused by D105910457
metascroy May 22, 2026
ec76470
Cortex_M backend: Add more model tests (#19720)
AdrianLundell May 22, 2026
158c5d8
Convert Android LLM extension from Java to Kotlin (#19211)
kirklandsign May 23, 2026
6bda6c4
Globally serialize XNNPACK execution, add logging (#19742)
GregoryComer May 23, 2026
12f62f2
[ET Device Support] Module: allocate device memory for planned buffer…
Gasoonjia May 23, 2026
c27cc5d
[ET Device Support] CudaAllocator: device memory allocator for CUDA b…
Gasoonjia May 23, 2026
7d8063f
[ET Device Support] Define AOT device copy ops registry (#19748)
Gasoonjia May 23, 2026
d757776
Add extension_llm_runner to CMake deps (#19749)
kirklandsign May 23, 2026
b69cbcd
NXP backend: Enable Add Tensor with new Neutron flow (#19550)
roman-janik-nxp May 24, 2026
ba6074c
Back out "Globally serialize XNNPACK execution, add logging" (#19752)
julianchan-meta May 25, 2026
ee4c90a
Arm backend: Exclude build metadata from license checks
perheld May 25, 2026
b73df0b
NXP backend: Enable Sub Tensor with new Neutron flow (#19588)
roman-janik-nxp May 25, 2026
03e14ef
Arm backend: Add bf16 support for aten.index_select and aten.unfold_c…
vacu9708 May 25, 2026
b581615
Cortex-M backend: Add AoT scratch-buffer planning. (#19636)
Erik-Lundell May 26, 2026
5fc929f
Qualcomm AI Engine Direct - Refactor llama runner for dynamic IO dtyp…
chenweng-quic May 26, 2026
75fb249
add cuda allocator to cmake target (#19764) (#19764)
Gasoonjia May 26, 2026
c5e3e2b
Arm backend: Fix missing init in VGFSetup (#19765)
Erik-Lundell May 26, 2026
a89f1b4
Arm backend: Enable CPPCHECK for Cortex-M
perheld May 8, 2026
0bf018f
Add Yolo26 to matrix of tested models on RISC-V (#19741)
luhenry May 26, 2026
6128a45
Convert minibench Java files to Kotlin (#19760)
kirklandsign May 26, 2026
043c404
Cortex-M backend: enable Cortex-M0+ builds against Corstone-300 (#19731)
rascani May 26, 2026
fb3f6eb
Harden against concurrency violations (#19734) (#19734)
GregoryComer May 26, 2026
50ee05e
Convert Experimental, DType, MethodMetadata from Java to Kotlin
kirklandsign May 26, 2026
5d36c7c
NXP backend: Improve docs for NXP eIQ Neutron Kernel Selective Kernel…
roman-janik-nxp May 26, 2026
cedfd48
Arm backend: Validate TOSA resize parameters (#19757)
perheld May 26, 2026
29c3a23
Fix cortex_m test failures from D106339880
SS-JIA May 26, 2026
ae4fdb5
Set test seed per-test (#19744)
GregoryComer May 26, 2026
b4d62ed
Collapse Experimental.kt annotation onto a single line to satisfy linter
kirklandsign May 26, 2026
034b044
Handle out_dtype in ReplacePT2DequantWithCadenceDequantPass (#19743)
ethansfng May 27, 2026
79fe3a3
Add coreml_compute_plan.py: report which CoreML ops dispatch to ANE /…
john-rocky May 27, 2026
fb420f3
Fix bug with mixed weight cache + workspace sharing
GregoryComer May 27, 2026
77df9b7
New exported program pass manager and exported program passes (#16986)
DrJessop May 27, 2026
2c9c9dd
Arm backend: Enable Swin2SR TOSA ref tests (#19771)
usamahz May 27, 2026
dd00d42
Arm backend: Fix nested control-flow partition checks (#19697)
SaoirseARM May 27, 2026
d83aa08
Arm backend: Reuse identical CONST_SHAPE nodes (#19770)
martinlsm May 27, 2026
85dfa44
NXP backend: Add `mean.dim` support with new Neutron flow. (#19740)
MartinPavella May 27, 2026
4741f3a
Arm backend: Relocate not-equal decomposition after rank matching (#1…
Sebastian-Larsson May 27, 2026
6282467
[executorch][qualcomm] Add op_fallback.py to model_sharding_py BUCK t…
SS-JIA May 27, 2026
2f22959
Remove debug exit(0) blocking test_llama_stories_110m (#19814)
psiddh May 27, 2026
52892b2
Convert ExecuTorchRuntime, ExecutorchRuntimeException, EValue from Ja…
kirklandsign May 27, 2026
8be91e0
WebGPU: add memory aliasing for intermediate tensor buffers (#19305)
digantdesai May 27, 2026
1e8dc30
Serialize/flatbuffer to program (#18129)
chizkiyahu May 27, 2026
daa7ad2
Update golden artifact path for android_test_setup.sh (#19819)
kirklandsign May 27, 2026
b1446cc
Arm backend: Simplify fake RESIZE validation
perheld May 21, 2026
9d18531
Arm backend: Fix bmm quantization bug (#19798)
Christoffer-JL May 27, 2026
5393742
[executorch][runtime] Fix -Werror failures under Apple toolchain
May 27, 2026
5c0aa4f
[executorch][coreml] Fix CoreML SDK proto header includes
May 27, 2026
0ed8dcf
Fix etsize workflow build failures under -fno-exceptions
SS-JIA May 27, 2026
d366f43
Convert SGD and TrainingModule from Java to Kotlin (#19822)
kirklandsign May 27, 2026
53fa4dd
Fix `TrainingModule` class declaration formatting
kirklandsign May 27, 2026
d8d706a
Preserve model dtype when swapping weightless RMSNorm to RMSNormCoreM…
YIWENX14 May 28, 2026
7fd21f2
Convert Module from Java to Kotlin (#19821)
kirklandsign May 28, 2026
7c0f60a
NXP backend: Add `tanh` support with new Neutron flow. (#19753)
MartinPavella May 28, 2026
f59ac9d
NXP backend: Enable `aten.div.Tensor` with new Neutron flow. (#19802)
MartinPavella May 28, 2026
b48a457
Arm backend: Remove Ethos-U core driver submodule (#19664)
Sebastian-Larsson May 28, 2026
9981ba7
Arm backend: Add FP8 support for primitive lowering ops (#19805)
YufengShi-dudu May 28, 2026
990d9d1
Arm backend: Add cmsis_nn fallback example (#19768)
AdrianLundell May 28, 2026
c505aa5
Xnnpack: Support clone.default with skip_dim_order=True (#19797)
mansnils May 28, 2026
94f9719
[exir] Materialize alloc shapes in ToOutVarPass (#19806)
oscarandersson8218 May 28, 2026
5ca3207
Arm backend: Update examples/arm/README.md (#19756)
martinlsm May 28, 2026
96b19af
Arm backend: Guard empty cmake arg array in build_executorch (#19840)
Erik-Lundell May 28, 2026
b903c30
Arm backend: Fix vgf_quant swin test op-count and test vgf models in …
Erik-Lundell May 28, 2026
acce7cd
NXP Backend: Force backend (NeutronBackend) destructor call before ne…
robert-kalmar May 28, 2026
463fbe4
Add general Aten lowering pass (#19837)
AdrianLundell May 28, 2026
c8c04e4
Remove `google-java-format` from CI lint infrastructure
kirklandsign May 28, 2026
000d810
[ET Device Support] Define et_copy runtime h2d and d2h copy ops (#19858)
Gasoonjia May 28, 2026
42581f1
Add GGUF → MLX export support for Gemma 4 31B (#19829)
mergennachin May 28, 2026
9596866
Add ASR module and LoRA/dataFiles instrumentation tests (#19859)
psiddh May 29, 2026
4de16d0
Add shared fusion infrastructure and QuantFusionPass (#19724)
ethansfng May 29, 2026
007570a
NXP backend: Enable `aten.upsample_bilinear2d` with new Neutron flow.…
MartinPavella May 29, 2026
c72bc87
NXP backend: Enable `aten.upsample_nearest2d` with new Neutron flow. …
MartinPavella May 29, 2026
501d641
Arm backend: Fix bug causing empty partition reports (#19842)
Erik-Lundell May 29, 2026
ea37954
Arm backend: Add BF16 layer tests for Qwen (#19767)
tom-arm May 29, 2026
f6be985
LLM support: improve VGF export and calibration pipeline (#19157)
xingguo01 May 29, 2026
1494535
Arm backend: Fix VKML install bug for macOS. (#19612)
Michiel-Olieslagers May 29, 2026
513a4ea
Arm backend: Avoid running passes with no matching target ops (#19839)
YufengShi-dudu May 29, 2026
ad4d190
Arm backend: Fix Smollm2 model test
gggekov May 11, 2026
b0441b5
Change python to python3 in shell script
gggekov May 29, 2026
cf6daa9
Add short function support (#19846)
JakeStevens May 29, 2026
88faab2
Opportunistically use __FILE_NAME__ to get filename (#19834) (#19834)
JakeStevens May 29, 2026
84c0484
Fix ghstack merge bot failing to parse PR stack header
SS-JIA May 29, 2026
d1c80af
[ET-VK][tests][1/N] Report disabled delegate tests as executed
May 29, 2026
915a82d
[devtools][tests][4/N] Report disabled inspector tests as executed
May 29, 2026
10e2eec
Skip AOTI tests on macOS CI and bump job timeout to 120 min
SS-JIA May 29, 2026
29c18de
Use uint64_t for FlatTensor segment end
JacobSzwejbka May 29, 2026
0e6b67e
Add fuse() to QuantizationPatterns (#19726)
ethansfng May 29, 2026
5395f20
[MLX][Gemma4] Add turbo quant support (#19866)
metascroy May 29, 2026
bd24e79
Add fuse() to remaining QuantizationPatterns (#19727)
ethansfng May 30, 2026
ec31735
Enable QuantFusionPass in compiler pipeline (#19728) (#19728)
ethansfng May 30, 2026
2af5a13
Remove over-strict softmax mask divisibility assert
ethansfng Jun 1, 2026
f244a9f
Arm backend: Add MXFP Linear source transform (#19800)
martinlsm Jun 1, 2026
0204e36
NXP backend: Enable integer inputs model testing (#19808)
roman-janik-nxp Jun 1, 2026
a072513
NXP backend: added support for `slice` using new Neutron flow (#19803)
novak-vaclav Jun 1, 2026
10431b9
Suppress cppcheck unusedFunction false positives in headers (#19890)
rascani Jun 1, 2026
4469d84
Add executorch-ubuntu-26.04-gcc15 docker image (#19799)
luhenry Jun 1, 2026
00d0173
Add baremetal RISC-V smoke tests (rv32, rv64)
luhenry May 23, 2026
0df077d
Fix based on Claude's review
luhenry Jun 1, 2026
cfd9b52
Fix qemu-riscv64-static live check
luhenry Jun 1, 2026
66edf4e
Use GCC 14 for host compiler as well
luhenry Jun 1, 2026
ba2281e
Fix unecessary change
luhenry Jun 2, 2026
89fdf66
Add testing on RVV on Portable Backend
luhenry Jun 2, 2026
7dc53a1
Add rvv128, rvv256, and rvv512 testing in test-matrix.sh
luhenry Jun 2, 2026
4b616c0
Run all models with quantization (except excluded)
luhenry Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .ci/docker/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ case "${IMAGE_NAME}" in
OS_VERSION=24.04
GCC_VERSION=14
;;
executorch-ubuntu-26.04-gcc15)
LINTRUNNER=""
OS_VERSION=26.04
GCC_VERSION=15
;;
*)
echo "Invalid image name ${IMAGE_NAME}"
exit 1
Expand Down
4 changes: 2 additions & 2 deletions .ci/docker/common/install_docs_reqs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ if [ -n "$BUILD_DOCS" ]; then
curl --retry 3 --retry-all-errors -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

curl --retry 3 --retry-all-errors -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
curl --retry 3 --retry-all-errors -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/yarn-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

apt-get update
apt-get install -y --no-install-recommends yarn
Expand Down
4 changes: 0 additions & 4 deletions .ci/docker/common/install_linter.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,3 @@ source "$(dirname "${BASH_SOURCE[0]}")/utils.sh"
# NB: Install all linter dependencies, the caching of lintrunner init could be
# done after Executorch becomes public
pip_install -r requirements-lintrunner.txt

# Install google-java-format
curl -L --retry 3 --retry-all-errors https://github.com/google/google-java-format/releases/download/v1.23.0/google-java-format_linux-x86-64 > /opt/google-java-format
chmod +x /opt/google-java-format
50 changes: 34 additions & 16 deletions .ci/scripts/test_riscv_qemu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,65 @@
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

# CI wrapper: install RISC-V cross-compile + qemu-user tooling, then run the
# RISC-V smoke test (export, cross-compile, qemu-user execution) via
# examples/riscv/run.sh. The bundled-IO comparison and Test_result: PASS
# check are done by run.sh.
# CI wrapper: install riscv32/64 cross-compile + qemu tooling, then drive
# examples/riscv/run.sh which does the export, cross-compile, qemu run, and
# bundled-IO PASS check.

set -eu

script_dir=$(realpath "$(dirname "${BASH_SOURCE[0]}")")
et_root_dir=$(realpath "${script_dir}/../..")

model="add"
xnnpack=false
backend="portable"
quantize=false
os="linux"
arch="rv64"
qemu_cpu_ext=""
verbose_xnnpack=false
debug_xnnpack=false
build_dir=

usage() {
cat <<EOF
Usage: $(basename "$0") [options]
Options:
--model=<NAME> Which model to export and run (default: add)
--xnnpack Enable the XNNPACK backend (AOT partitioner + runtime)
--quantize Produce an 8-bit quantized model
--verbose-xnnpack Build XNNPACK with XNN_LOG_LEVEL=4 to log microkernel dispatch
--debug-xnnpack Enable XNNPACK partitioner DEBUG logging and dump the lowered graph
-h, --help Show this help
--model=<NAME> Which model to export and run (default: ${model})
--quantize Produce an 8-bit quantized model
--backend=<NAME> AOT backend (portable|xnnpack) (default: ${backend})
--os=<NAME> Target OS (linux|baremetal) (default: ${os})
--arch=<NAME> Target arch (rv32|rv64) (default: ${arch})
--qemu-cpu-ext=<EXT> QEMU -cpu extensions (no rv32/rv64 prefix, default: none)
--build-dir=<DIR> Build/output directory for this configuration (required)
--verbose-xnnpack Build XNNPACK with XNN_LOG_LEVEL=4 to log microkernel dispatch
--debug-xnnpack Enable XNNPACK partitioner DEBUG logging and dump the lowered graph
-h, --help Show this help
EOF
}

for arg in "$@"; do
case $arg in
--model=*) model="${arg#*=}" ;;
--xnnpack) xnnpack=true ;;
--quantize) quantize=true ;;
--backend=*) backend="${arg#*=}" ;;
--os=*) os="${arg#*=}" ;;
--arch=*) arch="${arg#*=}" ;;
--qemu-cpu-ext=*) qemu_cpu_ext="${arg#*=}" ;;
--build-dir=*) build_dir="${arg#*=}" ;;
--debug-xnnpack) debug_xnnpack=true ;;
--verbose-xnnpack) verbose_xnnpack=true ;;
-h|--help) usage; exit 0 ;;
*) echo "Unknown option: $arg" >&2; usage; exit 1 ;;
esac
done

if [[ -z "${build_dir}" ]]; then
echo "[test_riscv_qemu.sh] --build-dir is required" >&2; usage; exit 1
fi

run_extra_args=()
if ${xnnpack}; then
run_extra_args+=(--xnnpack)
if [ -n "${qemu_cpu_ext}" ]; then
run_extra_args+=(--qemu-cpu-ext="${qemu_cpu_ext}")
fi
if ${quantize}; then
run_extra_args+=(--quantize)
Expand All @@ -59,5 +74,8 @@ if ${verbose_xnnpack}; then
run_extra_args+=(--verbose-xnnpack)
fi

bash "${et_root_dir}/examples/riscv/setup.sh"
bash "${et_root_dir}/examples/riscv/run.sh" --model="${model}" "${run_extra_args[@]}"
bash "${et_root_dir}/examples/riscv/setup-${os}.sh"
bash "${et_root_dir}/examples/riscv/run.sh" \
--model="${model}" --backend="${backend}" --os="${os}" --arch="${arch}" \
--build-dir="${build_dir}" \
"${run_extra_args[@]}"
15 changes: 13 additions & 2 deletions .ci/scripts/unittest-macos-cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,19 @@ set -eux
export TORCHINDUCTOR_CACHE_DIR="$(mktemp -d "${RUNNER_TEMP:-/tmp}/torchinductor_cache_XXXXXX")"
trap 'rm -rf "${TORCHINDUCTOR_CACHE_DIR}"' EXIT

# Run pytest with coverage
${CONDA_RUN} pytest -n auto --cov=./ --cov-report=xml
# TODO(SS-JIA): AOTI tests hang on macOS CI runners — the thread blocks in
# native C/C++ code (dlopen / inductor compilation) so faulthandler cannot
# even produce a traceback. Diagnosis ongoing in #19886.
AOTI_SKIPS=(
--ignore=examples/models/llama3_2_vision/preprocess/test_preprocess.py
--ignore=examples/models/llama3_2_vision/vision_encoder/test/test_vision_encoder.py
--ignore=examples/models/llama3_2_vision/text_decoder/test/test_text_decoder.py
--deselect=extension/llm/modules/test/test_position_embeddings.py::TilePositionalEmbeddingTest::test_tile_positional_embedding_aoti
--deselect=extension/llm/modules/test/test_position_embeddings.py::TiledTokenPositionalEmbeddingTest::test_tiled_token_positional_embedding_aoti
--deselect=extension/llm/modules/test/test_attention.py::AttentionTest::test_attention_aoti
)

${CONDA_RUN} pytest -n auto --cov=./ --cov-report=xml "${AOTI_SKIPS[@]}"
# Run gtest
LLVM_PROFDATA="xcrun llvm-profdata" LLVM_COV="xcrun llvm-cov" \
${CONDA_RUN} test/run_oss_cpp_tests.sh
5 changes: 1 addition & 4 deletions .github/scripts/propose_ghstack_orig_pr.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,9 @@ def extract_stack_from_body(pr_body: str) -> List[int]:
"""

prs = []
ghstack_begin = (
"Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):"
)
ghstack_begin_seen = False
for line in pr_body.splitlines():
if ghstack_begin in line:
if line.startswith("Stack from [ghstack]"):
ghstack_begin_seen = True
if not ghstack_begin_seen:
continue
Expand Down
57 changes: 36 additions & 21 deletions .github/workflows/_test_riscv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,44 @@ on:
type: number
default: 30
model:
description: 'Which model to run. Possible values are: add, mv2 (mobilenetv2)'
description: 'Which model to run (add, mv2, mobilebert, llama2, resnet18, yolo26)'
required: false
type: string
default: 'add'
xnnpack:
description: 'Whether to enable XNNPACK'
required: false
type: boolean
default: false
quantize:
description: 'Produce an 8-bit quantized model'
required: false
type: boolean
default: false
qemu-cpu:
description: 'Configuration(s) for the CPU to emulate with QEMU, expecting a JSON array'
required: true
backend:
description: 'AOT backend to lower to (portable|xnnpack)'
required: false
type: string
docker-image:
description: 'The docker image to use for this job'
default: 'portable'
os:
description: 'Target OS for the runner (linux|baremetal)'
required: false
type: string
default: 'linux'
arch:
description: 'Target architecture (rv32|rv64)'
required: false
type: string
default: 'rv64'
qemu-cpu-ext:
description: >-
JSON array of QEMU -cpu *extension* strings (no rv32/rv64 prefix).
The script splices each entry with `arch` to form the final -cpu
value. Use [""] for plain base-ISA runs.
required: true
type: string

jobs:
run:
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
with:
runner: linux.2xlarge
docker-image: ci-image:executorch-ubuntu-24.04-gcc14
docker-image: ${{ inputs.os == 'linux' && 'ci-image:executorch-ubuntu-24.04-gcc14' || 'ci-image:executorch-ubuntu-26.04-gcc15' }}
submodules: 'recursive'
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout: ${{ inputs.timeout }}
Expand All @@ -55,20 +64,26 @@ jobs:
# Allows failure in `echo | jq | while read` pipeline to bubble up and fail the workflow
set -o pipefail

echo '${{ inputs.qemu-cpu }}' | jq -r '.[]' | while IFS= read -r qemu_cpu; do
export QEMU_CPU="${qemu_cpu}"
export GCC_VERSION=14
echo '${{ inputs.qemu-cpu-ext }}' | jq -r '.[]' | while IFS= read -r qemu_cpu_ext; do
variant_slug="${qemu_cpu_ext//,/_}"; variant_slug="${variant_slug//=/_}"; variant_slug="${variant_slug:-base}"
build_dir="riscv_test/${{ inputs.model }}${{ inputs.quantize && '_q' || '' }}/${{ inputs.backend }}/${{ inputs.os }}-${{ inputs.arch }}-${variant_slug}"

bash .ci/scripts/test_riscv_qemu.sh \
--model="${{ inputs.model }}" \
${{ inputs.xnnpack && '--xnnpack --verbose-xnnpack' || '' }} \
--backend="${{ inputs.backend }}" \
--os="${{ inputs.os }}" \
--arch="${{ inputs.arch }}" \
--qemu-cpu-ext="${qemu_cpu_ext}" \
--build-dir="${build_dir}" \
${{ inputs.backend == 'xnnpack' && '--verbose-xnnpack' || '' }} \
${{ inputs.quantize && '--quantize' || '' }}

# We only generate riscv_test/${{ inputs.model }}_riscv.etdump.json from `--verbose-xnnpack`.
if ${{ inputs.xnnpack }}; then
# Generate markdown table from riscv_test/${{ inputs.model }}_riscv.etdump.json, sorted by sum_ms
# We only generate run.etdump.json from `--verbose-xnnpack`.
if [[ "${{ inputs.backend }}" == "xnnpack" ]]; then
# Generate markdown table from ${build_dir}/run.etdump.json, sorted by sum_ms
(
etdump_json="riscv_test/${{ inputs.model }}_riscv.etdump.json"
echo "### Model=${{ inputs.model }} XNNPACK=${{ inputs.xnnpack }} Quantize=${{ inputs.quantize }} QEMU_CPU='${QEMU_CPU}'"
etdump_json="${build_dir}/run.etdump.json"
echo "### Model=${{ inputs.model }} Quantize=${{ inputs.quantize }} Backend=${{ inputs.backend }} OS=${{ inputs.os }} Arch=${{ inputs.arch }}${qemu_cpu_ext:+,${qemu_cpu_ext}}"
jq -r '
def r3: (. * 1000 | round) / 1000;
["Section","Op","Count","Sum (ms)","Avg (ms)","Max (ms)","Microkernels"],
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/_unittest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ jobs:
python-version: '3.11'
submodules: 'recursive'
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
timeout: 120
script: |
set -eux
# This is needed to get the prebuilt PyTorch wheel from S3
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/docker-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ jobs:
executorch-ubuntu-22.04-mediatek-sdk,
executorch-ubuntu-22.04-clang12-android,
executorch-ubuntu-24.04-gcc14,
executorch-ubuntu-26.04-gcc15,
]
include:
- docker-image-name: executorch-ubuntu-22.04-gcc11-aarch64
Expand Down
46 changes: 0 additions & 46 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,49 +125,3 @@ jobs:
uses: ./.github/workflows/_link_check.yml
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}

android-java-format:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}

- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Check Java formatting
run: |
GOOGLE_JAVA_FORMAT_VERSION="1.24.0"
curl -sSfL "https://github.com/google/google-java-format/releases/download/v${GOOGLE_JAVA_FORMAT_VERSION}/google-java-format-${GOOGLE_JAVA_FORMAT_VERSION}-all-deps.jar" \
-o /tmp/google-java-format.jar

FILES_NEEDS_FORMAT=$(find extension/android/executorch_android/src/main/java/org/pytorch/executorch \
extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm \
extension/android/executorch_android/src/main/java/org/pytorch/executorch/annotations \
extension/android/executorch_android/src/androidTest/java/org/pytorch/executorch \
extension/benchmark/android/benchmark/app/src/main/java/org/pytorch/minibench \
extension/benchmark/android/benchmark/app/src/androidTest/java/org/pytorch/minibench \
-type f -name "*.java" 2>/dev/null | \
xargs -r java -jar /tmp/google-java-format.jar -n)

if [ -n "$FILES_NEEDS_FORMAT" ]; then
echo "Warning: The following files need formatting:"
echo "$FILES_NEEDS_FORMAT"
echo ""
echo "Please use google-java-format from https://github.com/google/google-java-format/releases/"
echo ""
echo "To fix, run one of these commands:"
echo " # Using xargs (recommended):"
echo " find <paths> -type f -name '*.java' | xargs google-java-format -i"
echo ""
echo " # Or format specific files:"
echo "$FILES_NEEDS_FORMAT" | while IFS= read -r file; do
echo " google-java-format -i \"$file\""
done
exit 1
fi
16 changes: 16 additions & 0 deletions .github/workflows/mlx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ jobs:

${CONDA_RUN} pip list

echo "::group::Install Python test requirements"
${CONDA_RUN} pip install gguf
echo "::endgroup::"

echo "::group::Build test runners"
${CONDA_RUN} cmake --build cmake-out --target op_test_runner multi_thread_test_runner -j$(( $(sysctl -n hw.ncpu) - 1 ))
echo "::endgroup::"
Expand Down Expand Up @@ -76,6 +80,18 @@ jobs:
${CONDA_RUN} python -m executorch.backends.mlx.model_ops.test_gated_delta_rule run -v
echo "::endgroup::"

echo "::group::Run tq_norm op tests"
${CONDA_RUN} python -m executorch.backends.mlx.model_ops.test_tq_norm run -v
echo "::endgroup::"

echo "::group::Run tq4_compress op tests"
${CONDA_RUN} python -m executorch.backends.mlx.model_ops.test_tq4_compress run -v
echo "::endgroup::"

echo "::group::Run tq_dequant op tests"
${CONDA_RUN} python -m executorch.backends.mlx.model_ops.test_tq_dequant run -v
echo "::endgroup::"

test-mlx-qwen35-moe:
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
with:
Expand Down
Loading
Loading