You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 28, 2023. It is now read-only.
The original implementation of extractDomainToThreads was assuming that
thread mapping filter nodes also include constraints on the domain
elements active at that position in the schedule tree. This is not the
case in practice, the mapping filters are defined for statements without
restricting the instance sets. Therefore, the thread mapping functions
computed by extractDomainToThreads are incorrect for trees that schedule
different instances of the same statement in different branches. In
particular, calling "union_add" takes a sum of the two mappings for the
statements whose instances appear in different branches.
Intersect the domain of the thread mapping function with the set of
points active at the mapping node. Introduce a check that the result of
this intersection and the set of instances with known mapping is
disjoint.
Note that, to enable the check that all domain points were mapped, the
intersection must be made with the active domain points without
accounting for ancestor mapping filters. In particular, if
extractDomainToIds is called on the root of a mapped tree and looks for
thread ids, the mapping to blocks will be considered to filter out some
domain points and the thread mapping will not cover the entire domain.
Introduce "activeDomainPointsNoMapping" to avoid this problem. Unlike
"activeDomainPoints", this function does not take into account extension
nodes. This is currently safe because the callers of
"extractDomainToIds" do not rely on it returning the mapping of the
elements introduced by extension nodes. Comment them accordingly.
In the future, we should reconsider activeDomainPoints interpreting
MappingFilter nodes as regular filters, or mappings being filters in
general, as well as "activeDomainPointsNoMapping" ignoring extension
nodes.
0 commit comments