Hi @tqchen,
I appreciate your reply with further clarifications, though I’m struggling to reconcile them with the original RFC presented here.
Although they’re isomorphic in structure, the packaged Target
has no proven advantage and serves to increase the overall complexity of any additional work in TVM due to the considerations of a potentially recursive Target
. I would need a strong motivation for implementing such a complex design, given this RFC aims to reduce complexity by creating explicit structures.
As in my previous post, I didn’t mean to encourage the notion that only the tvmc
flow was considered when presenting this RFC. C2 is where tvmc
is right now, working around the limitations of the TVM API, with graph partitioning tvmc
creates its own pipeline on top of TVM to make the feature simple to use. The RFC is therefore aiming to bring some of the learning from tvmc
back into the main compilation flow, with some of the advantages listed in the original post that point towards construction of a configuration, whether it be C0 or C1 for use in any compilation flow.
Taking a step back, if we consider this RFC to be adding the C1 type of configuration, is the requirement for moving this forwards that we must also define a mechanism for C0 configuration? Or can we leave dealing with the global state of PassContext
to a future RFC where-in we can discuss how to better manage C0 configuration?
Furthermore, if we accept that C1 configuration can be attached to an IRModule
, what prevents us proceeding with the CompilationConfig
initially suggested given we still have yet to see a clear motivating example as to why we need a recursive definition of Target
?