Patterns for Parallel Programming

Patterns for Parallel Programming

Timothy G. Mattson

Language: English

Pages: 384

ISBN: 0321228111

Format: PDF / Kindle (mobi) / ePub


The Parallel Programming Guide for Every Software Developer

From grids and clusters to next-generation game consoles, parallel computing is going mainstream. Innovations such as Hyper-Threading Technology, HyperTransport Technology, and multicore microprocessors from IBM, Intel, and Sun are accelerating the movement's growth. Only one thing is missing: programmers with the skills to meet the soaring demand for parallel software.

That's where Patterns for Parallel Programming comes in. It's the first parallel programming guide written specifically to serve working software developers, not just computer scientists. The authors introduce a complete, highly accessible pattern language that will help any experienced developer "think parallel"-and start writing effective parallel code almost immediately. Instead of formal theory, they deliver proven solutions to the challenges faced by parallel programmers, and pragmatic guidance for using today's parallel APIs in the real world. Coverage includes:

  • Understanding the parallel computing landscape and the challenges faced by parallel developers
  • Finding the concurrency in a software design problem and decomposing it into concurrent tasks
  • Managing the use of data across tasks
  • Creating an algorithm structure that effectively exploits the concurrency you've identified
  • Connecting your algorithmic structures to the APIs needed to implement them
  • Specific software constructs for implementing parallel programs
  • Working with today's leading parallel programming environments: OpenMP, MPI, and Java

Patterns have helped thousands of programmers master object-oriented development and other complex programming technologies. With this book, you will learn that they're the best way to master parallel programming too.

0321228111B08232004

Code Complete: A Practical Handbook of Software Construction

Pro ASP.NET MVC 5

Embedded Systems Circuits and Programming

Android Quick APIs Reference

Continuous Testing: with Ruby, Rails, and JavaScript

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

we didn't fully appreciate was how hard it would be on our families. We are grateful to Beverly's  family (Daniel and Steve), Tim's family (Noah, August, and Martha), and Berna's family (Billie) for  the sacrifices they've made to support this project.       — Tim Mattson, Olympia, Washington, April 2004       — Beverly Sanders, Gainesville, Florida, April 2004       — Berna Massingill, San Antonio, Texas, April 2004  Chapter    1.    A Pattern Language for Parallel Programming

To solve this problem, models of how radiation propagates through the body are used to correct the  images. A common approach is to build a Monte Carlo model, as described by Ljungberg and King  [LK98]. Randomly selected points within the body are assumed to emit radiation (usually a gamma  ray), and the trajectory of each ray is followed. As a particle (ray) passes through the body, it is  attenuated by the different organs it traverses, continuing until the particle leaves the body and hits a

Molecular dynamics This problem was described in Sec. 3.1.3, and we discussed its decomposition in the Task  Decomposition and Data Decomposition patterns. We identified the following tasks: • Tasks that find the vibrational forces on an atom • Tasks that find the rotational forces on an atom • Tasks that find the nonbonded forces on an atom • Tasks that update the position and velocity of an atom •

processor as many, then we can reason about correctness and do most of the testing on the  single­processor version. This is much easier, and thus, when possible, sequential equivalence  is a highly desirable goal. 5.3. CHOOSING THE PATTERNS Choosing which program structure pattern to use is usually straightforward. In most cases, the  programming environment selected for the project and the patterns used from the Algorithm Structure

Finding Concurrency. The programmer works in the problem domain to identify the available  concurrency and expose it for use in the algorithm design.      *        Algorithm Structure. The programmer works with high­level structures for organizing a parallel  algorithm.      *        Supporting Structures. We shift from algorithms to source code and consider how the parallel  program will be organized and the techniques used to manage shared data.      *

Download sample

Download

About admin