-
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.
Our ROF implementation showed some correctness issues in how we implement code generation for filters. A filter looks as follows: ``` /- IU Prov 1 ----------------> Filter 1 ---> Sink 1 Src / \- IU Prov 2 -> FilterScope ---> Filter 2 -> Sink 2 \-----------------/ ``` The IUs going from FilterScope to the filters are void-typed pseudo IUs. The problem was that we could run into cases where FilterScope would generate its nested `IF` before both IU providers were opened. In those cases, we would generate the IU provider iterator only within the nested filter scope, causing it to "lag" behind the other iterator, producing incorrect results. The core problem is that we do not model a code generation dependency between `IU Prov 1 -> FilterScope`. This commit ensures that all input IU providers generate their code before the if is opened. Now, `Filter 1` and `Filter 2` only request code generation of `FilterScope`, and `FilterScope` requests generating both IU providers. This is done in somewhat hacky way, if we rebuilt the system today we should not model code generation dependencies through void-typed pseudo IUs. We should instead probably model IU and codegen dependencies separately.
- Loading branch information
Showing
10 changed files
with
83 additions
and
60 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
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