utTVM standalone runtime


From reading what I could find about micro TVM, I got the understanding that a standalone runtime is in the works but not available yet? Browsing the source code I saw a standalone directory and code exists under the uTVM tree.

How do I got about starting to use it?

Thanks :slight_smile:


I think @weberlo is the right person to answer this question. I am also curious about the current efforts on the standalone uTVM?

Hi folks,

The runtime in the standalone directory was developed by @ajtulloch in this PR, so he would be the best person to ask. Keep in mind that his runtime is currently not integrated into the µTVM infrastructure.

I personally haven’t tried using it yet, as I’ve been focusing on the AutoTVM-oriented (i.e., host-driven) runtime, where I’ve been experimenting with kernel optimizations. I plan to write a blog post about some of these optimizations in early March (I originally wanted to write the blog post in December, but I guess that’s Hofstadter’s law at work :sweat_smile:). After that, I plan on looking into standalone runtimes.

1 Like

Hi @weberlo,

Regarding the host-driven variant of uTVM. Is this mode something that can be implemented on a device that has an ARM running linux and a programmable accelerator?.

BTW, I am looking forward for your blog! Keep us posted! :slight_smile:

Hi all,

I would like to express my interest towards the uTVM standalone runtime as well. Hereto a couple of questions to shed light on the purpose and current development status - I hope that @weberlo and @ajtulloch could help clairify these:

  1. Is the standalone runtime meant for (Linux-less) minimal bare-metal devices? Or is it rather a light-weight runtime implementation, still requiring e.g. threading or other more complex functionality?

  2. The standalone runtime is integrated into the master already, however it doesn’t seem to be complete yet. What is the current development status?

  3. How is the standalone runtime meant to be used? Could anyone please provide at least a minimal example or tutorial?

I’m looking forward to your answer!! Thank you in advance!

@robeastbme See my comment above for (2) and (3).

@tico @robeastbme The standalone runtime will be geared towards bare-metal, and the end goal is to be able to compile an entire model (control logic + operators) into a single binary blob (perhaps an archive file) that can be loaded into a system running an RTOS (e.g., Zephyr or Mbed).

1 Like

Aside from the standalone runtime, you probably need newlib to be compiled with your toolchain, in order to support the environment without operating systems like Linux. In terms of RTOS like Zephyr, it has already integrated newlib as its C library (see this).