Changes between Version 5 and Version 6 of DataParallel/Library


Ignore:
Timestamp:
Aug 30, 2011 9:21:30 AM (3 years ago)
Author:
benl
Comment:

Delete obsolete info concerning BArr arrays

Legend:

Unmodified
Added
Removed
Modified
  • DataParallel/Library

    v5 v6  
    3333'''SLPJ: is it correct that GHC only generates Names in dph-prim?  If not, could it be made true?''' 
    3434 
    35 == Array library of flat and segmented operations == 
    36  
    37 '''TODO:''' Here we need to document the structure of the current implementation with subpages for the more complicated aspects (e.g., representation types, distributed types, and gangs).  Here a dump of an old description of the library structure (which may be somewhat out of date): 
    38 {{{ 
    39 Data.Array.Parallel.Lifted 
    40         ... the final user types ... 
    41  
    42 Data.Array.Parallel.Unlifted 
    43   Re-exports Data.Array.Parallel.Unlifted.Parallel 
    44              Data.Array.Parallel.Unlifted.Distributed 
    45              Data.Array.Parallel.Unlifted.Segmented 
    46              Data.Array.Parallel.Unlifted.Flat 
    47  
    48 Data.Array.Parallel.Unlifted.Parallel 
    49   Parallel operations over UArrs.  No new data types! 
    50   These operations each 
    51         - convert the incoming (UArr t) to a Dist (UArr t) 
    52         - run the operation in parallel using a gang 
    53         - convert the result back to a (UArr t') 
    54   Plus fusion rules, of course! 
    55  
    56 Data.Array.Parallel.Unlifted.Distributed 
    57   Logically: type Dist a = Array GangMember a 
    58         That is, one 'a' per gang member 
    59   Mutable version: MDist 
    60  
    61   Element types: unboxed, and products, (),  
    62                  *and* UArr, SUArr, Segd. 
    63   
    64 Data.Array.Parallel.Unlifted.Segmented 
    65   Provides SUArr, which are segmented UArrs with exactly one nesting level 
    66   Logically: type SUArr a = UArr (UArr a) 
    67   Element types: unboxed, and products and (). 
    68  
    69   Again, a mutable version MSUArr is defined internally. 
    70  
    71 Data.Array.Parallel.Unlifted.Flat 
    72   Provides immutable (UArr) arrays of unboxed 
    73   values, and strict products thereof. 
    74  
    75   Simply lifts BUArr to work over strict products (incl unit). 
    76   Internally to Flat, we also define mutable (MUArr) arrays,  
    77   but they aren't exported. 
    78  
    79         .UArr: representation 
    80         .Loop: main loop combinator over UArr, loopU 
    81         .Fusion: fusion rules for loopU 
    82         .Combinators: instantiate loopU (to get fold, scan, map etc) 
    83    
    84   The exported maps and folds over these arrays are  
    85   purely sequential 
    86  
    87 Data.Array.Parallel.Arr.BUArr 
    88   Arrays of *unboxed* values, immutable (BUArr t) and mutable (MBUArr 
    89   t), indexed by Int.  Supports slicing (= sub-segment) operations. 
    90  
    91   ToDo: combine with UArray and STUArray? (But they are indexed by Ix.) 
    92  
    93   ToDo: a common pattern (e.g. when filtering) is that we allocate a 
    94   big mutable array, *partially* fill it, and then want to shrink to 
    95   fixed size when freezing it. (This is needed in Don's ByteString 
    96   library too.) 
    97  
    98  
    99 Data.Array.Parallel.Base.Fusion 
    100   Specialised combining functions that specialise loopU to be map, fold, etc 
    101   They are also useful for loopBU; hence not in Unlifted.Flat 
    102    
    103 Data.Array.Parallel.Arr.BBArr 
    104   Similar to BUArr, but for strict, boxed values.   
    105   Representation: Array, STArray. 
    106   Main application: array of UArrs in Distibuted.Types 
    107 }}}