Synopses & Reviews
The computing power that's available on the average desktop has exploded in the past few years. A typical PC has performance exceeding that of a multi-million dollar supercomputer a mere decade ago. To some people, that might mean that it's time to sit back and watch computers get faster: performance is no longer an issue, we'll let hardware do the work. But if you're looking at this book, you're not one of them. Performance is always an issue. Even with the fastest computers, there's a need to harness the processing power and get more work done in a limited amount of time.If you're a software developer, you probably know that getting the most out of a modern workstation or PC can be tricky. Paying closer attention to memory reference patterns and loop structure can have a huge payoff. High Performance Computing discusses how modern workstations get their performance and how you can write code that makes optimal use of your hardware. You'll learn what the newest buzzwords really mean, how caching and other memory design features affect the way your software behaves, and where the newest "post-RISC" architectures are headed.If you're involved with purchasing or evaluating workstations, this book will help you make intelligent comparisons. You'll learn how to interpret the commonly quoted industry benchmarks, what vendors do to show their machines in the best possible light, and how to run your own benchmarks.Whether you're using the latest Pentium PC or a highly specialized multiprocessor, you'll find High Performance Computing an indispensable guide. Topics covered include:
- CPU and memory architecture for RISC microprocessors and their successors
- Optimizing compilers
- Timing and profiling programs
- Understanding parallelism
- Loop and memory reference optimizations
- Benchmarking
- Parallel Computing and Multiprocessing
Synopsis
In the late '90s, workstations and PCs have become a lot more interesting for "armchair" architects. If you'd like to know how the hardware on your desk works, this second edition of "High Performance Computing" is a good place to start. You'll learn what the newest buzzwords really mean, how caching and other memory design features affect performance, and where the newest "post-RISC" architectures are headed. If you're a software developer, you probably know that getting the most out of a modern workstation or PC can be tricky. Paying closer attention to memory reference patterns and loop structure can have a huge payoff. "High Performance Computing" discusses how modern workstations get their performance and how you can write code that makes optimal use of your hardware. If you're involved with purchasing or evaluating workstations, this book will help you make intelligent comparisons. You'll learn how to interpret the commonly quoted industry benchmarks, what vendors do to show their machines in the best possible light, and how to run your own benchmarks. Whether you're using the latest Pentium PC or a highly specialized multiprocessor, you'll find "High Performance Computing an indispensable guide.
Synopsis
This second edition gives a thorough overview of the latest workstation and PC architectures and the trends that will influence the next generation. It pays special attention to memory design, tuning code for the best performance, multiprocessors, and benchmarking.
About the Author
Charles Severance is the associate director for advanced technology at the University of Michigan Media Union, where he also teaches computer science courses including Introduction to C++. His current research is in the area of Internet delivery of educational material. He has been active in IEEE standards for many years, and he edits a monthly column in the magazine IEEE Computer on computer standards. Charles is the co-host of the television show North Coast Digital and was previously the co-host of the television show Nothin but Net.
Kevin Dowd is a consultant to the aerospace and commercial industries, specializing in performance computing and information infrastructures. He is a veteran of two computer companies (which no longer make computers), and the nuclear power plant business (not many more of those have been made either). Kevin is a principal in the Atlantic Computing Technology Corporation, located in Wethersfield, Connecticut.
Table of Contents
Table of Contents
Preface
Part 1. Modern Computer Architectures
Chapter 1. What Is High Performance Computing?
Why Worry About Performance?
Scope of High Performance Computing
Studying High Performance Computing
Measuring Performance
The Next Step
Chapter 2. High Performance Microprocessors
Why CISC?
Fundamentals of RISC
Second-Generation RISC Processors
RISC Means Fast
Out-of-Order Execution: The Post-RISC Architecture
Future Trends: Intel IA-64 and EPIC
Closing Notes
Chapter 3. Memory
Memory Technology
Registers
Caches
Cache Organization
Virtual Memory
Improving Memory Performance
Closing Notes
Chapter 4. Floating-Point Numbers
Reality
Representation
Effects of Floating-Point Representation
Improving Accuracy Using Guard Digits
History of IEEE Floating-Point Format
IEEE Floating-Point Standard
IEEE Storage Format
IEEE Operations
Special Values
Exceptions and Traps
Compiler Issues
Closing Notes
Part 2. Programming and Tuning Software
Chapter 5. What a Compiler Does
History of Compilers
Which Language to Optimize?
Optimizing Compiler Tour
Optimization Levels
Classical Optimizations
Closing Notes
Chapter 6. Timing and Profiling
Timing
Subroutine Profiling
Basic Block Profilers
Virtual Memory
Closing Notes
Chapter 7. Eliminating Clutter
Subroutine Calls
Branches
Branches Within Loops
Other Clutter
Closing Notes
Chapter 8. Loop Optimizations
Operation Counting
Basic Loop Unrolling
Qualifying Candidates for Loop Unrolling
Nested Loops
Loop Interchange
Memory Access Patterns
When Interchange Won't Work
Blocking to Ease Memory Access Patterns
Programs That Require More Memory Than You Have
Closing Notes
Part 3. Shared-Memory Parallel Processors
Chapter 9. Understanding Parallelism
Dependencies
Loops
Loop-Carried Dependencies
Ambiguous References
Closing Notes
Chapter 10. Shared-Memory Multiprocessors
Symmetric Multiprocessing Hardware
Multiprocessor Software Concepts
Techniques for Multithreaded Programs
A Real Example
Closing Notes
Chapter 11. Programming Shared-Memory Multiprocessors
Automatic Parallelization
Assisting the Compiler
Closing Notes
Part 4. Scalable Parallel Processing
Chapter 12. Large-Scale Parallel Computing
Amdahl's Law
Interconnect Technology
A Taxonomy of Parallel Architectures
A Survey of Parallel Architectures
The Top 500 Report
Shared Uniform Memory MIMD
Shared Non-Uniform Memory MIMD Systems
Distributed-Memory MIMD Architecture
Single Instruction, Multiple Data
Closing Notes
Chapter 13. Language Support for Performance
Data-Parallel Problem: Heat Flow
Explicitly Parallel Languages
FORTRAN 90
Problem Decomposition
High Performance FORTRAN (HPF)
Closing Notes
Chapter 14. Message-Passing Environments
Parallel Virtual Machine (PVM)
Message-Passing Interface (MPI)
Closing Notes
Part 5. Benchmarking
Chapter 15. Using Published Benchmarks
User Benchmarks
Industry Benchmarks
Closing Notes
Chapter 16. Running Your Own Benchmarks
Choosing What to Benchmark
Types of Benchmarks
Preparing the Code
Closing Notes
Part 6. Appendixes
Appendix A. Processor Architectures
Appendix B. Looking at Assembly Language
Appendix C. Future Trends: Intel IA-64
Appendix D. How FORTRAN Manages Threads at Runtime
Appendix E. Memory Performance
Index