> I agree with you wholeheartedly, we need to be careful with naming here; 
> based on your comments it might be good to pick something like 
> `--packed-functions` which defaults to running `MakePackedAPI` ? Maybe 
> `--packed-internal-functions` or `--packed-operator-functions` ?

How about `--unpacked-api`? I know best practices often suggest to avoid naming 
booleans with a negated prefix, but in this case we have a good reason to: 
because we're abusing Target. Also, "unpack" is a common word and seems to be 
what we're using internally (`call_unpacked`). I'd mainly like to ensure the 
option doesn't default to true, as that will break autotuning.

> Given the micro entrypoint is a C2 function, I’d propose we don’t add a C0 
> behaviour to the option. Is the use-case here to provide the C2 entrypoint 
> for the application and also providing a C0 wrapper for operators in the same 
> bundle with a different path in the application to allow calling them 
> directly?

The idea here is to enable the RPC server to call the AOT executor function. 
Doing this allows someone to write a single generic firmware entry point, 
couple it to an arbitrary compiled model, and then drive inference from Python. 
It's not a deployment use case, but may speed prototyping; it's also the same 
workflow we would use to support autotuning.

> I thought on this a bit and potentially we should change the name of 
> `--micro-entrypoint` to just `--entrypoint` and default it to `packed` which 
> generates the packed function interface for module loading, a better name may 
> be `module` to reflect the entrypoints purpose? This should provide us with 
> the ability to name the relevant interface.

Or even `--model-entrypoint-api` or `--entrypoint-api` might be good. 

> As for implementing this in TIR, I believe there’s a few limitations in how 
> much TIR understands `struct` s which we’re proposing in [[RFC] [uTVM] 
> Embedded C Runtime 
> Interface](https://discuss.tvm.apache.org/t/rfc-utvm-embedded-c-runtime-interface/9951).
>  Though I think we’re aligned in the view this should be done via code 
> generation rather than this initial solution - I did have an implementation 
> that filtered the passes based on the entrypoint function originally so I 
> don’t think this is too hard to achieve.

Agreed--there was some user-defined data type work being done. cc @ziheng if he 
could give a status update.

> After the initial deployment of a model, integrating the whole 
> `standalone_crt` may be necessary, at which point we shouldn’t prohibit that, 
> it just takes a bit more understanding of the pieces you might need? In which 
> case, my hope is the embedded interface allows that use case of deploying 
> with a few headers and then expanding when your application demands it.

I agree you shouldn't need to include everything in `src/`. The sub-directories 
there should provide some split points, and we should provide some guidance in 
documentation as to which are needed for which use cases. The main point is: 
I'm not sure it's super-necessary to split out the `include` directory in a 
similar fashion. They shouldn't add any bloat to the firmware. Let me know your 
thoughts on this.

> Ideally I’d like to land the micro entrypoint as a separate PR once 8023 lands

Yep sounds good!





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/rfc-utvm-aot-optimisations-for-embedded-targets/9849/13)
 to respond.

You are receiving this because you enabled mailing list mode.

To unsubscribe from these emails, [click 
here](https://discuss.tvm.apache.org/email/unsubscribe/7d063502e2f1670ddb9ab7988f94853d59840945d582e689097a1c0bd1bc24cb).

Reply via email to