tico
July 31, 2019, 10:45am
1
Hi,
I saw that recently the uTVM support was merged, this is definitely good news as is a major step to bring TVM to a wider range of bare metal embedded platforms!
committed 05:12PM - 25 Jul 19 UTC
* uTVM interfaces (#14)
* some minor interface changes
* implemented HostL… owLevelDevice
* added MicroDeviceAPI
* implemented micro_common and added Python interfaces
* current status, semi implemented micro session
* added micro_common implementation and python interfaces (#18)
* added micro_common implementation and python interfaces (#18)
* current status, semi implemented
* host test working
* updated interfaces for MicroSession arguments allocation
* make somewhat lint compatible
* fix based on comments
* added rounding macro
* fix minor bug
* improvements based on comments
* Clean up `binutil.py` and make Python-3-compatible
* Change argument allocation design
* Address feedback and lint errors
* Improve binutil tests
* Simplify allocator (per @tqchen's suggestions)
* Doc/style fixes
* farts
* mcgee
* rodata section werks
(and so does `test_runtime_micro_workspace.py`)
* simple graph runtime werk
* TEMP
* ResNet works, yo
* First round of cleanup
* More cleanup
* runs a dyson over the code
* Another pass
* Fix `make lint` issues
* ready to pr... probably
* final
* Undo change
* Fix rebase resolution
* Minor fixes
* Undo changes to C codegen tests
* Add `obj_path` in `create_micro_lib`
* TEMP
* Address feedback
* Add missing TODO
* Partially address feedback
* Fix headers
* Switch to enum class for `SectionKind`
* Add missing ASF header
* Fix lint
* Fix lint again
* Fix lint
* Kill lint warnings
* Address feedback
* Change Python interface to MicroTVM
All interaction with the device is now through `Session` objects, which
are used through Python's `with` blocks.
* Reorder LowLevelDevice interface
* Store shared ptr to session in all alloced objects
* Move helper functions out of `tvm.micro`
* Switch static char arr to vector
* Improve general infra and code quality
Does not yet address all of tqchen's feedback
* Forgot a rename
* Fix lint
* Add ASF header
* Fix lint
* Partially address MarisaKirisame's feedback
* Lint
* Expose `MicroSession` as a node to Python
* Revert to using `Session` constructor
* Fix compiler error
* (Maybe) fix CI error
* Debugging
* Remove
* Quell lint
* Switch to stack-based session contexts
* Make uTVM less intrusive to host codegen
And use SSA for operands of generated ternary operators
* Inline UTVMArgs into UTVMTask struct
* Remove `HostLowLevelDevice` header
* Remove `BaseAddr` class
* Address feedback
* Add "utvm" prefix to global vars in runtime
* Fix lint
* Fix CI
* Fix `test_binutil.py`
* Fix submodules
* Remove ResNet tests
* Make `test_binutil.py` work with nose
* Fix CI
* I swear this actually fixes the binutil tests
* lint
* lint
* Add fcompile-compatible cross-compile func
* Add docs for uTVM runtime files
* Move pointer patching into `MicroSession`
* Fix lint
* First attempt at unifying cross-compile APIs
* Fix lint
* Rename `cross_compile` back to `cc`
* Address feedback
* Remove commented code
* Lint
* Figure out failing function
* Remove debugging code
* Change "micro_dev" target to "micro"
* Add checks in tests for whether uTVM is enabled
* Add TODO for 32-bit support
* Rename more "micro_dev" to "micro"
* Undo rename
We already have `tvm.micro` as a namespace. Can't have it as a method
as well.
* Fix failing CI
Thanks to @tqchen for finding this bug. Emitting ternary operators for
`min` and `max` causes concurrency bugs in CUDA, so we're moving the
ternary op emissions from `CodeGenC` to `CodeGenCHost`.
* Address feedback
* Fix lint
In order to start working with it, I was wondering if there is already a proper documentation of uTVM and/or tutorials?
Thanks
Documentation/tutorials would be great to have @weberlo . @tico what are the microcontrollers of interest?
tico
August 1, 2019, 2:11pm
3
Hi @thierry ,
At the moment we do not have very specific microcontrollers in mind. In general, the goal is to be able to deploy TVM on bare metal systems. Therefore, I would like to have a look into a uTVM documentation and possibly a tutorial to get started with uTVM. Also, it would be nice to understand limitation of the current implementation of uTVM.
Thanks!