Chapter 5. Parallelize for Performance
Nowadays, as single processor cores are not getting much faster, CPU manufacturers instead keep increasing the number of cores in processors, implying that high-performance programs must accordingly exploit more and more parallelism to keep up with this breadth-wise hardware development.
Turns out, one of Haskell's strongest aspects, referential transparency, is very valuable for parallelization. Automatically knowing that some distinct expressions won't interact with each other means they are safe to execute simultaneously. Note that parallelism is very different from concurrency, which usually refers to interacting processes (they aren't necessarily executed in parallel).
In this chapter, we will cover what the Haskell ecosystem currently has to offer for parallelism: a powerful parallel runtime system, fairly high-level abstractions for parallel evaluation, data parallel programming, and diagnostic tools for parallel programs...