Changes between Version 14 and Version 15 of Status/Oct09


Ignore:
Timestamp:
Nov 4, 2009 4:43:43 AM (5 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/Oct09

    v14 v15  
    172172=== Data Parallelism === 
    173173 
    174 Data Parallel Haskell has seen few user-visible changes since the last report.  Nevertheless, Roman Leshchinskiy has been busy improving many of the fundamental building blocks behind the scenes.  These changes were necessary as DPH was able to generate very fast parallel code for simple examples, but the optimisation infrastructure was been too fragile — i.e., small changes to other parts of GHC (most notably, the Simplifier) or to the DPH libraries could lead to dramatic performance regressions.  Over the last few months, Roman has been working on making the system more robust, while Simon PJ improved and extended parts of GHC's existing optimisation infrastructure (such as the Inliner and other aspects of the Simplifier) to support Roman's efforts.  As a first consequence of this recent work, the divide-and-conquer quickhull benchmark (computing a convex hull) is now significantly faster than the corresponding list-based implementation [!QuickHull].  This is an important milestone as quickhull uses dynamically nested parallelism whose depth is not statically bound. 
    175  
    176 Gabriele Keller implemented a first prototype of a new library API for ''regular multi-dimensional'' arrays to complement the existing irregular, nested arrays.  For regular computations on dense matrices, relaxation methods and similar, regular arrays (as opposed to nested arrays) are more convenient and expose additional opportunities for optimisation.  Gabriele obtained very encouraging first results with a sequential version that uses a new fusion technique, which we are calling ''delayed arrays'' [!RegLibBench]. 
     174Data Parallel Haskell has seen few user-visible changes since the last report.  Nevertheless, Roman Leshchinskiy has been busy improving many of the fundamental building blocks behind the scenes.  These changes were necessary as DPH was able to generate very fast parallel code for simple examples, but the optimisation infrastructure was too fragile — i.e., small changes to other parts of GHC (most notably, the Simplifier) or to the DPH libraries could lead to dramatic performance regressions.  Over the last few months, Roman has been working on making the system more robust, while Simon PJ improved and extended parts of GHC's existing optimisation infrastructure (such as the Inliner and other aspects of the Simplifier) to support Roman's efforts.  As a first consequence of this recent work, the divide-and-conquer quickhull benchmark (computing a convex hull) is now significantly faster than the corresponding list-based implementation [[http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs QuickHull]].  This is an important milestone as quickhull uses dynamically nested parallelism whose depth is not statically bound. 
     175 
     176Gabriele Keller implemented a first prototype of a new library API for ''regular multi-dimensional'' arrays to complement the existing irregular, nested arrays.  For regular computations on dense matrices, relaxation methods and similar, regular arrays (as opposed to nested arrays) are more convenient and expose additional opportunities for optimisation.  Gabriele obtained very encouraging first results with a sequential version that uses a new fusion technique, which we are calling ''delayed arrays'' [[http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09 RegLibBench]]. 
     177 
     178In parallel with the implementation of regular, multi-dimensional arrays as part of DPH, Sean Lee and Manuel Chakravarty are implementing almost the same array API as an EDSL in `Data.Array.Accelerate`.  The EDSL implementation restricts the expressiveness of the array language, but at the same time enables us to experiment with more ambitious backends — especially with GPU code generation via CUDA and related technologies. More details are in the video of Manuel's talk from the Haskell Implementors Workshop in Edinburgh [[http://justtesting.posterous.com/running-haskell-array-computations-on-a-gpu AccelerateTalk]]. 
    177179 
    178180=== Code generation === 
     
    231233 * [!UserManual] GHC 6.12 user manual.  http://www.haskell.org/ghc/dist/current/docs/html/users_guide/index.htm 
    232234 
    233  * [!QuickHull] [http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs] 
    234  
    235  * [!RegLibBench] [http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09] 
     235 * [!QuickHull] DPH !QuickHull source code [http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs] 
     236 
     237 * [!RegLibBench] Dense matrix-matrix multiplication benchmark with delayed, regular arrays [http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09] 
     238 
     239 * [!AccelerateTalk] "Haskell Array, Accelerated (Using GPUs)", Manuel M T Chakravarty, presented at the ''Haskell Implementors Workshop 2009'', Edinburgh. [http://justtesting.posterous.com/running-haskell-array-computations-on-a-gpu] 
    236240 
    237241== Bibliography: wiki == 
     
    241245 * [Platforms] Platforms that GHC supports [wiki:Platforms] 
    242246 * [Annotations] Annotations in GHC [wiki:Annotations] 
    243  * [!CodeGen] The new codegen pipeline [wike:Commentary/Compiler/NewCodeGenPipeline] 
     247 * [!CodeGen] The new codegen pipeline [wiki:Commentary/Compiler/NewCodeGenPipeline]