Changes between Version 18 and Version 19 of DataParallel/Replicate

Show
Ignore:
Timestamp:
08/07/11 06:51:05 (22 months ago)
Comment:

--

Unmodified
Removed
Modified
• DataParallel/Replicate

v18 v19
2222        s2      = sliceP half half  xx
2323      in concatP (mapP (treeLookup table) [:s1, s2:])
24      -- or better: concatP (mapP (treeLookup table) (segmentP [:half, len - half:] xx))
2425}}}
2526Here `table` is constant in `mapP (treeLookup table) [:s1, s2:]`; hence, the entire `table` gets duplicated on each level of the recursion, leading to space consumption that is exponential in the depth of the recursion.

9091=== Reduction ===
9192
92  TODO: rl's exmaple
93 TODO: rl's example
9394
94 === Multiple levels of nesting ===
95=== Splitting and combining ===
96
97Due to lifted conditionals (or, generally, case constructs), arrays with repeated segments may be split (packed) and combined.  Arrays with repeated segments can be split (or packed) by including a repeated segment in the result exactly if one of its repetitions is included.  This can be determined by disjunctively combining all flags for one sequence of repeated segments.
98
99Arrays with repeated segments can not always be combined without duplicating the data corresponding to repeated segments (after all, a disjoint segment may be inserted into a sequence of repeated segments).  For simplicity, we may want to expand all repeated segments in `combinePA`.  (It seems that this should not lead to unexpected blow-ups as the repeated data now is part of a functions result and should be accounted for in its complexity estimate.)
100
101=== Multiple levels of nesting (unconcat and concat) ===
95102
96103TODO: What if we have segment descriptors on top of one with repeated segments?