Autotuning with micro TVM tutorial

Hi @areusch,

Please let me ask you a bit more about AutoTVM.

I’m browsing the whole TVM project to find how the workflow in the backend changes if you specify a zephyr board here, so that I would know how to do AutoTuning without depending on zephyr.

As a user going though the tutorial, it looks if you want to run host-driven or AutoTVM, it is mandatory to use zephyr and west to tune parameters, flashing the memory and running repeatedly. I’d like to know if it’s possible for users to run host-driven or AutoTVM on MCUs which are not supported by zephyr.

  1. Must I use zephyr to run host-driven or AutoTVM for the moment?

  2. If yes, do you have any plan to enable users to use boards not supported by zephyr?

  3. If no, do I still need to customize TVM to run host-driven or AutoTVM on whatever MCUs? For example, in the AutoTVM tutorial, the workflow looks seamless because TVM Python APIs work as a user interface to run west commands. We can build zephyr projects and flash them onto MCUs by Python APIs. However, if we don’t use zephyr, this is not the case. So it is probably necessary to modify or add some TVM c++ code?

  4. I was following how project_options flows into Python and C++ code and how it is used, which unfortunately failed. Could you tell me the part where the program branches, one is for zephyr and the other is for non zephyr. I guess this part is exactly where I can know how to go without zephyr maybe?

I think my question is very similar to the link below.

He is mentioning

zephyr is limited in the flashing capabilities, which would be a problem for autoTVM.

This is what I exactly want to say. It looked difficult to customize the AutoTVM so that we can be independent of zephyr. Please share if there has been any updates on this.