Thanks for the RFC. The main thing that I think worth doing is scoping, so that
the relation of the proposed module can be reasonably understandable by the
overall community. Here are two things
## Clarifying the interface
- X0: TVM had a heavy focus on a fixed, small set of universal interface that
users interact with, namely PackedFunc, Object system and extensions being
defined using that system.
- For example, when a user seek to pass in memory allocator, or Map, they
simply create an Object and pass that to a PackedFunc, as a result, the overall
FFI API of TVM runtime remains stable.
- X1: MicroTVM introduced a special set of interface, namely unpacked API,
additionally, there are explicit specifications such as workspace, device.
X1 brings different set of complexity to our overall pipeline, but is also an
understandable set of design choices for low resource embedded environment as a
result we include it to empower our broader community. One consequence of X1
was a generator-based approach to generate interfaces -- it was not very
obvious in the proposal but becomes obvious when reading the PR.
That particular approach is fine, but would be great to clarify "what is the
interface" that the users are expecting when interacting with the project.
## Scoping
Because X1 is a different set of runtime API designed with a different
environment in mind. X0 and X1 do provide different kinds of runtime user
experiences(for different category of users). So it would be helpful to scope
the module in a way such that they are clear and not become point of confusion
for the users. For example, having namespacing and folders would help, either
using the current micro branding, or embedded. This would bring clarity to the
users and developers when looking at those modules.
--
Reply to this email directly or view it on GitHub:
https://github.com/apache/tvm-rfcs/pull/96#issuecomment-1372526217
You are receiving this because you are subscribed to this thread.
Message ID: <apache/tvm-rfcs/pull/96/[email protected]>