Muutke küpsiste eelistusi

Sourcebook of Parallel Computing [Kõva köide]

Edited by (University of Tennessee, USA), Edited by (Rice University), Edited by , Edited by (Principal Investigator on the Massively Scalar Compiler Project, Rice University, Houston, T), Edited by (Argonne National Laboratory), Edited by (Indiana University, USA), Edited by (Argonne National Laboratory)
Teised raamatud teemal:
Teised raamatud teemal:


Parallel Computing is a compelling vision of how computation can seamlessly scale from a single processor to virtually limitless computing power. Unfortunately, the scaling of application performance has not matched peak speed, and the programming burden for these machines remains heavy. The applications must be programmed to exploit parallelism in the most efficient way possible. Today, the responsibility for achieving the vision of scalable parallelism remains in the hands of the application developer.


This book represents the collected knowledge and experience of over 60 leading parallel computing researchers. They offer students, scientists and engineers a complete sourcebook with solid coverage of parallel computing hardware, programming considerations, algorithms, software and enabling technologies, as well as several parallel application case studies. The Sourcebook of Parallel Computing offers extensive tutorials and detailed documentation of the advanced strategies produced by research over the last two decades
application case studies. The Sourcebook of Parallel Computing offers extensive tutorials and detailed documentation of the advanced strategies produced by research over the last two decades

* Provides a solid background in parallel computing technologies
* Examines the technologies available and teaches students and practitioners how to select and apply them
* Presents case studies in a range of application areas including Chemistry, Image Processing, Data Mining, Ocean Modeling and Earthquake Simulation
* Considers the future development of parallel computing technologies and the kinds of applications they will support

Arvustused

"Sourcebook of Parallel Computing is an indispensable reference for parallel-computing consultants, scientists, and researchers, and a valuable addition to any computer science library." --Distributed Systems Online

"The Sourcebook for Parallel Computing gives a thorough introduction to parallel applications, software technologies, enabling technologies, and algorithms. This is a great book that I highly recommend to anyone interested in a comprehensive and thoughtful treatment of the most important issues in parallel computing." --Horst Simon, Director, Director, NERSC, Berkeley

"The Sourcebook builds on the important work done at the Center for Research on Parallel Computation and within the academic community for over a decade. It is a definitive text on Parallel Computing and should be a key reference for students, researchers and practitioners in the field." --Francine Berman, Director, San Diego Supercomputer Center and the National Partnership for Advanced Computational Infrastructure

Muu info

* Provides a solid background in parallel computing technologies * Examines the technologies available and teaches students and practitioners how to select and apply them * Presents case studies in a range of application areas including Chemistry, Image Processing, Data Mining, Ocean Modeling and Earthquake Simulation * Considers the future development of parallel computing technologies and the kinds of applications they will support
Preface xiii
PART I PARALLELISM 1(71)
Introduction
3(12)
Parallel Computing Hardware
4(4)
What Have We Learned from Applications?
8(3)
Software and Algorithms
11(2)
Toward a Science of Parallel Computation
13(2)
Parallel Computer Architectures
15(28)
Uniprocessor Architecture
16(10)
Parallel Architectures
26(14)
Future Directions for Parallel Architectures
40(1)
Conclusion
41(2)
Parallel Programming Considerations
43(29)
Architectural Considerations
45(4)
Decomposing Programs for Parallelism
49(7)
Enhancing Parallel Performance
56(7)
Memory-Hierarchy Management
63(3)
Parallel Debugging
66(1)
Performance Analysis and Tuning
67(2)
Parallel Input/Output
69(1)
Conclusion
70(2)
Further Reading
70(2)
PART II APPLICATIONS 72(219)
General Application Issues
75(18)
Application Characteristics in a Simple Example
75(4)
Communication Structure in Jacobi's Method for Poisson's Equation
79(3)
Communication Overhead for More General Update Stencils
82(2)
Applications as Basic Complex Systems
84(3)
Time-Stepped and Event-Driven Simulations
87(1)
Temporal Structure of Applications
88(1)
Summary of Parallelization of Basic Complex Systems
89(1)
Meta-Problems
90(1)
Conclusion
91(2)
Parallel Computing in Computational Fluid Dynamics
93(52)
Introduction to Computational Fluid Dynamics
94(4)
Incompressible Flows
98(34)
Compressible Flows
132(12)
Conclusion
144(1)
Parallel Computing in Environment and Energy
145(22)
Subsurface-Flow Modeling
146(6)
IPARS and Grid Computing by NetSolve
152(3)
Tracking and Interactive Simulation in IPARS
155(4)
Surface-Water Simulation
159(3)
A Coupled Simulation of Flow and Transport with ADR
162(3)
Conclusion
165(2)
Parallel Computational Chemistry: An Overview of NWChem
167(28)
Molecular Quantum Chemistry
168(3)
The NWChem Architecture
171(3)
NWChem Parallel Computing Support
174(4)
NWChem Chemistry Modules
178(8)
NWChem's Place in the Computational Chemistry Community
186(2)
A Larger Perspective: Common Features of Computational Chemistry Algorithms
188(4)
Conclusion
192(3)
Application Overviews
195(96)
Numerical (General) Relativity
195(4)
Numerical Simulations in Lattice Quantum Chromodynamics
199(8)
Ocean Modeling
207(5)
Simulations of Earthquakes
212(7)
Cosmological Structure Formation
219(8)
Computational Electromagnetics
227(5)
Parallel Algorithms in Data Mining
232(11)
High-Performance Computing in Signal and Image Processing
243(6)
Deterministic Monte Carlo Methods and Parallelism
249(9)
Quasi-Real Time Microtomography Experiments at Photon Sources
258(7)
WebHLA-Based Meta-Computing Environment for Forces Modeling and Simulation
265(15)
Computational Structure of Applications
280(10)
Conclusion
290(1)
PART III SOFTWARE TECHNOLOGIES 291(190)
Software Technologies
293(20)
Selecting a Parallel Program Technology
294(14)
Achieving Correct and Efficient Execution
308(2)
Conclusion
310(3)
Message Passing And Threads
313(18)
Message-Passing Programming Model
314(9)
Multithreaded Programming
323(6)
Conclusion
329(2)
Parallel I/O
331(26)
Parallel I/O Infrastructure
333(6)
Overview of MPI-IO
339(5)
Parallel I/O Optimizations
344(4)
How Can Users Achieve High I/O Performance?
348(7)
Conclusion
355(2)
Languages and Compilers
357(26)
Automatic Parallelization
359(2)
Data-Parallel Programming in High Performance Fortran
361(5)
Shared-Memory Parallel Programming in OpenMP
366(5)
Single-Program, Multiple-Data Programming in Co-Array Fortran
371(6)
Supporting Technologies
377(1)
Future Trends
378(1)
Conclusion
379(4)
Further Reading
380(3)
Parallel Object-Oriented Libraries
383(26)
Object-Oriented Parallel Libraries
384(7)
Object-Oriented Parallel Programming in Java
391(5)
Multithreaded Computation in C++
396(5)
Remote Function Calls, Global Pointers, and Java RMI
401(2)
Component-Based Software Design
403(3)
Conclusion
406(3)
Problem-Solving Environments
409(34)
NetSolve: Network-Enabled Solvers
411(7)
WebFlow-Object Web Computing
418(11)
WebPDELab
429(11)
Other Grid-Computing Environments
440(2)
Conclusion
442(1)
Tools for Performance Tuning and Debugging
443(26)
Correctness and Performance Monitoring Basics
444(7)
Measurement and Debugging Implementation Challenges
451(2)
Deep Compiler Integration
453(3)
Software Tool Interfaces and Usability
456(3)
Software Tool Examples
459(7)
Challenges and Open Problems
466(1)
Conclusion
466(1)
Further Reading
467(2)
The 2-D Poisson Problem
469(12)
The Mathematical Model
469(1)
A Simple Algorithm
470(1)
Parallel Solution of Poisson's Equation
470(7)
Adding Global Operations
477(4)
PART IV ENABLING TECHNOLOGIES AND ALGORITHMS 481(239)
Reusable Software and Algorithms
483(8)
Templates: Design Patterns for Parallel Software
483(1)
Communicators and Data Structure Neutrality
484(1)
Standard Libraries and Components
485(1)
Automatic Differentiation
486(1)
Templates and Numerical Linear Algebra
487(2)
Conclusion
489(2)
Graph Partitioning for High-Performance Scientific Simulations
491(52)
Modeling Mesh-Based Computations as Graphs
493(2)
Static Graph-Partitioning Techniques
495(21)
Load Balancing of Adaptive Computations
516(9)
Parallel Graph Partitioning
525(1)
Multiconstraint, Multiobjective Graph Partitioning
526(12)
Conclusion
538(5)
Mesh Generation
543(32)
Mesh-Generation Strategies and Techniques
544(6)
Mesh-Generation Process and Geometry Preparation
550(2)
Adaptive Mesh Generation
552(8)
Parallel Mesh Generation
560(1)
Mesh Software
561(3)
Mesh Configurations
564(3)
Mesh Web Sites
567(2)
The Pacing Obstacle: Geometry/Mesh Generation
569(2)
Desiderata
571(1)
Conclusion
572(3)
Templates and Numerical Linear Algebra
575(46)
Dense Linear Algebra Algorithms
576(4)
The Influence of Computer Architecture on Performance
580(3)
Dense Linear Algebra Libraries
583(7)
Sparse Linear Algebra Methods
590(1)
Direct Solution Methods
591(5)
Iterative Solution Methods
596(7)
Sparse Eigenvalue Problems
603(16)
Conclusion
619(2)
Software for the Scalable Solution of Partial Differential Equations
621(28)
PDE Background
622(1)
Challenges in Parallel PDE Computations
623(4)
Parallel Solution Strategies
627(1)
PETSc Approach to Parallel Software for PDEs
628(17)
Software for PDEs
645(2)
Conclusion
647(2)
Parallel Continuous Optimization
649(22)
Local Optimization
651(2)
Global Optimization
653(6)
Direct Search Methods
659(4)
Optimization of Linked Subsystems
663(3)
Variable and Constraint Distribution
666(3)
Conclusion
669(2)
Path Following in Scientific Computing and Its Implementation in Auto
671(30)
Local Continuation
673(2)
Global Continuation and Degree Theory
675(2)
Folds and Bifurcations
677(2)
Practical Path Following
679(4)
Branch Switching at Bifurcations
683(3)
Computational Examples: AUTO
686(8)
Parallel AUTO
694(5)
Conclusion
699(2)
Automatic Differentiation
701(19)
Overview of Automatic Differentiation
703(4)
Automatic-Differentiation Implementation Techniques
707(2)
Automatic-Differentiation Software
709(2)
Automatic Differentiation of Message-Passing Parallel Codes
711(3)
Advanced Use of Automatic Differentiation
714(5)
Conclusion
719(1)
PART V CONCLUSION 720(9)
Wrap-Up and Signposts to the Future
723(6)
Computational Resources
723(1)
Applications
724(1)
Software
725(2)
Templates, Algorithms, and Technologies
727(1)
Signposts
727(2)
References 729(62)
Index 791(42)
About the Authors 833


Jack Dongarra is a University Distinguished Professor of Electrical Engineering and Computer Science, University of Tennessee, a Distinguished Research Staff, Oak Ridge National Laboratory and a Turning Fellow at the University of Manchester. An ACM/IEEE/ SIAM/AAAS Fellow, Dongarra pioneered the areas of supercomputer benchmarks, numerical analysis, linear algebra solvers, and high-performance computing and published extensively in these areas. He leads the Linpack benchmark evaluation of the Top-500 fastest computers over the years. Based on his high contributions in the supercomputing and high-performance areas, he was elected as a Member of the National Academy of Engineering in the USA. Ian Foster is Senior Scientist in the Mathematics and Computer Science Division at Argonne National Laboratory, where he also leads the Distributed Systems Laboratory, and Associate Professor of Computer Science at the University of Chicago. His research concerns techniques, tools, and algorithms for high-performance distributed computing, parallel computing, and computational science. Foster led the research and development of software for the I-WAY wide-area distributed computing experiment, which connected supercomputers, databases, and other high-end resources at 17 sites across North America (a live experiment at the Supercomputing conference of 1995). Geoffrey Fox is a Distinguished Professor of Informatics, Computing and Physics and Associate Dean of Graduate studies and Research in the School of Informatics and Computing, Indiana University. He has taught and led many research groups at Caltech and Syracuse University, previously. He received his Ph.D. from Cambridge University, U.K. Fox is well known for his comprehensive work and extensive publications in parallel architecture, distributed programming, grid computing, web services, and Internet applications. His book on Grid Computing (coauthored with F. Berman and Tony Hey) is widely used by the research community. He has produced over 60 Ph.D. students in physics, computer science and engineering over the years. William Gropp is a senior computer scientist and associate director of the Mathematics and Computer Science Division at Argonne National Lab. He is also a senior scientist in the Computer Science department at the University of Chicago and a senior fellow in the Argonne-University of Chicago Computation Institute. His research interests are in parallel computing, software for scientific computing, and numerical methods for partial differential equations. He has played a major role in the development of the MPI message-passing standard. p> Ken Kennedy is the Ann and John Doerr Professor of Computational Engineering and Director of the Center for High Performance Software Research (HiPerSoft) at Rice University. He is a fellow of the Institute of Electrical and Electronics Engineers, the Association for Computing Machinery, and the American Association for the Advancement of Science and has been a member of the National Academy of Engineering since 1990. From 1997 to 1999, he served as cochair of the President's Information Technology Advisory Committee (PITAC). For his leadership in producing the PITAC report on funding of information technology research, he received the Computing Research Association Distinguished Service Award (1999) and the RCI Seymour Cray HPCC Industry Recognition Award (1999). Professor Kennedy has published over 150 technical articles and supervised 34 Ph.D. dissertations on programming support software for high-performance computer systems. In recognition of his contributions to software for high-performance computation, he received the 1995 W. Wallace McDowell Award, the highest research award of the IEEE Computer Society. In 1999, he was named the third recipient of the ACM SIGPLAN Programming Languages Achievement Award. Linda Torczon is a principal investigator on the Massively Scalar Compiler Project at Rice University, and the Grid Application Development Software Project sponsored by the next Generation Software program of the National Science Foundation. She also serves as the executive director of HiPerSoft and of the Los Alamos Computer Science Institute. Her research interests include code generation, interprocedural dataflow analysis and optimization, and programming environments. Andy White is the Special Projects Director for the Weapons Physics Directorate at Los Alamos National Laboratory. This newLab oratory enterprise focuses on research issues in computer and computational sciencesassociated with employing the largest, most complex computational resources to address important national issues such as stockpile stewardship, energy and environment,systems biology, nanotechnology and crisis management.