$ the-wire · showcase
ExecuTorch bounds its thread pool, fixes mixed-dtype cat, and adds an ESP-IDF component generator
By RepoJournal · Filed · About PyTorch · Composed from the cited sources · methodology
The day's most consequential work lands in ExecuTorch's runtime and edge lowering paths, while PyTorch's own commits are mostly test and tooling fixes.
Limit the default thread pool to the allowed CPUs on Linux (not Android) pytorch/executorch
The default ExecuTorch thread pool used to start one thread per CPU on the machine regardless of the process's allowed CPU set; it now honors that set on Linux (not Android). The PR reports that under taskset -c 0-3 the pool went from 168 threads to 4, and that the oversubscription made a small XNNPACK model 1.4x slower.
Fix mixed-dtype cat and stack in to_edge and the edge check pytorch/executorch
to_edge rejected programs torch.cat accepts, since cat promotes mismatched dtypes (bfloat16 plus float32 yields float32) while the edge check raised SpecViolationError on the same inputs. torch.stack, torch.concat and torch.hstack inherited the failure because they lower to cat.
Espressif: Add ESP-IDF component generator and int8 wake-word profile pytorch/executorch
A new examples/espressif/build_idf_component.sh generates a source-vendored, registry-shaped ESP-IDF component from the repo, reusing the same build_variables.bzl kernel lists as the CMake build. The same PR adds an int8 wake-word profile, following the pattern of the Arduino library packaging.
CUDA backend: lower fused attention variants pytorch/executorch
torch.export's default decompositions and Torch-TensorRT both rewrite scaled_dot_product_attention into _scaled_dot_product_flash_attention or _scaled_dot_product_efficient_attention, which the CUDA backend had no kernel for and failed with a missing-fallback RuntimeError. The backend now lowers those fused variants.
[pytorchbot] Add `@pytorchbot triage` to re-run Auto PR Triage (#9144) pytorch/test-infra
Auto PR Triage only fired when `open source` was added or a draft went ready, and became a no-op once its outcome labels were set, so a fixed PR stayed stuck. `@pytorchbot triage` now re-runs it on demand. Quiet elsewhere: the CRCR verdict badge moves to the advisorBadge route after the crcrBadge pill rendered only alt text, uw1 clusters leave the HF cache sync, and the ROCm and profiler test f...