Today, parallel computing experts can solve problems previously deemed impossible and make the "merely difficult" problems economically feasible to solve. This book presents and synthesizes the recent experiences of reknown expert developers who design robust and complex parallel computing applications. They demonstrate how to adapt and implement today's most advanced, most effective parallel computing techniques.
The book begins with a highly focused introductory course designed to provide a working knowledge of all the relevant architectures, programming models, and performance issues, as well as the basic approaches to assessment, optimization, scheduling, and debugging.
Next comes a series of seventeen detailed case studies—all dealing with production-quality industrial and scientific applications, all presented firsthand by the actual code developers. Each chapter follows the same comparison-inviting format, presenting lessons learned and algorithms developed in the course of meeting real, non-academic challenges. A final section highlights the case studies' most important insights and turns an eye to the future of the discipline.
* Provides in-depth case studies of seventeen parallel computing applications, some built from scratch, others developed through parallelizing existing applications.
* Explains elements critical to all parallel programming environments, including:
** Terminology and architectures
** Programming models and methods
** Performance analysis and debugging tools
* Teaches primarily by example, showing how scientists in many fields have solved daunting problems using parallel computing.
* Covers a wide range of application areas—biology, aerospace, semiconductor design, environmental modeling, data imaging and analysis, fluid dynamics, and more.
* Summarizes the state of the art while looking to the future of parallel computing.
Presents technical animations and visualizations from many of the applications detailed in the case studies via a companion web site.