Principles of Parallel Programming:International EditionDescription |
With the rise of multi-core architecture, parallel programming is an increasingly important topic for software engineers and computer system designers. Written by well-known researchers Larry Snyder and Calvin Lin, this highly anticipated first edition emphasizes the principles underlying parallel computation, explains the various phenomena, and clarifies why these phenomena represent opportunities or barriers to successful parallel programming. Ideal for an advanced upper-level undergraduate course, Principles of Parallel Programming supplies enduring knowledge that will outlive the current hardware and software, aiming to inspire future researchers to build tomorrow's solutions. "...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 www.pearsonhighered.com/lin  |
|
Features |
- A principles-first approach emphasizes the underlying concepts of parallel computation rather than taking a “how-to” approach for currently popular commercial tools.
- Popular programming languages are discussed in the context of these principles and the tools used for programming contemporary parallel machines.
- Historical Context and Historical Perspective features at the end of select chapters discuss important developments and/or research in computing history related to the chapter's topics.
- Fact/Tip boxes provide interesting extensions of chapter information.
- Definitions boxes clearly define and isolate keywords from the main chapter narrative.
- Exercises at the end of each chapter offer opportunities to implement the concepts presented in the chapter.
- Appendix 1, More Advanced Concepts, expands upon the text's topics to extend learning.
|

|
|
Table of Contents |
Chapter 1 Introduction: Parallelism = Opportunities + Challenges The Power and Potential of Parallelism Examining Sequential and Parallel Programs A Paradigm Shift Parallelism Using Multiple Instruction Streams The Goals: Scalable Performance and Portability Summary Historical Context Exercises
Chapter 2 Parallel Computers And Their Model Balancing Machine Specifics with Portability A Look at Five Parallel Computers The RAM: An Abstraction of a Sequential Computer The PRAM: A Parallel Computer Model The CTA: A Practical Parallel Computer Model Memory Reference Mechanisms A Closer Look at Communication Applying the CTA Model Summary Historical Perspective Exercises
Chapter 3 Reasoning about Performance Introduction Motivation and Some Basic Concepts Sources of Performance Loss Parallel Structure Reasoning about Performance Performance Trade-Offs Measuring Performance What should we measure? Summary Historical Perspective Exercises
Chapter 4 First Steps Towards Parallel Programming Task and Data Parallelism Peril-L Count 3s Example Conceptualizing Parallelism Alphabetizing Example Comparison of Three Solutions Summary Historical Perspective Exercises
Chapter 5 Scalable Algorithmic Techniques The Inevitability of Trees Blocks of Independent Computation Schwartz' Algorithm Assigning Work To Processes Statically Assigning Work to Processes Dynamically The Reduce & Scan Abstractions Trees Summary Historical Context Exercises
Chapter 6 Programming with Threads POSIX Threads Thread Creation and Destruction Mutual Exclusion Synchronization Safety Issues Performance Issues Open MP The Count 3s Example Semantic Limitations on Reduction Thread Behavior and Interaction Sections Summary of OpenMP Java Threads Summary Historical Perspectives Exercises
Chapter 7 Local View Programming Languages MPI: The Message Passing Interface Getting Started Safety Issues Performance Issues Co-Array Fortran Unified Parallel C Titanium Summary Exercises
Chapter 8 Global View Programming Languages The Z-level Programming Language Basic Concepts of ZPL Life, An Example Design Principles Manipulating Arrays Of Different Ranks Reordering Data With Remap Parallel Execution of ZPL Performance Model Summary NESL Historical Context Exercises
Chapter 9 Assessing Our Knowledge Introduction Evaluating Existing Approaches Lessons for the Future Summary Historical Perspectives Exercises
Chapter 10 Future Directions in Parallel Programming Attached Processors Grid Computing Transactional Memory Summary Exercises
Chapter 11 Capstone Project: Designing a Parallel Program Introduction Motivation Getting Started Summary Historical Perspective Exercises
Appendix 1 More Advanced Concepts
|

|
|
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. KEY FEATURES - 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.
www.pearsonhighered.com/lin |

|
|
Author |
Lawrence Snyder is Professor of Computer Science and Engineering at the University of Washington in Seattle. He received his PhD from Carnegie Mellon University and has devoted most of his career to parallel computation research, including architecture, algorithms and languages. With Calvin Lin and UW graduate students, he developed the ZPL parallel programming language. He is a fellow of the ACM and IEEE. He is an ardent traveler, enthusiastic theater-goer and occasional skier.
Calvin Lin is an Associate Professor of Computer Sciences at The University of Texas at Austin, where he also serves as Director of the Turing Scholars Honors Program of undergraduate CS majors. He received his PhD from the University of Washington under the supervision of Lawrence Snyder. His current research interests include compilers and micro-architecture. In his spare time, he is an avid ultimate Frisbee player and coach of UT's Men's Ultimate Frisbee team.
|

|
|
Reader Review(s) |
"...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 |

|
|