Customer Reviews


10 Reviews
5 star:
 (3)
4 star:
 (2)
3 star:
 (1)
2 star:
 (1)
1 star:
 (3)
 
 
 
 
 
Average Customer Review
Share your thoughts with other customers
Create your own review
 
 
Only search this product's reviews

The most helpful favorable review
The most helpful critical review


18 of 26 people found the following review helpful:
5.0 out of 5 stars Covers the topics VERY well
This book covers the MPI (Message Passing Interface) library, the PVM (Parallel Virtual Machine) library, and the MICO (CORBA) library. If any these libraries were new to you, then this book is would be very beneficial to you.

So many books have been written on PTHREADS, threading, multiprocessing, etc, and yet, this book seems to cover more grounds, teach more...

Published on November 10, 2003 by ART SEDIGHI

versus
12 of 13 people found the following review helpful:
3.0 out of 5 stars Too shallow and wide-focused
I gave it 3 stars only because there are few books on the subject; it deserves only 2.

The main problem I see with this book is that it tries to cover too much ground, even with subjects that it should not touch upon: there are whole chapters (7 and 9, for example) that are more about C++ than parallel or distributed programming, and one chapter (10) is...
Published on August 19, 2004 by Andrei Formiga


Most Helpful First | Newest First

12 of 13 people found the following review helpful:
1.0 out of 5 stars Absolute disaster: the authors know neither parallel programming nor C++, January 15, 2007
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
Even the bad reviews here are too kind. What can I say about this book? Let us start with Chapter 7, which is about exceptions and error handling -- as applied to parallel programming you'd think. But there is nothing about parallel programming and nothing good about exceptions in this chapter, which reads like a blog written by a C++ programming beginner who has just stumbled upon exceptions and thought, hey this is cool, nothing of the sort in Fortran, let me write about it.

Section 9.2 talks about using template functions for parallel programming. Their examples are of the sort: (if rank is 0, let us call the multiplies() fn that is templated on int; if rank is 1, let us call the multiplies() fn that is templated on double). What were these people smoking?

Section 9.3 overloads stream operators (<<,>>) to do MPI send/recv. This is bad design because the rank of the other process (for one) is an input to the MPI functions, so there is a stream class per other process - which is more messy than convenient. A better design would be to make a communicator class with send(), recv() fns taking the other rank as input. This would also support collective (gather, scatter) communication. Not to mention *unbuffered* MPI send/recv calls can be terribly slow, so there should be some buffering support.

This brings to my basic gripe about this book: it is incredibly shallow. Of course it is garbage to an expert, but even to the dullest of beginners it can be of little use. Just about anything that you can find on parallel programming or C++ is better than this.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


12 of 13 people found the following review helpful:
3.0 out of 5 stars Too shallow and wide-focused, August 19, 2004
By 
Andrei Formiga (Joao Pessoa, Brasil) - See all my reviews
(REAL NAME)   
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
I gave it 3 stars only because there are few books on the subject; it deserves only 2.

The main problem I see with this book is that it tries to cover too much ground, even with subjects that it should not touch upon: there are whole chapters (7 and 9, for example) that are more about C++ than parallel or distributed programming, and one chapter (10) is about UML. Although it is interesting to see C++ and UML techniques applied to parallel and distributed programming, this leaves little space left for the coverage of MPI, for example. PVM and pthreads are given somewhat more attention, but still not nearly enough.

Another problem is that the examples are mostly incomplete code fragments. There are few complete, running examples. I hoped to see bigger examples in the last chapters (they seem like case studies), but again they are made of too much "talk" and no code.

The chapters are mostly independent of one another; it can be good if all you need is a quick first read on one of the subjects, but it gets annoying if you try to read it sequentially. Exercise for the reader: count how many times the PRAM model is cited AND explained.

To say something good about it, the book has some nice general musings about the nature and fundamental problems of concurrent systems. But it is not a coherent whole and is not particularly good at explaining any of the myriad subjects it touches upon.

Bottomline: It's neither an applied book about specific technologies, nor a general treatment. I would not buy this book unless it were very cheap. Take a look at it at the bookstore or borrow from a library, but don't spend your money.

To people wanting a general treatment about concurrency, it's principles, problems and solution space, I recommend "Concepts, Techniques and Models of Computer Programming" by Peter van Roy and Seif Haridi. It's thoroughly educational, and half of it is about concurrency (but no specific treatment of pthreads, PVM or MPI).
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4 of 4 people found the following review helpful:
1.0 out of 5 stars Parallel and Distributed Programming using C++, December 21, 2007
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
The title was ever so promising. But when I finally got to use this book,my disappointment was limitless.I found myself having to be on the lookout for errors of all sorts instead of learning from the book.While the book is in the 600s in the number of pages,it is rather thin on content on the topics that it covers. Take Chapter 4, "Dividing C++ Programs into Multiple Threads" for instance.The authors do a lot of hand waving explaining what is essentially threads in C (behind some little C++ syntax),and just when you are hoping to learn about threads in the presence of composition (as you might need with nested parallelism) or inheritance, you are met with section 4.11.5 "Creating Multi threaded Objects" that is only one and half pages long and tells you nothing you did not know already. The authors then proceed to add more than hundred pages in the form of appendix B on material that you can get off the internet.I've since decided to use Intel TBB (and bought Intel Threading Building Blocks by Reinders) for my project. With POSIX threads here to stay and parallel programming becoming mainstream,the authors ought to use subsequent editions as opportunity for great improvement.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


18 of 26 people found the following review helpful:
5.0 out of 5 stars Covers the topics VERY well, November 10, 2003
By 
ART SEDIGHI (Old Bethpage, NY United States) - See all my reviews
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
This book covers the MPI (Message Passing Interface) library, the PVM (Parallel Virtual Machine) library, and the MICO (CORBA) library. If any these libraries were new to you, then this book is would be very beneficial to you.

So many books have been written on PTHREADS, threading, multiprocessing, etc, and yet, this book seems to cover more grounds, teach more concepts, and show you more simple but useful examples that any other one's that I have seen. The books on PTHREADS cover threading, there are a number of books on multiprocessing, networking (Stevens book comes to mind), but as far as generic multiprocessing, and parallel processing is concerned, this book is the key. Hughes and Hughes have written another similar book, but that book mainly covered C++ and threading (hence the title of the book). This book covers other great C++ tools such as the PVM (parallel virtual machine), which to my limited knowledge has not been covered greatly in any other books.

The first couple of chapters cover basic Operating System stuff. I don't know if it's because I have working for a number of years, or not, but the it actually made sense. We all have read the ever popular Modern Operating Systems book, but that book is somewhat dry. Maybe I think that say since I HAD to read the book for my class, but that feeling hasn't changed. This book covered the topics that you NEED to know, if you want to be able to write a program that takes advantage of some of the libraries mentioned above (MPI, PVM, MICO, and PTHREADS). It talks about the benefits, differences, and ideas behind parallel and distributed programming.

The next two chapters are probably the best chapters I have read on the topics of Multiprocessing and Multithreading respectively. The chapters are titled "Dividing C++ Programs into multiple tasks," and, "Dividing C++ Programs into multiple Threads."
I cannot say enough about how good these two chapters cover the topics. They start by the definition of both models, and they peel the onion as each chapter moves along. By the end of the chapter, you have seen examples, different design models for each method, and the pros and cons of each design model. Following these two chapters, a chapter is dedicated to synchronization and issues that go along with that in multithreaded/multiprocessing applications.

PVM, the Parallel Virtual Machine, is covered in chapter 6. This chapter must be my favorite chapter in the entire book. The authors give the following description for PVM:
"The PVM represents a collection of networked computers to the developer as a single logical machine with parallel capabilities."

The authors goes further and says:
"The PVM library is perhaps the easiest way to add parallel programming capabilities to the C++ language."

In general, the PVM is broken down into seven categories:
i) Process Management and Control: Routines used to manage and control PVM process
ii) Message Packing and Sending: Routines used to pack messages into a send buffer and send messages from one PVM process to another
iii) Message Unpacking and Receiving: Routines used to receive messages and unpack the data from the active buffer
iv) Task Signaling: Routines used to signal and notify PVM processes about the occurrence of an event
v) Message Buffer Management: Routines used to initialize, empty, dispose, and otherwise manage buffers between PVM processes
vi) Information and Utility Functions: Routines used to return information about a PVM process and perform other important tasks
vii) Group Operation: Routines used [in] joining, leaving, and otherwise managing processes in a group.

The authors then go in to detail covering the two programming models used commonly with the PVM: SPMD (Single Program Multiple Data), and MPMD (Multiple Program Multiple Data):

"In the SPMD model, the tasks will execute the same set of instructions but on different pieces of data. In the MPMD model, each task executes different instructions on different data"

The topics covered in PVM also apply to the chapter that covered MPI, the Message Passing Interface covered in Chapter 10. The authors go a step further in this chapter and talk about how some of C++ features such as polymorphism, generic programming and templates, and operator overload can be used in conjunction with the MPI to make programming simpler and more efficient.

The authors go into detail in the next few chapters about the Software Engineering aspects of the topics covered. Modeling aspects are covered first, and then applications and design. UML is used to show the readers how to represent concurrent and parallel designs. Flow charts, activity diagrams, class diagrams and state diagrams are used to represent the examples that were covered throughout the book.

A closer look at C++ and Object Orientation covers some advanced topics in the book. Various C++ class types are used in examples to show the modeling aspect and then the designing aspect of concurrent and parallel programming.

The last chapter of the book uses all the concepts covered in the book to implement a full-blown blackboard application. The BB is an approach to collaborative problem solving. The BB is used to record, coordinate, and communicate the efforts of two or more software-based problem solvers. The authors design and implement the BB using various architectural methodologies covered in the book: using the PVM, Threads, and CORBA. The examples certainly put everything that were covered in the book in perspective and enable the user to understand and grasp the topic at hand very simply.

C. Hughes and T Hughes picked a very difficult topic to cover and they did one fantastic job at doing so. The examples are great. The topics are covered very thoroughly, and yet are very understandable. Any series C++ programmer, developer, or architect would benefit lots from this book.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


1 of 1 people found the following review helpful:
2.0 out of 5 stars Choppy, redundant, and full of errors, May 20, 2009
In many sections this book lacks a smooth flow of writing. Paragraphs often feel like poorly ordered lists rather than leading from one idea to the next. This is especially true in Chapter 4's description of the Pthreads API.

Much space is dedicated to describing the Pthreads API, both in Chapter 4 and again in Appendix B. Most systems with Pthreads installed have man pages that already supply this information but with fewer errors (for example, see p. 150).

Some of the code examples seem like they were added in a hurry. They are incomplete, not in the sense of omitting implementation details but because they lack basic C++ syntax (e.g., types). If they were intended as language-independent pseudocode this would make sense, but the book is ostensibly about C++. For example, see Examples 4.11.1 and 5.3.1.

A better source for practical tools for parallel programming is Patterns for Parallel Programming by Mattson.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


0 of 1 people found the following review helpful:
4.0 out of 5 stars Wrong title, June 9, 2007
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
I think that the book is quite good. However, do not look architecture level concepts, neither mathematics, neither an explanation of distributed and parallel concepts (well, there is something...). The title shoudl be something like "C++ tools for distributed and parallel programming"

However, this is the only book I know that introduces the biggest amount of tools in other to implement distributed applications in C++ (in case you do not want to start from sctach). Of course, there are missing thinks like web services, sockets, peer2peer middlewares, etc. However, the explained packages are the most used in the market.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


6 of 11 people found the following review helpful:
1.0 out of 5 stars Don't worth the money, September 29, 2004
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
This book is a collection of many topics about MPI, PVM, Pthread, UML, CORBA, etc. None of them explains thoroughly. All the parts don't have coherence and don't have a complete example about parallel and distributed application. Readers would be better off just Google these topics and will find free documents which are far better than this book. It wastes your money to buy this book.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4 of 8 people found the following review helpful:
4.0 out of 5 stars Excellent introduction to parallel programming, January 28, 2004
By 
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
I'm currently an undergraduate computer science student here at Youngstown State University, and in the course of research work for a Physics professor here, I have spent the last year struggling with learning what were very new concepts to me. I actually know Cameron in "real life," and on the occaisons I would run into him and try to get some advice on how to get my MPI scripts running correctly, etc., his reponse would invariably be "wait for the book, it will all be in there, I promise." Muddling through several poorly-written primers on programming for our cluster, and material on programming scattered on various part of the web, I can emphatically state my excitement that the book is finally done.

I consider myself to be very much an amateur programmer, which is important. With the increasingly widespread use of inexpensive computer clusters, many amateurs like myself find themselves in the position of having to learn something completely new. Moreover, many researchers don't particularly want to invest a great deal of time in something that is little more than a tool for them to get their "real" work done. For those of us who fall into that category, I think Camereon's book is a godsend. It covers all of the major areas of interest in a technically thorough way, without being too challenging or offputting for a beginner. The book starts with some of the basics of how a UNIX(Linux) system works, and how parallelism and multiproccessing fit in. By the time you start coding, you have a firm grasp of just what is going on. If you're familiar with C++, but have never done any parallel programming, this book is for you.

My personal opinion is that anyone becoming a new cluster user(They've been regularly doling clusters out here in Ohio) should recieve a copy of this book. A wonderful introduction. My only real complaint has been that Cameron didn't write it a year ago :-D

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4 of 9 people found the following review helpful:
5.0 out of 5 stars Excellent introduction to the topics. Fills a real need., April 6, 2004
By 
Paul M. Dubuc (Columbus, OH USA) - See all my reviews
(REAL NAME)   
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
C++ has no keyword support for parallelism. One must rely on libraries for parallel and distributed applications in C++. This turns out to be a good thing because the C++ programmer isn't stuck with only one concurrency model supported by the language. Instead there are several standard options: POSIX (pthreads), MPI, PVM and CORBA. This book relies on the new Single UNIX Specification Standard which encompasses the POSIX standards for UNIX/Linux. You won't find anything in here that is specific to Microsoft Windows programming or the WIN32 API.

This book is a thorough and readable introduction to its topics. Its main strength its emphasis on design. Parallel and distributed applications are becoming the norm and doing them right impacts every phase of the software development process. Good, up-front design is necessary to avoid the serious problems one can encounter in this environment. The authors do a very effective job in helping the reader to first think about the problem they are trying to solve in terms of the inherent complexities and problems that parallel programing has over the sequential programming model that many programmers are used to.

Coverage of each topic in the table of contents is very well done. It offers just the right amount of background information, code examples and well designed diagrams and tables to give the reader a good understanding of concepts and good design, not just a "how to" explanation. UML diagrams are put to good use. There's a small appendix covering the UML notation used in the book and a larger one that contains manual pages for the POSIX API for process and thread creation and control.

Overall an excellent book. It would make a good textbook for students and a good tutorial and reference for experienced programmers.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


2 of 17 people found the following review helpful:
5.0 out of 5 stars Great Book!!, October 10, 2003
By A Customer
This review is from: Parallel and Distributed Programming Using C++ (Hardcover)
Neat approach when discussing parallel and distributed programming, very good book. Keep up the good work.

Raise the right hand.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


Most Helpful First | Newest First

This product

Parallel and Distributed Programming Using C++
Parallel and Distributed Programming Using C++ by Cameron Hughes (Hardcover - September 4, 2003)
Used & New from: $18.51
Add to wishlist See buying options