Lunderberg commented on PR #15916:
URL: https://github.com/apache/tvm/pull/15916#issuecomment-1787961361
> The simpler approach, is actually to just enable well-form check to detect
the related issues and require tuple to be inlined.
Oh, certainly agreed that the well-formed check is the simpler one to
introduce in the short-term. I think it adds complexity in the long-term,
though.
* Not evident to readers of the code. A well-formed check can only detect
ill-formed IR once it has been generated. Encoding it in the C++ types used in
the IR informs a reader what structures are allowed.
* Not evident to pass writers. A well-formed check can only detect
ill-formed IR after a pass runs. Encoding it in the C++ types of the IR
provides feedback from the C++ compiler, because ill-formed structures would
cause a compilation error.
* Not comprehensive. A well-formed check can only detect whether the
currently tested input to a pass produces ill-formed IR. Encoding a
requirement in the C++ types of the IR ensures that a pass cannot produce
ill-formed IR.
> Where pass writer can simply do the items if needed once detected by
wellform check.
This is the case I want to avoid, because this is too late of a warning. It
occurs after a pass has been designed and written, often only when more
comprehensive inputs are used in CI. Adding a new design constraint that late
in development often requires re-design of the implementation in order to
follow the new constraint, resulting in significant repetition of effort.
> Aka we would like to eliminate the extra binding lookup for both syntax
reason, as well as reduction of metral overhead for having to think about
optional binding lookup or polymorphism.
I agree with the reasoning of reducing the mental overhead, but think that
comes from having as many constraints exposed to the C++ type system as
possible. (See [earlier
comment](https://github.com/apache/tvm/pull/15916#issuecomment-1781157045) for
ways this could be done.) By making illegal states be impossible to represent,
the mental overhead of avoiding illegal states is removed. If illegal states
can be represented, we increase the mental overhead of avoiding those illegal
states.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]