Repository navigation
Conversation
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/24708
Note: Links to docs will display an error until the docs builds have been completed. ❌ 2 New Failures, 2 Pending, 1 Unrelated FailureAs of commit 415d3ea with merge base 60a8b5f ( NEW FAILURES - The following jobs have failed:
BROKEN TRUNK - The following job failed but were present on the merge base:👉 Rebase onto the `viable/strict` branch to avoid these failures
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
This PR needs a
|
3fae8f5 to
e3dd844
Compare
e3dd844 to
9540746
Compare
9540746 to
a405914
Compare
|
@claude review effort=max |
|
Claude finished @rascani's task in 36m 46s —— View job Request Changes: the CI check that the ESP32-C6 build doesn't link Detailed review
PR Review: #24708SummaryThis PR vendors the ESP-NN delegate and the
Backward Compatibility
API Design
Testing
Performance
Code Quality
Specific Comments
RecommendationRequest Changes The ESP32-C6 check ( |
…mponent The component now vendors the ESP-NN delegate runtime (backends/espressif/espnn_runtime) and the esp_nn:: op library (backends/espressif/ops), depends on espressif/esp-nn (or a project's own components/esp-nn), and carries the delegate's Kconfig options in its menu. The op library is a fourth kernel library for gen_kernels.py, after portable, quantized and Cadence generic. The delegate is linked only when the kernel bundle records a model that uses EspNNBackend, or when the project calls executorch_add_backend(EspNNBackend): a small source in the delegate's library defines an anchor that references register_espnn_backend, so -u on that anchor pulls in espnn_backend.cpp and its static registration from a library that is otherwise never linked. Only espnn_backend.h is public, and it now says when the generated component links it. The kernel library, too, is linked only when the bundle has kernel libraries or prim ops, so a delegate-only bundle never builds it, and a project that declares only the backend also defines the symbol et_model needs to link. The smoke consumer now embeds any number of models, each with the test case that split_bundled_program.py extracts from its bundled program, and compares every output with the reference on the device. CI runs four images on the emulator. An ESP32-S3 image runs the smoke model on portable kernels, a quantized mul on esp_nn::quantized_mul_int8 and the conv-act-pool-linear ESP-NN delegate program together. An ESP32-C6 image runs the first two and must not contain EspNNBackend. Two more ESP32-S3 images run the delegate alone, one from a bundle with no kernel libraries, which must not build the kernel library, and one from executorch_add_backend with no bundle, whose registry must hold no kernels. A project with its own components/esp-nn must build that one and not the managed copy. The empty-app size check still passes with esp-nn compiled in. export_smoke_model.py loses --pte-output, which nothing uses now. Authored with Claude Code.
a405914 to
415d3ea
Compare
The component now vendors the ESP-NN delegate runtime
(backends/espressif/espnn_runtime) and the esp_nn:: op library
(backends/espressif/ops), depends on espressif/esp-nn (or a project's own
components/esp-nn), and carries the delegate's Kconfig options in its menu. The
op library is a fourth kernel library for gen_kernels.py, after portable,
quantized and Cadence generic. The delegate is linked only when the kernel
bundle records a model that uses EspNNBackend, or when the project calls
executorch_add_backend(EspNNBackend): a small source in the delegate's library
defines an anchor that references register_espnn_backend, so -u on that anchor
pulls in espnn_backend.cpp and its static registration from a library that is
otherwise never linked. Only espnn_backend.h is public, and it now says when
the generated component links it. The kernel library, too, is linked only
when the bundle has kernel libraries or prim ops, so a delegate-only bundle
never builds it, and a project that declares only the backend also defines the
symbol et_model needs to link.
The smoke consumer now embeds any number of models, each with the test case
that split_bundled_program.py extracts from its bundled program, and compares
every output with the reference on the device. CI runs four images on the
emulator. An ESP32-S3 image runs the smoke model on portable kernels, a
quantized mul on esp_nn::quantized_mul_int8 and the conv-act-pool-linear ESP-NN
delegate program together. An ESP32-C6 image runs the first two and must not
contain EspNNBackend. Two more ESP32-S3 images run the delegate alone, one from
a bundle with no kernel libraries, which must not build the kernel library,
and one from executorch_add_backend with no bundle, whose registry must hold
no kernels. A project with its own components/esp-nn must build that one and
not the managed copy. The empty-app size check still passes with esp-nn
compiled in. export_smoke_model.py loses --pte-output, which nothing uses now.
Authored with Claude Code.