What's the status of multicore programming in Haskell? What projects, tools, and libraries are available now? What experience reports have there been?


In the 2009-2012 period, the following things have happened:

2012:

  • From 2012, the parallel Haskell status updates began appearing in the Parallel Haskell Digest.

2011:

  • Parallel and Concurrent Programming in Haskell, a tutorial. version 1.1 released by Simon Marlow
  • Haskell and parallelism, mentioned in an article in the Economist magazine, Jun 2nd 2011.
  • Parallel tree scans via composition, an article by Conal Elliott
  • Numeric Haskell, a tutorial on parallel array programming with Repa, released
  • Works has begun on extending GHC eventlog and Threadscope to support multi-process or distributed Haskell systems
  • Parallel Haskell Digest: Edition 2.
  • The par-monad package and a monad for deterministic parallelism, Simon Marlow -- more control over pure parallelism than strategies/par/pseq.
  • Cloud Haskell: Erlang-style message passing between distributed Haskell nodes.
  • Parallel Haskell: Embracing Diversity, a talk by SPJ.
  • Real time edge detection in parallel Haskell
  • Parallel Haskell Digest: news on parallel Haskell
  • Composable parallel scanning
  • Haskell-MPI is released

2010:

  • Parallel futures for Haskell, in GHC.
  • The Orc language, for concurrent job scheduling and scripting, was released.
  • A new scalable thread event manager was merged into GHC.
  • An improved approach to parallel sparks and strategies was developed.
  • The Nikola EDSL for embedding GPU programs in Haskell was developed.
  • The LLVM backend for GHC was merged in, with good performance improvements.
  • ghc 6.12.x series: with parallel performance improvements
  • Microsoft announces 2 years of funding to support commercial users of Parallel Haskell
  • Google published their experience report on the use of Haskell (PDF)
  • Intel announced the Concurrent Collections for Haskell library, including scalability numbers -- scaling results for 32 and 48 cores
  • Sun/Oracle bought us a machine and funded work on improving parallel performance.
  • Recent updates to the status of Data Parallelism in Haskell
  • MSR released ThreadScope, a graphical profiler for parallel Haskell programs
  • The GHC runtime got extensively tuned for sparks and futures
  • There was a good discussion on additional ways to improve parallel performance
  • A collection of reading material on parallelism in Haskell to help you get started
  • The Snap guys are getting 45k req/sec on their 4 way box, by using all the cores.
  • Even the Erlang guys are taking notice.
  • Meanwhile, there is work to make the IO manager more scalable -- now with a paper on the design :: PDF.
  • We're out there teaching people too .. all .. over .. the ... place.
  • Starling Software wrote about their real time, multicore financial trading system in Haskell.
  • Ericsson published a parallel language for DSP based on, and written in Haskell
  • Galois published an implementation of Orc, a concurrent workflow language, in Haskell.
  • And a new library for fast regular, parallel arrays appeared
  • And Haskell continues to do well on the quad-core shootout.
  • Snap, a multicore-enabled scalable web server with great performance numbers
  • haskell-torrent - benchmarking a mulitcore-enabled bittorrent client in Haskell
  • Haskell code was published at Supercomputing 09 -- our first appearance at SC!