Loreto E Torres wrote:You mentioned in your preface that:
To fully learn the parallel programming, you need three books: a book on the theory of parallelism and the partitioning of the computations, a book on a particular API you plan to use, and this one.
What will you recomend as the best book(s) on "on the theory of parallelism and the partitioning of the computation". Of course, I plan to use parallel programming on Java.
"The Art of Multiprocessor Programming" seems to be a good book, and Java-oriented. I didn't read it completely, just paged through it, and it seemed to be good. "Patterns for parallel programming" has the examples in Java too. It goes very extensively through different ways of data decomposition. There should also be some books that describe the Java-specific APIs, "Java(tm) Programming Language" has a chpter on that too.
Overall the principles are about the same in any language, and Java and POSIX APIs have a lot of similarities, growing out of the Unix in-kernel synchronization mechanism. That's why quite a few books on my bibliography list are about the Unix kernels. And I think the typical servers and business applications have the synchronization problems similar to the OS kernels. When the data becomes embarassingly parallel, the supercomputing paradigm becomes a more suitable one.