|
 |
|
 |
 |
Parallel and Distributed Programming Using C++
|
by Cameron Hughes and Tracey Hughes
Sales Rank: 156504
|
Discount: 17 %
$53.75
At Amazon

|
|
Hardcover: 720 pages
Publisher: Addison-Wesley Professional September 4, 2003
Language: English
ISBN-10: 0131013769
ISBN-13: 978-0131013766
Product Dimensions:
9.3 x 7.1 x 1.5 inches
Shipping Weight: 2.6 pounds
Back Cover Copy
Parallel and Distributed Programming Using C++ provides an up-close look at how to build software that can take advantage of multiprocessor computers. Simple approaches for programming parallel virtual machines are presented, and the basics of cluster application development are explained. Through an easy-to-understand overview of multithreaded programming, this book also shows you how to write software components that work together over a network to solve problems and do work.
Parallel and Distributed Programming Using C++ provides an architectural approach to parallel programming for computer programmers, software developers, designers, researchers, and software architects. It will also be useful for computer science students. - Demonstrates how agents and blackboards can be used to make parallel programming easier
- Shows object-oriented approaches to multitasking and multithreading
- Demonstrates how the UML is used to document designs that require parallel or distributed programming
- Contains the new POSIX/UNIX IEEE Standard for the Pthreads library
About The Author
CAMERON HUGHES is a senior software engineer for CTEST Laboratories and a staff programmer/analyst at Youngstown State University. He has been involved in software development efforts of all sizes and is currently working in cluster programming of the Proteus V that involves NLP and knowledge representation modeling at CTEST and the Colony at Youngstown.
TRACEY HUGHES is a software engineer at CTEST, where she does graphics programming and simulation in C++ and develops image processing class libraries and virtual worlds.
Together they are the co-authors of numerous books including Linux Rapid Application Development and Object-Oriented Multithreading Using C++.
Customer Reviews & Comments
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.
Comment | Permalink |
(Report this)
|
Parallel and Distributed Programming Using C++
Discount: 17 %
Available from Amazon
Price: $53.75

| |
|
|
|
|