Hi Andrew!

Thanks a lot for the review.

> → First off, I agree with @manupa-arm and @leandron that we should split the 
> compilation process into two pieces:
>
> 1. performing `tvm.relay.build` on a model (e.g. `tvmc compile`)
> 2. compiling a firmware binary (e.g. `tvmc micro build`)

> I think making this split gives us a few advantages, the main one being that 
> it allows `tvmc` to be a tool in development workflows we haven’t yet 
> envisioned. This also fits well with the way the rest of TVM is built.

OK.

> → Model Library Format
> I think this sounds very similar to Model Library Format, so I think we have 
> similar concerns. If we make the split above, it seems like they serve a 
> similar purpose. I think it would be great to wrap any concerns here into the 
> Model Library Format RFC, which we should write soon.

Right, I think there is a consensus round the need :) Model Library Format 
looks promising, I think it would be good to list all the use-cases (TVM, 
microTVM using an SDK, static runtime, application dlopen'ning directly a 
module .so) and examples for each on where (which folder) each kind of files 
will finally land after each command. I'll try to make it and comment on the 
Mini-map.

 > → Commands
> I think it might be interesting to contemplate making a `micro` sub-command 
> of `tvmc` for `build`, `flash`, and perhaps `run`. This would provide a place 
> for micro-specific commands without cluttering the top-level command tree of 
> tvmc, which could confuse non-micro users. So this would be:

Yeah, I thought a bit more about it. It sounds good, yep. I think `run` would 
need to have `micro` sub-command :+1: 

> and a new command `tvmc micro gen-project` (or something) would be added to 
> generate the e.g. Zephyr project.

oh that's cool. Copying (or generating) it from the template dir you mentioned 
right?

>→ Selecting microTVM targets
> I think if we specify `--target` on the command-line, that should be the TVM 
> target string. We could add “zephyr” to that target string, but here is one 
> thing to consider: the point of that target string is to capture, for 
> autotuning’s sake, the configuration of the code and target device up to the 
> point it impacts the timed implementation.

Right, I think it is not indeed necessary to pass the SDK (like `zephyr`) to 
the `compile` command because I understand `build.relay` doesn't need to know 
anything about the "board" (contrary to what is used in the prototype of this 
RFC document) and about the SDK used. `tvmc micro build` maybe should address 
it?

> For this, I’d propose that an e.g. git sha1 of the Project API repo should be 
> enough.

Sorry, I could not follow you here.

> I agree with this but I would also propose the caveat that device serial 
> numbers be left out of the generated metadata. The reason is that these are 
> specific to the machine while compiled firmware may not be, so placing them 
> in the Model Library Format metadata and then downstream artifacts may 
> restrict portability.

By "device serial numbers" do you mean the usb serial device number? If so 
currently we allow only one of such a device to be available and it's probed, 
failing if more than 1 serial port is available no? Maybe we should stick with 
that default and add an option to the user to specify it when desired. Anyway, 
I think that info should not be in the metadata, it should be left by the user 
to specify when `tvmc micro flash` and `tvmc run` is executed?





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/rfc-tvmc-add-support-for-tvm/9049/9) 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/26bf4baa6332fe1ed08f7ad05516a2af40a57b3d66486d5465fc0f32b3394149).

Reply via email to