- Hardcover: 352 pages
- Publisher: Pearson; 1 edition (March 7, 2008)
- Language: English
- ISBN-10: 0321487907
- ISBN-13: 978-0321487902
- Product Dimensions: 7.4 x 1 x 9.2 inches
- Shipping Weight: 1.6 pounds (View shipping rates and policies)
- Average Customer Review: 6 customer reviews
- Amazon Best Sellers Rank: #1,306,647 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Principles of Parallel Programming 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
Frequently bought together
Customers who bought this item also bought
"...the first basic book on the subject that I've ever seen that seems to have the pulse on the true issues of parallelism that are relevant for students." – Alan Edelman, MIT
"Principles of Parallel Programming is a wonderful book and I plan to use it in our new parallel programming course..." – Peiyi Tang, University of Arkansas, Little Rock
"I like [Principles of Parallel Programming] very much for a few specific reasons: it's concise, covers the most relevant topics but does not take thousand pages to do it, it is hands on and it covers...recent developments with multi-core and GPGPU." – Edin Hodzic, Santa Clara University
From the Back Cover
With the rise of multi-core architecture, parallel programming is an increasingly important topic for software engineers and computer system designers. Principles of Parallel Programming , written by well-known researchers Calvin Lin and Lawrence Snyder, focuses on the underlying principles of parallel computation, explains the various phenomena, and clarifies why these phenomena represent opportunities or barriers to successful parallel programming.
This book is ideal for an upper-level undergraduate or master's level course, or for a professional programmer seeking an introduction to parallelism. The text supplies valuable, enduring information that will outlive the current hardware and software.
- A principles-first approach emphasizes the fundamental concepts of parallel computation rather than offering a "how-to" guide for current commercial products.
- Popular programming languages are discussed in the context of the principles and tools used for programming contemporary parallel machines.
- Note boxes provide interesting extensions of the information presented.
- Definition boxes define key words and concepts.
- Chapter exercises offer opportunities to implement the concepts discussed.
- Future Directions in Parallel Programming (Chapter 10) focuses on current developments that are likely to impact the field.
- Writing Parallel Programs (Chapter 11) provides hands-on practice for readers to create a substantial parallel program.
Browse award-winning titles. See more
Top customer reviews
The authors of this book clearly introduce key concepts of extracting parallelism, load balancing, performance analysis, and memory management with a number of well-selected examples and advice clearly stemming from long experience in the field. They describe numerous general principles in an accessible way, without getting bogged down in the theoretical models of dubious utility that are too common in this field. The book is timely, in that it exhibits a clear awareness of current architectural trends, but remains rightly focused on timeless ideas.
I suppose the authors cannot be blamed for devoting a chapter to the parallel programming language they have developed in their own work (ZPL), and it is balanced by chapters on the current popular low-level techniques like MPI and threads as well as brief discussions of other proposed high-level languages (although the mention of Cilk is a bit too brief for my tastes). But the real strength of the book is that it is not tied too closely to any particular language or implementation, and instead helps you to recognize fundamental ideas as they appear in various forms.
I do wish the book were a bit cheaper, but high textbook prices seem to be a fact of life. A more basic introduction to caches, and the connection between memory locality on serial computers and locality on parallel machines, would probably be helpful. The mention of the powerful idea of work stealing is too brief. And I'm sure I'll find many other things I dislike as I continue to use this book, but overall I'm quite happy with this book as a way to get students into this subject.
The authors explain the current state of multiprocessor architectures. The few remaining computer CPU makers have efforts in this field. Intel, AMD, Sun and IBM. The book describes qualitatively the salient aspects of each. One nice thing about the discussion is that it focuses on this, without drowning you in unnecessary hardware details. This turns out to be a key theme of the book. It abstracts out essential hardware properties, so that you can appreciate these and apply the book's ideas without being tied to any given chip.
The book also describes an important type of multiprocessor. Cluster machines, where each node is typically some off the shelf CPU, buffed up with a lot of local memory. The key differences between clusters are often related to how the nodes are hooked to each other, by some type of bus or crossbar. Affordability is an important property of clusters; thus the maximal use of commodity hardware. (The hypercube that I mentioned earlier would be a cluster.)
For a programmer, there is one overriding idea that you should get from the book. For optimal performance, minimise the internodal communication, compared to the use of a node's cache. The access time of the former can be 2-5 orders of magnitude slower. Details vary with the given architectures, of course. But typically nothing else comes close, in terms of effects on your throughput.