... | ... | @@ -185,7 +185,13 @@ In the future we plan to focus on the GC, with the main goal being to implement |
|
|
### Data Parallelism
|
|
|
|
|
|
|
|
|
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 these efforts, 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.
|
|
|
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 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](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.
|
|
|
|
|
|
|
|
|
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*[ http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09 RegLibBench](http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09 RegLibBench).
|
|
|
|
|
|
|
|
|
In parallel with the implementation of regular, multi-dimensional arrays as part of DPH, Sean Lee and Manuel Chakravarty are implementing almost the same regular-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](http://justtesting.posterous.com/running-haskell-array-computations-on-a-gpu AccelerateTalk).
|
|
|
|
|
|
### Code generation
|
|
|
|
... | ... | @@ -245,7 +251,11 @@ We are particularly grateful to Ben Lippmeier for his work on the SPARC native c |
|
|
|
|
|
- \[UserManual\] GHC 6.12 user manual. [http://www.haskell.org/ghc/dist/current/docs/html/users_guide/index.htm](http://www.haskell.org/ghc/dist/current/docs/html/users_guide/index.htm)
|
|
|
|
|
|
- \[QuickHull\] [ http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs](http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs)
|
|
|
- \[QuickHull\] DPH QuickHull source code [ http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs](http://darcs.haskell.org/packages/dph/examples/quickhull/QuickHullVect.hs)
|
|
|
|
|
|
- \[RegLibBench\] Dense matrix-matrix multiplication benchmark with delayed, regular arrays [ http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09](http://www.scribd.com/doc/22091707/Delayed-Regular-Arrays-Sep09)
|
|
|
|
|
|
- \[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](http://justtesting.posterous.com/running-haskell-array-computations-on-a-gpu)
|
|
|
|
|
|
## Bibliography: wiki
|
|
|
|
... | ... | @@ -254,4 +264,4 @@ All these URLs should be preceded with [ http://hackage.haskell.org/trac/ghc/wik |
|
|
|
|
|
- \[Platforms\] Platforms that GHC supports [Platforms](platforms)
|
|
|
- \[Annotations\] Annotations in GHC [Annotations](annotations)
|
|
|
- \[CodeGen\] The new codegen pipeline \[wike:Commentary/Compiler/NewCodeGenPipeline\] |
|
|
- \[CodeGen\] The new codegen pipeline [Commentary/Compiler/NewCodeGenPipeline](commentary/compiler/new-code-gen-pipeline) |
|
|
\ No newline at end of file |