NOTE: This review is for the second edition of the book.
The book is splendidly readable, and introduces a variety of essential techniques to working with MPI, PThreads, OpenMP and CUDA. All of these chapters were helpful, and especially chapter 2 summarizing the key issues that come with trying to parallelize your code. I was not a huge fan of the second part of chapter 7, running through sample sort for a variety of algorithms. Compared to the rest of the book it was a bit clunky. All things considered though, I think it did a solid job.