The development of new schedulers is relatively bug-prone, so the cpp compile time latency is cumbersome.
pytestframework allows creating parameter space for a single test. A developer can iterate and benchmark several configurations while developing heuristics for a scheduler.
Open Questions:
How should we refactor the CPP scheduling API to improve usability?
@kevinstephano has suggested splitting the CPP ParallelType enum into Parallelization and LoopTransform enums in python frontend.
Error-checking?
Error checking is already handled in CPP, but reimplementing simple checks could improve developer quality of life.
Experimental Scheduling API?
Some aspects of NvFuser’s scheduling API are experimental. Backward and forward compatibility for experiment functions would not be guaranteed. Currently, an experimental API is denoted with an underscore appended to the front of the function's name.
Why are we doing this?
Facilitate rapid prototyping of new schedulers.
pytest
framework allows creating parameter space for a single test. A developer can iterate and benchmark several configurations while developing heuristics for a scheduler.Open Questions:
How should we refactor the CPP scheduling API to improve usability?
ParallelType
enum intoParallelization
andLoopTransform
enums in python frontend.Error-checking?
Experimental Scheduling API?
Some aspects of NvFuser’s scheduling API are experimental. Backward and forward compatibility for experiment functions would not be guaranteed. Currently, an experimental API is denoted with an underscore appended to the front of the function's name.
Which scheduling operations to implement?
TensorView
Scheduling Utilities
Filtering Utilities
Enum
Debug