Always Learning

Advanced Search

Principles of Parallel Programming

Principles of Parallel Programming

United States Edition

Calvin Lin, Larry Snyder

Mar 2008, Hardback, 360 pages
ISBN13: 9780321487902
ISBN10: 0321487907
For orders to USA, Canada, Australia, New Zealand or Japan visit your local Pearson website
This title is ordered on demand which may result in extended delivery times.
Special online offer - Save 10%
Was £129.49, Now £116.09Save: £13.40
  • Print pagePrint page
  • Email this pageEmail page
  • Share

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.

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

  • 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.

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.

Expert Reviews

"...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

Customer Reviews

Your opinions count

Be the first to review this product. Write your review now.