-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit implements Relaxed Operator Fusion in InkFuse. We extend all existing tests to now also test our ROF backend. Incremental Fusion conceptually supports relaxed operator fusion. The tuple buffers that we can install between arbitrary suboperators are similar to ROF staging points. This leads to a relatively small code change to integrate ROF in InkFuse. The main modifications are all found in the `PipelineExecutor`. At a high-level, ROF in InkFuse goes through the following steps: 1. A `Suboperator` can attach a `ROFStrategy` in its `OptimizationProperties`. This indicates whether the suboperator prefers compilation or vectorization. 2. The optimization properties become easy to use through an `ROFScopeGuard` in `Pipeline.h`. When we decay an operator into suboperators, this `ROFScopeGuard` can simply be set up during suboperator creation and indicates that the generated suboperators should all be vectorized. 3. The `PipelineExecutor` now splits the topological order of the suboperators into maximum connected components that have vectorized or JIT preference. The JIT components are then compiled ahead of time. 4. The ROF backend then iterates through the suboperator topological sort. Any interpreted comment uses the pre-compiled primitives. Any compiled component uses the JIT code. In a next step, we will extend our benchmarking binaries with ROF support and start performance measuring the ROF backend.
- Loading branch information
Showing
39 changed files
with
615 additions
and
260 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
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.