Changes between Version 5 and Version 6 of DataParallel/WorkPlan


Ignore:
Timestamp:
Jan 27, 2009 1:15:54 PM (6 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DataParallel/WorkPlan

    v5 v6  
    11 
    22== Work plan for implementing Data Parallel Haskell == 
    3  
    4 === Categories === 
    5  
    6 Tasks below are labelled with categories that indicate the purpose of the task: 
    7  
    8  ''Efficiency'':: 
    9    Improve scalability and/or baseline performance of generated code 
    10  ''Compile time'':: 
    11    Improve compile times 
    12  ''Ease of use'':: 
    13    Make the system easier or more convenient to use for end users 
    143 
    154=== Task assignments === 
     
    2312   – status: unknown 
    2413 
     14 ''Gabi'':: 
     15 
     16 ''Manuel'':: 
     17   '''Desugaring comprehensions''' 
     18   – status: not started 
     19 
    2520=== Open tasks === 
    2621 
    27  1. '''Replicate''' [''Efficiency'']: Implement an extended array representation that uses an optimised representation for arrays that are the result of common forms of replication (i.e., due to free variables in lifted expressions).  The optimised representation stores the data to be replicated and the replication count(s) instead of actually replicating the data.  This also requires all functions consuming arrays to be adapted. 
     22Category: ''efficiency'' (improve scalability and/or baseline performance of generated code): 
    2823 
    29  2. '''Recycling''' [''Efficiency'']: Use Roman's recycling optimisation (PADL'09) to avoid copying in `joinD`. 
     24 * '''Replicate:''' Implement an extended array representation that uses an optimised representation for arrays that are the result of common forms of replication (i.e., due to free variables in lifted expressions).  The optimised representation stores the data to be replicated and the replication count(s) instead of actually replicating the data.  This also requires all functions consuming arrays to be adapted. 
    3025 
    31  3. '''Scaling''' [''Efficiency'']: Investigate the scaling problems that we are seeing with vectorised code at the moment.  ('''Replicate''' and '''Recycling''' play a role here, but it is unclear whether that's all.) 
     26 * '''Recycling:''' Use Roman's recycling optimisation (PADL'09) to avoid copying in `joinD`. 
    3227 
    33  4. '''Test new inliner''' [''Compile time'' & ''Efficiency'']: Retest package dph with new inliner and the simplifier changes and try to simplify the library on the basis of these new phases. 
     28 * '''Scaling:''' Investigate the scaling problems that we are seeing with vectorised code at the moment.  ('''Replicate''' and '''Recycling''' play a role here, but it is unclear whether that's all.) 
    3429 
    35  5. '''Code blow up''' [''Compile time'']: GHC generates a lot of intermediate code when vectorisation is enabled, leading to excessive compilation times.  Find out whether the new inliner helped here and what else can be done to improve this situation. 
     30 * '''Test new inliner:''' Retest package dph with new inliner and the simplifier changes and try to simplify the library on the basis of these new phases. 
    3631 
    37  6. '''Conversion of vectorised representations''' [''Ease of use'']: We need other than just identity conversions between vanilla and vectorised data representations, especially `[:a:] <-> PArray a`.  This will make the system more convenient to use. 
     32 * '''Desugaring comprehensions:''' The current desugaring of array comprehensions produces very inefficient code.  This needs to be improved. 
     33 
     34Category:  ''Compile time'' (improve compile times): 
     35 
     36 * '''Code blow up:''' GHC generates a lot of intermediate code when vectorisation is enabled, leading to excessive compilation times.  Find out whether the new inliner helped here and what else can be done to improve this situation. 
     37 
     38Category: ''Ease of use'' (make the system easier or more convenient to use for end users): 
     39 
     40 * '''Conversion of vectorised representations:''' We need other than just identity conversions between vanilla and vectorised data representations, especially `[:a:] <-> PArray a`.  This will make the system more convenient to use. 
     41 
     42 * '''Selective vectorisation:''' The scheme from our DAMP'08 paper that enables mixing vectorised and unvectorised code in a single module. 
     43 
     44 * '''Unboxed values:''' Extend vectorisation to handle unboxed values. 
     45 
     46 * '''Prelude:''' Extend vectorisation to the point, where it can compile the relevant pieces of the standard Prelude, so that we can remove the DPH-specific mini-Prelude.  (Requires: '''Unboxed values) 
     47 
     48Category: ''Case studies'' (benchmarks and example applications): 
     49 
     50 * '''Matrix representation:'''  
     51 
     52 * '''N-body:''' Get a fully vectorised n-body code to run.