Changes between Version 12 and Version 13 of Status/Nov07


Ignore:
Timestamp:
Dec 4, 2007 2:39:04 PM (6 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/Nov07

    v12 v13  
    118118Since 6.6 GHC has had support for running parallel Haskell on a multi-processor out of the box.  However, the main drawback has been that the garbage collector is still single-threaded and stop-the-world.  Since GC can commonly account for 30% of runtime (depending on the GC settings), this can seriously put a crimp in your parallel speedup. 
    119119 
    120 Roshan James did an internship at MSR in 2006 during which he and I (Simon M) worked on parallelising the major collections in GHC's generational garbage collector.  We had a working algorithm, but didn't observe much speedup on a multi-processor.  Since then, I rewrote the implementation and spent a large amount of time with various profiling tools, which uncovered some cache-unfriendly behaviour.  We are now seeing some speedup, but there is more tweaking and measuring still to be done. 
     120Roshan James did an internship at MSR in 2006 during which he and Simon M worked on parallelising the major collections in GHC's generational garbage collector.  We had a working algorithm, but didn't observe much speedup on a multi-processor.  Since then, Simon rewrote the implementation and spent a large amount of time with various profiling tools, which uncovered some cache-unfriendly behaviour.  We are now seeing some speedup, but there is more tweaking and measuring still to be done. 
    121121 
    122122This parallel GC is likely to be in GHC 6.10.  Note that parallel GC is independent of whether the Haskell program itself is parallel - so even single-threaded Haskell programs (e.g. GHC itself) should benefit from it. 
     
    139139What we want to do: 
    140140 
    141  * split the STG-to-C-- code generator (`codeGen`) into two: one pass 
     141 * Split the STG-to-C-- code generator (`codeGen`) into two: one pass 
    142142   generating C-- with functions and calls, and a second pass ("CPS") to  
    143143   manifest the stack and calling/return conventions. 
     
    167167  coalescing register allocator for GHC's native code generator. 
    168168 
    169 As a result, we now have *lots* of new code.  Some of it is working; 
     169As a result, we now have ''lots'' of new code.  Some of it is working; 
    170170much of it is as yet un-integrated and un-tested.  However, once we 
    171171have it all glued back together, GHC will become a place where you can