Samsung / ONE

On-device Neural Engine
Other
433 stars 158 forks source link

[luci-interpreter] Design and implement static memory planner and manager #7522

Open binarman opened 3 years ago

binarman commented 3 years ago

This is continuation of #7355 that should use introduced memory manager interface.

Goal

Introduce at least one static memory planner and manager suitable for MCU usage.

High level schema of interpreter setup: interpreter_initialization

High level interpreter algorithm:

Rationale

binarman commented 3 years ago

+cc @BalyshevArtem

BalyshevArtem commented 3 years ago

Brief explanation about circle-execution-plan tool

This tool takes circle file as input and returns modified circle file. The output circle file contains "plan" (CircleNodeMemoryPlan) information for every node.

"plan" contains:

In order to record and read this metadata, we use CircleImportMetadata and CircleExportMetadata. For this purpose we use std::map<uint32_t, std::vector<uint32_t>> _memory_plan_table which for each node with key ID contains encoded CircleNodeMemoryPlan data.

binarman commented 2 years ago

Functionality is merged, now we need to cover following code with tests: