Thinking Parallel

A Blog on Parallel Programming and Concurrency by Michael Suess

Recommended Books on Parallel Programming

A BookFrom time to time I get an email asking what books I recommend for people to learn more about parallel programming in general, or about a specific system. You need to ask no more, as this is my list of recommended books. Please beware that the links below are affiliate links to your local version of Amazon, which basically means I will be awarded a small amount of money each time you purchase a book there after you clicked on any of the links - and also beware that it merely boils down to a couple of dollars each month, if at all. And of course, it has no disadvantages at all for you. But if you want to show your appreciation for my work, it’s still a nice token of reward ;) .

General

I have to admit I cannot really recommend a single book to cover the topic of parallel programming wholeheartedly. The book on the left by Grama et. al. is the one we generally recommend to our students. It covers everything there is to know about the parallel programming basics: from architectures, algorithms and analytical models up to specific parallel programming systems (OpenMP and MPI). Unfortunately, it is not exactly what I call a joy to read. Also, at times it is a little imprecise. Yet, I have not been able to find a more readable book of this scope and until I do I have to stick to recommending it. If you can only afford one book on parallel programming, this should be it.

POSIX Threads

This one is easy. I have called this book the bible on POSIX threads before and I still vouch for it. Written by David Butenhof, one of the original creators of the standard, this book covers everything from a nice introduction to the general concept of threading to all the gory details, while still being a joy to read. Whether you are a beginner to working with threads or an old hand that is looking for a reference - if you are programming POSIX threads, this book should be on your desk. Period.

OpenMP

If you ask me there is no really good book on OpenMP. But truth be told, there is not even much of a need for one. There are two reasons for that: First, OpenMP is relatively simple, at least when compared to other threading systems. When you have understood the basic concepts of threading, OpenMP should be a peace of cake (which is the reason I like it so much). The second reason is: there is a very nice and understandable resource about it on the net to teach you every detail there is to know about it: the OpenMP specification. No, I am not kidding you, the specification is actually very readable, covers every possible detail and even has a huge appendix with examples. Everything there is to know about OpenMP available in one convenient file - and it is even free for everyone to download :D .

MPI

MPI has a big specification with more than 300 functions. This is the book (or better: the books, as it is really two volumes) I use to keep track of all of them. Don’t expect much introductory material in there, though, as it is really just a reference. A good one, though. If you are a beginner to MPI, you will probably do better with a copy of Using MPI or Using MPI 2.

C#

According to my own experiences and to the ones from my readers, there is no really comprehensive book on the topic of C# and threads (yet). I recommend the book on the left for beginners, as it offers a nice introduction to the topic - but beware that it is merely an introduction. There is also part of a new book by Joseph Albahari on C# 3.0 available on the net, which offers a more thorough introduction to C# as well (and lucky us, the part on threading is available for free ;) ).

Java

I like this book so much I have written an article of praise for it here. I unconditionally recommend it for anyone involved in programming in Java. It does not really cover the absolute basics (although these can be learned on the fly while reading the book just by looking into the excellent Java documentation). Yet, all of the content is well-presented, a joy to read, includes helpful examples and is up-to-date (Java 1.6 is covered). The authors were heavily involved in the creation of the java.util.concurrent package introduced in Java 1.5., which is why they obviously know what they are writing about. If you want to program with Java threads, this is the book to have.

Erlang

There is really only one book on Erlang available (yet). This will change soon, as Joe Armstrong has written another one on the same topic. It is supposed to be even better, yet I have not read it, therefore I cannot recommend it (yet). The one shown on the left here covers everything there is to know about Erlang and is a good read - although it is not exactly new. Whether or not you want to wait for the new book is up to you (should be out at the end of July)…

So much for my recommendations. I have only given recommendations on books that I actually know and systems that I have some kind of experience with. But feel free to comment on your own favorites below, even if the system is not mentioned here (yet). Hope it helps someone to make their first steps in the vast world of parallel programming :grin: !

10 Responses to Recommended Books on Parallel Programming »»


Comments

  1. Comment by Chetan | 2007/07/31 at 08:49:57

    I have read the Java Concurrency and Practice and its a great book. Together with the source of concurrent package one can learn most of the concepts in Concurrent programming in JVM.
    Further I would also recommend 20th Chapter in Inside the JVM to understand how Monitors work.
    Though my understanding in concurrency is mostly from Java side I would like to explore concurrent programming in general. What book would you recommend for that??

  2. Comment by Michael Suess | 2007/07/31 at 09:55:26

    @Chetan: look at the top of the list, please :-)

  3. Comment by jeremy weiskotten | 2007/07/31 at 15:34:54

    Ditto on the Goetz Java Concurrency book. Must read for every Java developer, right after Effective Java.

  4. Comment by Gaurav | 2007/09/25 at 23:22:30

    “Patterns for Parallel Programming” (Mattson, Sanders, Massingill) is another great book that should be on your list.

  5. Comment by Richard Friedman | 2007/11/20 at 08:56:54

    Michael:
    I would recommend PARALLEL PROGRAMMING by Wilkinson and Allen, 2ND Edition (2005) (Prentice Hall). It’s an excellent graduate-level intro to the topic, with many examples, and some very provocative homework problems. Be sure to get the 2nd Edition.

  6. Comment by Anthony Williams | 2008/03/11 at 16:14:28

    I’d like to second Guarav’s recommendation of “Patterns for Parallel Programming”. I’ve reviewed it on my website: http://www.justsoftwaresolutions.co.uk/reviews/patterns_for_parallel_programming_review.html

  7. Comment by Johan Torp | 2008/09/11 at 09:23:58

    If you want to get a more theoretical understanding of parallelism and lock-free programming I recommend Maurice Herlihy’s “The Art of Multiprocessor programming”

    /Johan

  8. Comment by Roman | 2008/10/30 at 19:57:58

    Hey Michael,
    I recently saw your blog and it does have a lot of good content. Keep it up. I wanted to suggest a book, “The Art of Multiprocessor Programming” by Herlihy ahd Shavit. I think this book is a must read even before delving into specific libraries. Also, .Net is making a leap by introducing Parallel extensions into its 4.0 version as well.

  9. Comment by Daniel Unchalo | 2009/01/21 at 22:16:44

    There is a new book about multicore programming with C# 2005 and 2008, by Packt Publishing. It sounds interesting. Look at this link http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book

    I’m interested in multicore and parallel programming. I’ll buy the book and I’ll post my coments somewhere.

  10. Comment by Daniel Unchalo | 2009/02/09 at 04:39:17

    For those interested in multicore and multithreading programming (parallel programming for stand alone modern computers) with C#, I must recommend “C# 2008 and 2005 threaded programming” by Packt Publishing, Gaston Hillar (author). The book has great examples and it helped me to apply the parallel patternes I’ve learned with the book “Patterns for parallel programming”.
    I recommend the book and e-book bundle from Packt, because it allows you to begin working right now. Great for beginners to multithreaded programming.


Leave a Reply

HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>