Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 2.22 KB

backend-delegates-integration.md

File metadata and controls

61 lines (43 loc) · 2.22 KB

Integrating a Backend Delegate into ExecuTorch

Disclaimer: We are planning to restructure the repository around delegates. With that some of these guidelines will change in the future.

This is a high level guideline when integrating a backend delegate with ExecuTorch.

Directory Structure

Delegate files should be under this directory: executorch/backends/<delegate_name>/. The delegate name should be unique.

Python Source Files

Delegate Python files such as those implementing preprocess() or partition() functions for ExecuTorch AOT flow, excluding any external third-party dependencies and their files, should be installed and available with the top level ExecuTorch package. For third-party dependencies, please refer to this.

C++ Source Files

At a minimum, a delegate must provide CMake support for building its C++ sources.

For the CMake setup, the delegate dir should be included by the top level CMakeLists.txt file using add_subdirectory CMake command, and should be built conditionally with an ExecuTorch build flag like EXECUTORCH_BUILD_<DELEGATE_NAME>, see EXECUTORCH_BUILD_XNNPACK for example. For third-party dependencies, please refer to this.

Adding buck2 support is optional, but will make the delegate available to more ExecuTorch users.

Tests

Tests should be added under executorch/backends/<delegate_name>/test. Tests can be either python or C++ tests. For adding more complex end-to-end (e2e) tests, please reach out to us.

Common test types:

  • Simple python unit tests that test AOT logic such as partitioner() or AOT export flow (generating a .pte file from an nn.Module)
  • Runtime C++ tests, using gtest, that test delegate init() or execute() runtime logic.

Documentation

A delegate must contain a executorch/backends/<delegate_name>/README.md explaining the basics of the delegate, directory structure, features, and known issues if any.

Any extra setup steps beyond the ones listed above should be documented in executorch/backends/<delegate_name>/setup.md