Design principles for scalable massively parallel machines and their software
This book explains how to build hardware and software that work together to run many processors without bottlenecks, using the Ultracomputer as a guiding example. The text outlines goals like scaling performance, general purpose usefulness, and easy programmability. It shows how an operating system can support high-level parallel programming, dynamic scheduling, and parallel data management. You’ll find practical ideas for synchronization, memory management, and task coordination that aim to keep many processors busy without serial bottlenecks.
- How fetch-and-add and other coordination primitives support parallel software
- Techniques for parallel memory management and stack handling
- Strategies for scheduling, task spawning, and load balancing in a shared-memory, multi-processor setting
- Approaches to I/O, file systems, and event-based synchronization in a parallel environment
Ideal for readers interested in the hardware-software tradeoffs of parallel systems and in designing operating systems that scale with the number of processors.