Commit 67ed6e8
authored
Added Fine Grain Control to
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.MapFusionVertical. (spcl#2090)1 parent 6fbbeb5 commit 67ed6e8
2 files changed
Lines changed: 168 additions & 94 deletions
0 commit comments