After Advanced Computer Architecture and Parallel Processing, I’m going to review another book from the same serie. As the title hints it, the goal of this book is to introduce the tools that may be used in parallel, grid and distributed computing. This is the layer above the architecture the last book presented.
Content and opinions
This book is split in six very different chapters. The first introduces the basic and necessary notions of computer or cluster architecture that are inherent to parallel computing. The issues that remain to be solved are clearly exposed although they are not the main topic of this book (which are programming tools and environments). People familiar with usual computer science will benefit a lot from this chapter, people accustomed with grids and clusters will refresh their memories by reading it.
The second chapter is dedicated to message passing tools. After a small comparison between Distributed Shared Memory models (DSMs, that are presented later) and MP tools, the important aspects of these tools are presented. Then, several of them are presented, with their advantages and their drawbacks (often in terms of richness of the interface they provide). Several pages propose experiment results, from the communication time for a given message to specific parallel applications like FFT transforms, and the conclusions are very interesting (the widely used MPI tool may not be the most adequate one for your parallel application…)
DSM are exposed in the third chapter. Hardware and software-based are analyzed through their specificities. Although DSMs are very attractive, they are not that well spread in labs and clusters (as far as I know, and this is a very selfish opinion). Here, some of the reasons are presented.
The next chapter is an “UFO” in the whole book. For the first time, there is code (!!) for three distributed-object protocols (with tests and times), and perhaps more that usual text. At least, with DO, one can test even at the office (or even at home) if the technology may be interesting. Besides, DO are not difficult to use, and they can be very efficient in a small application.
As the different tools are used on grids, a state of the art of the grid is summed up in the fifth chapter. The state of the art encompasses the goals of a grid and the associated management issues (security, data, scheduling, …), the different frameworks (that may use some of the tools presented in the first chapters) and mainly the Globus toolkit, and of course the applications of the grid (astrophysics for instance). This chapter is enjoyable because it shows that the frameworks are used and developed for a lot of applications. This leads to robust libraries that can be reused for one’s application(s). A small presentation of web services is done in the end of this chapter.
Finally, some development process stages are presented. A typical parallel application cannot be developed like a simple application (text processing, browser, …), even less scientific applications. What was surprising when I read this chapter is that the different tools that can help developing parallel applications are listed after the presentation of the whole process. Besides, an example is used as a support to show how to use the process, but as no tool is used in the very example, its impact (as an explanation and as a support) is limited. For each step of the process, the conclusions are not always shown. This is annoying as it would have been a good argument for the proposed software development (which seems appropriate for parallel scientific applications).
This book was far more interesting for me than Advanced Computer Architecture and Parallel Processing, but this feeling is biased as I have a larger background in electronics and computer architecture than in parallel tools. Nevertheless, I enjoyed this reading which taught me a lot about the tools I could use and their diversity (shared-memory models, distributed objects, frameworks, …).