Changes between Version 18 and Version 19 of DataParallel/Replicate


Ignore:
Timestamp:
Aug 7, 2011 1:51:05 PM (3 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
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?