Parallel and Concurrent Programming in Haskell
- Length: 322 pages
- Edition: 1
- Language: English
- Publisher: O'Reilly Media
- Publication Date: 2013-08-01
- ISBN-10: 1449335942
- ISBN-13: 9781449335946
- Sales Rank: #653832 (See Top 100 Books)
Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming
If you have a working knowledge of Haskell, this hands-on book shows you how to use the language’s many APIs and frameworks for writing both parallel and concurrent programs. You’ll learn how parallelism exploits multicore processors to speed up computation-heavy programs, and how concurrency enables you to write programs with threads for multiple interactions.
Author Simon Marlow walks you through the process with lots of code examples that you can run, experiment with, and extend. Divided into separate sections on Parallel and Concurrent Haskell, this book also includes exercises to help you become familiar with the concepts presented:
- Express parallelism in Haskell with the Eval monad and Evaluation Strategies
- Parallelize ordinary Haskell code with the Par monad
- Build parallel array-based computations, using the Repa library
- Use the Accelerate library to run computations directly on the GPU
- Work with basic interfaces for writing concurrent code
- Build trees of threads for larger and more complex programs
- Learn how to build high-speed concurrent network servers
- Write distributed programs that run on multiple machines in a network
Table of Contents
Chapter 1. Introduction
Part I. Parallel Haskell
Chapter 2. Basic Parallelism: The Eval Monad
Chapter 3. Evaluation Strategies
Chapter 4. Dataflow Parallelism: The Par Monad
Chapter 5. Data Parallel Programming with Repa
Chapter 6. GPU Programming with Accelerate
Part II. Concurrent Haskell
Chapter 7. Basic Concurrency: Threads and MVars
Chapter 8. Overlapping Input/Output
Chapter 9. Cancellation and Timeouts
Chapter 10. Software Transactional Memory
Chapter 11. Higher-Level Concurrency Abstractions
Chapter 12. Concurrent Network Servers
Chapter 13. Parallel Programming Using Threads
Chapter 14. Distributed Programming
Chapter 15. Debugging, Tuning, and Interfacing with Foreign Code