-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[TVMScript] Schedule error reporting with new TVMScript printer (#13921)
This PR makes the following changes over TVMScript printer: 1. Apply the new TVMScript printer to report and render the schedule error, and keeps effect same as old `AsTVMScriptWithDiagnostic`. 2. Introduce more annotating and underlining interfaces for TVMScript ptrinter - `obj_to_annotate`: add comments to the final `StmtDoc` from `ObjectRef` - `obj_to_underline`: underline the final `Doc` from `ObjectRef` - `path_to_annotate`: add comments to the final `StmtDoc` from `ObjectPath` 3. Beautify the underline logic by introducing the `underline_exempted`, to exempt some useless underlines, e.g. indent, comments and doc string. demo: 1. `*_to_annotate`: for function: ```python @T.prim_func def _func(): T.evaluate(0) T.evaluate(1) T.evaluate(2) T.evaluate(3) T.evaluate(4) T.evaluate(5) T.evaluate(6) T.evaluate(7) ``` both the results of ```python _func.script( path_to_annotate={ ObjectPath.root().attr("body").attr("seq").array_index(1): "annotation 1", ObjectPath.root().attr("body").attr("seq").array_index(3): "annotation 3", ObjectPath.root().attr("body").attr("seq").array_index(5): "annotation 5", ObjectPath.root().attr("body").attr("seq").array_index(7): "annotation 7", } ) ``` and ```python _func.script( obj_to_annotate={ _func.body.seq[1]: "annotation 1", _func.body.seq[3]: "annotation 3", _func.body.seq[5]: "annotation 5", _func.body.seq[7]: "annotation 7", } ) ``` are ```python # from tvm.script import tir as T @T.prim_func def main(): T.evaluate(0) T.evaluate(1) # annotation 1 T.evaluate(2) T.evaluate(3) # annotation 3 T.evaluate(4) T.evaluate(5) # annotation 5 T.evaluate(6) T.evaluate(7) # annotation 7 ``` 2. `obj_to_underline`: for function ```python @T.prim_func def func(a: T.int32, b: T.int32): T.evaluate(a) T.evaluate(b) T.evaluate(a) T.evaluate(b) T.evaluate(a) T.evaluate(b) ``` the result of `func.script(obj_to_underline=[func.params[0]])` is ```python # from tvm.script import tir as T @T.prim_func def main(a: T.int32, b: T.int32): T.evaluate(a) ^ T.evaluate(b) T.evaluate(a) ^ T.evaluate(b) T.evaluate(a) ^ T.evaluate(b) ```
- Loading branch information
Showing
17 changed files
with
442 additions
and
105 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.