First half of Day 1
- One graphite bb is a cloog stmt
- Can have a pass to partition loop bodies more fine grained than scops - any paper on region formation. This is a problem? Iteration wise schedule and loop wise static/dynamic schedules intermixed.
- Two ways to build schedule - start from original schedule and evolve by applying one transform (now) or start from scratch Most tools use 1d schedules - not a restriction for future. Looks at schedule to determine data dep info. If use Pluto drop current schedule as soon as there is data dep info. scop params - loop bounds and array exps. A complexity wise IPA helps to bound parameters.
- if there are no loops - build iter domain checks - why work so hard.
- what is SCOP DEP GRAPH - from lambda
- apply transform - work in internal graphite rep (bad name)
- find transform - from graphite rep go to cloog AST's
- gloog - translate from cloog AST's to gimple
- value_* is gmp - ppl uses gmp
Second half of Day 1
- Make sure all old information is destroyed. Once codegen is done, we should not use old gcc info like lambda interchange. Figure out how to proceed. Use Konrad's dd analysis. Constraints are ok for gcc; matrices are not for dd analysis. Discuss to agree on the constraint interface to abstract backend of CLooG - Cedric. One interface to generate constraints. This makes merge of Sebastian's code to cloog harder but necessary. Patches are welcome.
- Unroll happens before graphite.
- Break on function call within bb or treat bb as black box and continue scop. As soon as there is safe IPA, we could get rid of scopes. In the end scop will be full function. Action - Albert wants to know who will work on this. Barrier can affect only one array so non affected parts of code can be moved. All in a cfg, there is a problem in Wrap-It. Function bar only touches one data ref, respect only that data ref.
- Handle loops as a thing to add or not. Another idea use single entry single exit regions.
- Need SESE limited by edges.
- Can not handle equal/unequal - all other ok, need single exit and affine Issue working on in Wrap-It - Deal with inequalities, boolean expressions - Albert. Prior to constraints to Polyhedra. Even after simplification too complex. Do we want to do it in the libs - union and convexify it. Too expensive. Paper by Fucuda, if polyhedra are bound/finite/no parameters there is a better algorithm. Intuition to deal with before library and then call the lib function as a bonus. At least handle equality.
- Want to merge multiple loops with non interesting stuff in between.
- If is_simple_operand is not occurring in cflow, then remove. Start with whole function as a blackbox and then refine. Albert says long term
- Sort out component_ref.
Can the qualities be rewritten with < or > - media code has special cases at borders
- If skip critical edges then you can handle not joinable - can be extended.
- FADA (Fuzzy Array Dataflow Analysis) does not like maybe conditions.
- Functions that write errno are not pure. Do MAYBE def errno (Sebastian). Maybe define attribute for errno - Albert thinks some people may be interested. Problem is very loose def for errno in C - can be very complex preprocessed. Long comments by Joseph in bugzilla.
Cedric talk
FFTS do <for i A[i+i], we want to call it a black box.
- Need to mark condition to show which loop it is invariant for, in case of interchange. Can know anything affine about condition. Give cond a name and propagate. In scev instantiate based on what you know. Can also do array privatization on ep.
- Black box in tag to every stmt, Can not do fusion unless conditions are same. No Backward dep.
- Can do slicing of loop based on iterations that depend on predicate and its that don't.
- Cloog should set order in which to traverse the points.
- 2/3 predicates - code size tradeoffs
- Don't handle for loops yet because of boolean (gcc only has while loops). Cant handle if upper bound variant in loop.
- Region formation and heuristics are needed when whole function is scop. Will scale for a while before it breaks. Tests in gcc bugzilla where PRE blows up - large switches. Can treat as a black box.
- switches in loops vs loops in switches - can optimize inside black box. Need to know how big scops should be.
- Benefits in applu from large scops. Done with Wrap it.
Roberto talk
- Limitation - dynamically pick gmp and native int
- Instead of being deterministic pick a time/memory and throw an exception if overflow. In exception then handle a limited polyhedra. Instead of time pick number of operations.
- Discuss PPL for graphite resources
- PPL not easily parallelizable. Cloog is. Roberto needs to consider thread safety.
- What to package gmp or native int- need 2 packages. Bloated mem allocation and no inlining with gmp.