Commit Graph

4 Commits

Author SHA1 Message Date
RJ Ascani 3323a41d69
Implement MicroContext/Graph for codegen (#2218)
The TFLM kernels use the MicroContext and MicroGraph interfaces to fetch
eval tensors and access other parts of the graph. Since codegen does not
have the MicroInterpreter and related objects to serve those, this PR
introduces a new MicroCodegenContext class that serves as both the
MicroContext and MicroGraph.

The MicroCodegenContext is configured with a span of Subgraphs, each of
which includes the inputs, outputs, nodes, tensors and an invocation
function. The code generator will create the data and functions needed
for each Subgraph and initialize the MicroCodegenContext with it. By
having the re-usable MicroCodegenContext, the code generator won't have
to generate nearly as much code.

BUG=b/295174086
2023-09-12 22:28:30 +00:00
RJ Ascani 4d07bd0f44
Generate static TfLiteEvalTensors (#2193)
This PR generates all of the TfLiteEvalTensors for the graph. It also generates all of the static buffers used for tensors that were present in the flatbuffer.

BUG=b/295077140
2023-08-29 03:44:17 +00:00
RJ Ascani f8ab03d6b7
Generate BuiltinData for FullyConnected (#2184)
Each operator has its own set of BuiltinOptions, which will translate into an op-specific TfLite Params structure. This change turns Operator into a base class with common functionality, and adds a FullyConnected subclass that knows how to generate the TfLiteFullyConnectedParams struct.

BUG=b/295175961
2023-08-24 18:32:39 +00:00
RJ Ascani 34691a66f2
codegen: Add TFLiteContext and TfLiteNodes (#2179)
This PR adds the generation of empty TfLiteContext and TfLiteNode structures, and generates appropriate invocation methods for each subgraph. It also generates the input, output, and intermediate arrays for each TfLiteNode.

BUG=b/295175961
2023-08-23 23:46:03 +00:00