Changes between Version 12 and Version 13 of Status/Apr10


Ignore:
Timestamp:
May 5, 2010 4:11:27 PM (4 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/Apr10

    v12 v13  
    2121 * Quasi-quotes can now appear as a top-level declaration, or in a type, as well 
    2222   as in a pattern or expression. 
    23  * Quasi-quotes have a less noisy syntax 
     23 * Quasi-quotes have a less noisy syntax (no "$") 
    2424Here's an example that illustrates both: 
    2525{{{ 
     
    110110There has been a lot of restructuring in the RTS over the past few months, particularly in the area of parallel execution.  The biggest change is to the way "blackholes" work: these arise when one thread is evaluating a lazy computation (a "thunk"), and another thread or threads demands the value of the same thunk.  Previously, all threads waiting for the result of a thunk were kept in a single global queue, which was traversed regularly.  This lead to two performance problems.  Firstly, traversing the queue is O(n) in the number of blocked threads, and we recently encountered some benchmarks in which this was the bottleneck.  Secondly, there could be a delay between completing a computation and waking up the threads that were blocked waiting for it.  Fortunately, we found a design that solves both of these problems, while adding very little overhead. 
    111111 
    112 We also fixed another pathalogical performance case: when a large numbers of threads are blocked on an MVar and become unreachable at the same time, reaping all these threads was an O(n^2^) operation.  A new representation for the queue of threads blocked on an MVar solved this problem. 
     112We also fixed another pathological performance case: when a large numbers of threads are blocked on an MVar and become unreachable at the same time, reaping all these threads was an O(n^2^) operation.  A new representation for the queue of threads blocked on an MVar solved this problem. 
    113113 
    114114At the same time, we rearchitected large parts of the RTS to move from algorithms involving shared data structures and locking to a message-passing style.  As things get more complex in the parallel RTS, using message-passing let us simplify some of the invariants and move towards having less shared state between the CPUs, which will improve scaling in the long run. 
     
    118118=== Data Parallel Haskell === 
    119119 
    120 In the last months, our focus has been on improving the scalability of the [http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs Quickhull] benchmark, and this work is still ongoing.  In addition, Roman has invested significant energy into the increasingly popular package [http://hackage.haskell.org/package/vector-0.6.0.1 vector] and the [http://hackage.haskell.org/package/NoSlow NoSlow] array benchmark framework.  Package vector is our next-gen sequential array library, and we will replace the current sequential array component (dph-prim-seq) with package vector sometime in the next few months. 
     120In the last months, our focus has been on improving the scalability of the [[http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs Quickhull]] benchmark, and this work is still ongoing.  In addition, Roman has invested significant energy into the increasingly popular [[http://hackage.haskell.org/package/vector-0.6.0.1 vector package]] and the [[http://hackage.haskell.org/package/NoSlow NoSlow]] array benchmark framework.  Package vector is our next-gen sequential array library, and we will replace the current sequential array component (dph-prim-seq) with package vector sometime in the next few months. 
    121121 
    122 We completed a first release of the regular, multi-dimensional array library introduced in the previous status report.  The library is called Repa and is available from Hackage [http://hackage.haskell.org/package/repa Repa package]. The library supports shape-polymorphism and works with both the sequential and parallel DPH base library.  We discuss the use and implementation of Repa in a draft paper [http://www.cse.unsw.edu.au/~chak/papers/KCLPL10.html Repa].  We have shown that Repa can produce efficient and scalable code for FFT and relaxation algorithms and would be very interested to hear from early adopters who are willing to try Repa out in an application they care about. 
     122We completed a first release of the regular, multi-dimensional array library introduced in the previous status report.  The library is called Repa and is available from Hackage [[http://hackage.haskell.org/package/repa Repa package]]. The library supports shape-polymorphism and works with both the sequential and parallel DPH base library.  We discuss the use and implementation of Repa in a draft paper [[http://www.cse.unsw.edu.au/~chak/papers/KCLPL10.html Repa]].  We have shown that Repa can produce efficient and scalable code for FFT and relaxation algorithms and would be very interested to hear from early adopters who are willing to try Repa out in an application they care about. 
    123123 
    124124At the start of the year, Ben Lippmeier has joined the project.  He has started to improve our benchmarks infrastructure and worked on Repa. 
     
    143143When the darcs.haskell.org hardware was upgraded, rather than installing buildbot on the new machine, we made the decision to implement a system that better matched our needs instead. The core implementation is now complete, and we have several machines using it for nightly builds. 
    144144 
    145 We're always keen to add more build slaves; please see http://hackage.haskell.org/trac/ghc/wiki/Builder if you're interested. Likewise, patches for missing features are welcome! The (Haskell) code is available at http://darcs.haskell.org/builder/ 
     145We're always keen to add more build slaves; please see [[http://hackage.haskell.org/trac/ghc/wiki/Builder Builder]] if you're interested. Likewise, patches for missing features are welcome! The (Haskell) code is available at http://darcs.haskell.org/builder/ 
    146146 
    147147= Bibliography = 
    148148 
     149 * [Builder] The GHC builder package 
     150 [http://hackage.haskell.org/trac/ghc/wiki/Builder] 
    149151 * [Hoopl] "Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation", Norman Ramsey, John Dias, and Simon Peyton Jones, submitted to ICFP'10.  [http://research.microsoft.com/en-us/um/people/simonpj/papers/c--/] 
     152 
     153 * [!NewCodeGen] The glorious new code generator [http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/NewCodeGen] 
     154 
     155 * [!NoSlow] The !NoSlow array benchmark framework [http://hackage.haskell.org/package/NoSlow NoSlow] 
     156 
     157 * [Quickhull] The Quickhull DPH benchmark [http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs] 
     158 
     159 * [Repa] "Regular, shape-polymorphic, parallel arrays in Haskell", Gabriele Keller, Manuel M. T. Chakravarty, Roman Leshchinskiy, Simon Peyton Jones, and Ben Lippmeier, submitted to ICFP'10. [http://www.cse.unsw.edu.au/~chak/papers/KCLPL10.html] 
     160 
     161 * [Repa package] The Repa Cabal package [http://hackage.haskell.org/package/repa] 
    150162 
    151163 * [Terei] The LLVM back end for GHC [http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM] 
    152164 
    153  * [NewCodeGen] The glorious new code generator [http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/NewCodeGen] 
    154  
    155  * [Repa] "Regular, shape-polymorphic, parallel arrays in Haskell", Gabriele Keller, Manuel M. T. Chakravarty, Roman Leshchinskiy, Simon Peyton Jones, and Ben Lippmeier, submitted to ICFP'10. [http://www.cse.unsw.edu.au/~chak/papers/KCLPL10.html] 
     165 * [vector package] The vector Cabal package [http://hackage.haskell.org/package/vector-0.6.0.1]