Add a simple example to update the documentation on how the packing transformation is implemented.
Details
- Reviewers
Meinersbur grosser jdoerfert - Commits
- rG7758a2af538f: Update the documentation on how the packing transformation is implemented
rPLO293429: Update the documentation on how the packing transformation is implemented
rL293429: Update the documentation on how the packing transformation is implemented
Diff Detail
- Repository
- rL LLVM
Event Timeline
Why is the _access_ relation mapping to a 9 dimensional space. You talk about a _schedule_ here, right?
Right.
The access relation seems to implement a modulo constraint. It probably is easier to read if we write the modulo explicitly. I suggest to just submit a patch with this comment, then Michael and me can read over it and see if we still have some comments.
I've updated it.
Thanks for the comments!
lib/Transform/ScheduleOptimizer.cpp | ||
---|---|---|
840–845 ↗ | (On Diff #82220) | This is a mouthful to read and I cannot take any additional information from it. If show this here to illustrate the space of these isl_maps, I'd suggest to shorten it to something like { Domain[] -> Element[] } and { Domain[] -> Scatter[] } like I often do for DeLICM when the spaces are not obvious. If it is for showing a numerical example, this is way to complicated. It would be better if you would construct an illustrative example by hand that only contains the relevant parts instead of dumping something from a test case. |
850–852 ↗ | (On Diff #82220) | How did we get to this? { Stmt_for_body6[i0, i1, i2] -> [o0, o1, o2] ... } is a scatter function as taken by setNewAccessRelation(), but the phrase uses the term "access location" which I would be something like { Stmt_for_body6[] -> MemRef_CopyA[] }. |
853 ↗ | (On Diff #82220) | setNewAccessRelation is only the setter method updating the data, about as interesting as MA->NewAccessRelation = NewAccessRelation. It would be more interesting who calls it. |
lib/Transform/ScheduleOptimizer.cpp | ||
---|---|---|
850–852 ↗ | (On Diff #82220) | I mixed up something here. It has the space of a scatter function, but probably only the target array (eg. Packed_A) is missing here (and setNewAccessRelation() does not accept scatter functions) |
Update according to the comments.
This is a mouthful to read and I cannot take any additional information from it. If show this here to illustrate the space of these isl_maps, I'd suggest to shorten it to something like { Domain[] -> Element[] } and { Domain[] -> Scatter[] } like I often do for DeLICM when the spaces are not obvious.
I've tried to simplify the scheduling function and access relations. What do you think about it?