Recompilation Pipeline Feature for the exploration of interesting data properties #929
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This Draft PR introduces a basic recompilation pipeline designed to support recompilation during the execution of loops. The implemented functionality includes:
ForOps, feeding it as input to theRecompile Kernel. This allows the loop to be recompiled dynamically at each iteration.Key Features
Dynamic Loop Recompilation:
Recompile Passwraps aroundForOploop bodies, triggering recompilation of the loop during execution.Extensible Recompilation Control:
niterations or under specific runtime conditions).PassManagerfor theRecompileOpto utilize either the full pass pipeline or a subset of it.Testing:
RecompileOp Kernel Testvalidates the core functionality of the C++Recompile Kernel.Known Issues
There is currently an issue with the invocation of the recompilation kernel that needs to be resolved. Specifically:
This issue appears to be related to how arguments are forwarded to the kernel. A deeper analysis of the LLVM code generated by the program may provide insights into the root cause and potential solutions.
Areas for Further Development
This PR serves as a foundation for exploring the following enhancements:
PassManagerfor theRecompileOpshould execute the entire pass pipeline or only specific passes.Additionally:
NaNresults. Developing more robust and precise tests can better validate the pipeline and help identify edge cases or hidden issues.Tests and Validation
C++ Recompile Kernel Test:
Recompile Kernelprocesses MLIR strings correctly with the given inputs and outputs.Pipeline Integration Test: