From adf0e38fc174f3c98822439ffe8560f13073a440 Mon Sep 17 00:00:00 2001 From: Dave Bort Date: Mon, 2 Oct 2023 17:25:18 -0700 Subject: [PATCH] [executorch][docs] runtime-overview.md First draft of a high-level document describing the runtime. Differential Revision: [D49852127](https://our.internmc.facebook.com/intern/diff/D49852127/) [ghstack-poisoned] --- .../img/runtime-overview-high-level.png | Bin 0 -> 108850 bytes docs/source/runtime-overview.md | 166 +++++++++++++++++- 2 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 docs/source/_static/img/runtime-overview-high-level.png diff --git a/docs/source/_static/img/runtime-overview-high-level.png b/docs/source/_static/img/runtime-overview-high-level.png new file mode 100644 index 0000000000000000000000000000000000000000..de2a57d8e7adb3180edc210ff54ac1f99ddf1da7 GIT binary patch literal 108850 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%0D?#zmYQR=iS$Gu&N@0W(W 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 literal 0 HcmV?d00001 diff --git a/docs/source/runtime-overview.md b/docs/source/runtime-overview.md index 0f0ff2c594b..f8cebe351eb 100644 --- a/docs/source/runtime-overview.md +++ b/docs/source/runtime-overview.md @@ -1,3 +1,167 @@ # Runtime Overview -TBA +This document discusses the design of the ExecuTorch runtime, which executes +ExecuTorch program files on edge devices like smartphones, wearables, and +embedded devices. The code for the main execution API is under +`[executorch/runtime/executor/](https://github.com/pytorch/executorch/tree/main/runtime/executor)`. + +Before reading this document we recommend that you read [How Does ExecuTorch +Work](intro-how-it-works.md). + +At the highest level, the ExecuTorch runtime is responsible for: + +* Loading binary `.pte` program files that were generated by the + `to_executorch()` step of the model-lowering process. +* Executing the series of instructions that implement a lowered model. + +This diagram shows the high-level flow of and components involved with exporting +and executing an ExecuTorch program: + +![High-level diagram of the ExecuTorch +Runtime](/_static/img/runtime-overview-high-level.png) + +The runtime is also responsible for: + +* Managing the memory used during load and execution, potentially across + multiple memory banks like SRAM and DRAM. +* Mapping symbolic operator names like `"aten::add.out"` to concrete C++ + functions or [_kernels_](kernel-library-overview.md) that implement the + semantics of those operators. +* Dispatching predetermined sections of the model to [backend + delegates](compiler-delegate-and-partitioner.md) for acceleration. +* Optionally gathering [profiling data](sdk-profiling.md) during load and + execution. + +## Design Goals + +The ExecuTorch runtime was designed to run on a wide variety of edge devices, +from modern smartphone CPUs to resource-constrained microcontrollers and DSPs. +It has first-class support for +[delegating](compiler-delegate-and-partitioner.md) execution to one or more +backends to take advantage of architecture-specific optimizations and modern +heterogeneous architectures. It is small and portable enough to run directly in +bare-metal embedded environments with no operating systems, dynamic memory, or +threads. + +### Low Execution Overhead + +#### Memory + +* The core runtime library is less than 50kB when built without kernels or + backends. +* Constant tensors point directly into the `.pte` file data, avoiding copies of + that data. The alignment of these data chunks can be adjusted at `.pte` + creation time. +* Backend delegates can choose to unload their precompiled data after model + initialization, reducing peak memory usage. +* Mutable tensor memory layout is planned ahead of time and packed into a small + set of user-allocated buffers, providing fine-grained control over memory + location. This is especially useful on systems with heterogeneous memory + hierarchies, allowing placement onto (e.g.) SRAM or DRAM close to the core + that will operate on the data. + +#### CPU + +* Model execution is a simple loop over an array of instructions, most of which + are function pointers to kernels and backend delegates. This keeps the + execution overhead small, on the order of microseconds to nanoseconds per + operation. +* The implementation of an operation (like "add" or "conv3d") can be fully + customized for a particular target system without needing to modify the + original model or generated `.pte` file. + +### Familiar PyTorch Semantics + +ExecuTorch is a first-class component of the PyTorch stack, and reuses APIs and +semantics whenever possible. + +* The C++ types used by ExecuTorch are source-compatible with the corresponding + types from core PyTorch's `c10::` and `at::` libraries, and ExecuTorch + provides + [`aten_bridge`](https://github.com/pytorch/executorch/blob/main/extension/aten_util/aten_bridge.h) + to convert between the two. This can be helpful for projects that already use + PyTorch C++ types. +* The behavior of operators like "aten::add" and "aten::sigmoid" are identical + between ExecuTorch and core PyTorch. ExecuTorch provides a testing framework + to ensure this, and to help test future implementations of these operators. + +### Portable Code and Architecture + +The ExecuTorch runtime is implemented with portability in mind, so that users +can build it for a wide variety of target systems. + +#### C++ Language Considerations + +* The code is C++11-compatible to work with older toolchains. +* The runtime does not use exceptions or RTTI, although it is not antagonistic + to them. +* The code is compatible with gcc and clang, and has also been built with + several proprietary embedded toolchains. +* The repo provides both CMake and buck2 build systems to make integration + easier. + +#### Operating System Considerations + +The runtime makes no direct system calls. All access to memory, files, logging, +and clock s are abstracted through the [_Runtime Platform Abstraction Layer +(PAL)_](runtime-platform-abstraction-layer.md) and injected interfaces like +`DataLoader` and `MemoryAllocator`. [TODO: link these types to their generated +docs] + +Applications can control all memory allocation through the `MemoryManager`, +`MemoryAllocator`, `HierarchicalAllocator`, and `DataLoader` classes. The core +runtime makes no direct calls to `malloc()` or `new`, or to types like +`std::vector` that allocate under the hood. This makes it possible to: + +* run in environments without a heap, but still use the heap if desired. +* avoid synchronization on the heap during model load and execution. +* control which memory region to use for different types of data. For example, + one set of mutable tensors could live in SRAM while another set lived in DRAM. +* easily monitor how much memory the runtime uses. + +However, please note that specific kernel or backend implementations may use +arbitrary runtime or operating system features. Users should double-check the +docs for the kernel and backend libraries that they use. + +#### Threading Considerations + +The core runtime does no threading or locking, and does not use thread local +variables. But, it plays well with higher-level synchronization. + +* Each `Program` instance is immutable and therefore _[fully + thread-safe](https://faithlife.codes/blog/2008/03/degrees_of_thread_safety/#thread-safe)_. + Multiple threads may concurrently access a single `Program` instance. +* Each `Method` instance is mutable but self-contained, and therefore + _[conditionally + thread-safe](https://faithlife.codes/blog/2008/03/degrees_of_thread_safety/#conditionally-thread-safe)_. + Multiple threads can concurrently access and execute independent `Method` + instances, but access and execution of a single instance must be serialized. + +However, please note: + +* There are two global tables that may be read during `Program::load_method()`: + the kernel registration table and the backend registration table. + * In practice, these tables are only modified at process/system load time, + and are effectively frozen before the first `Program` is loaded. But some + applications may need to be aware of these tables, especially if they + manually mutate them after process/system load time. +* Specific kernel or backend implementations may have their own threading + restrictions. Users should double-check the docs for the kernel and backend + libraries that they use. + +## Further Reading + +For more details about the ExecuTorch runtime, please see: + +* The + [`executor_runner`](https://github.com/pytorch/executorch/blob/main/examples/executor_runner/executor_runner.cpp) + example tool +* [Runtime API](runtime-api.md) +* [Runtime Build and Cross Compilation](runtime-build-and-cross-compilation.md) +* [Runtime Platform Abstraction Layer](runtime-platform-abstraction-layer.md) +* [Custom Memory Allocation](runtime-custom-memory-allocator.md) +* [Runtime Error Handling](runtime-error-handling.md) +* [Runtime Profiling](sdk-profiling.md) +* [Backends and Delegates](compiler-delegate-and-partitioner.md) +* [Backend Delegate Implementation](runtime-backend-delegate-implementation-and-linking.md) +* [Kernel Library Overview(kernel-library-overview.md)