I’m busy preparing a tutorial for DEFUN on Saturday, and was putting together the “further reading” slides for the attendees, so they have material to go to for deeper reading.
Here’s my basic “How to learn about parallel programming in Haskell” reading list.
Learn Parallel Haskell
- “Real World Haskell”, O’Sullivan, Goerzon, Stewart. O’Reilly 2008. Ch. 24, 25, 28.
- Step by step guide to implicit and explicit parallelism in Haskell, and transactional memory
- “A Tutorial on Parallel and Concurrent Programming in Haskell”, Peyton Jones and Singh. 2008
- General overview of explicit and impliict parallelism in Haskell, as well as transactional memory and data parallel Haskell
- “Runtime Support for Multicore Haskell”, Marlow, Peyton Jones, Singh. 2009.
- Describes the architecture of the sparks and parallel GC
- “Parallel Performance Tuning for Haskell”, Jones, Marlow, Singh, 2009
- Introduces ThreadScope, and methodical parallel performance advice
- “Harnessing the Multicores: Nested Data Parallelism in Haskell”, Peyton Jones, Leshchinkskiy, Keller, Chakravarty, 2008.
- the Barnes-Hut algorithm in Data Parallel Haskell
- “Haskell on a Shared-Memory Multiprocessor”, Harris, Marlow, Peyton Jones, 2005
- The original SMP runtime implementation paper
- “Beautiful Concurrency”, Peyton Jones, O’Reilly 2007
- Introduction to software transactional memory
- “Composable memory transactions“, Harris, Marlow, Peyton Jones, and Herlihy, 2005
- Introduces composable software transactional memory
- “Algorithm + Strategy = Parallelism”, Trinder, Hammond, Loidl, Peyton Jones, 1998.
- Introduces parallel sparks and strategies
- “Concurrent Haskell”, Peyton Jones, Gordon, Finne, 1996.
- Introduces concurrent Haskell and forkIO.
- “Tackling the Awkward Squad”, Peyton Jones, 2001.
- Classic introduction to concurrency in Haskell (and IO), and how to use MVars and Channels.
Does anyone else have favourite learning materials for parallel and concurrent programming in GHC Haskell?