You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b21fa8b
Browse filesBrowse the repository at this point in the historyBrowse files
Provide the ESP-NN delegate and esp_nn:: op library in the ESP-IDF component
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
the new 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.
0 commit comments