Skip to content

Commit 67ed6e8

Browse files
Added Fine Grain Control to MapFusionVertical. (spcl#2090)
The transformation already offers the `assume_always_shared` flag, which tells the transformation to assume that the intermediate is shared, which allows to skip the scan of the SDFG. Intermediate are classified into two categories: - Shared: Which need to be retained, because they are used somewhere else. - Exclusive: Only needed to exchange information between the two Maps. This PR introduces the `require_exclusive_intermediates` flag, which instructs the transformation to only apply if the intermediates are exclusive, i.e. will be removed after the fusion. It is important that `require_exclusive_intermediates` does not influence the "pure outputs" of the first Map, i.e. the outputs that are not used by the second Map. To address this the `require_only_intermediates` flag was introduced. The flag instructs the transformation to only apply if all outputs of the first Map are intermediates, i.e. are consumed by the second Map. The main use case for these flags is if the transformation is used through the `apply_to()` and `can_be_applied_to()` functions. Where one wants to make sure that some intermediate is removed. This PR also introduced the undocumented `_single_use_data` argument to the initializer of the transformation. The `_single_use_data` member of the transformation is a work around to handle [issue#1911](spcl#1911). However, when used with `apply_to()` and `can_be_applied_to()` then it is not possible to specify the information, although it is present. This is not nice and instead the underlying issue should be addressed.
1 parent 6fbbeb5 commit 67ed6e8

2 files changed

Lines changed: 168 additions & 94 deletions

File tree

0 commit comments

Comments
 (0)