Principles and Practice of Scalable Systems
A key focus of the design of modern computing systems is performance and scalability, particularly in light of the limits of Moore’s Law and Dennard scaling. To this end, systems are increasingly being implemented by composingheterogeneous computing componentsand continually changing memory systems as novel, performant hardware surfaces. Applications fueled by rapid stridesin machine learning, data analysis, and extreme-scale simulation are becoming more domain-specific and highly distributed. In this scenario, traditional boundaries between hardware-oriented and software-oriented disciplines increasingly are blurred. Achieving scalability of systems and applications will therefore require coordinated progress in multiple disciplines such ascomputer architecture, high-performance computing (HPC), programming languages and compilers, security and privacy, systems, theory, and algorithms.Cross-cutting concernssuch as performance (including, but not limited to, time, space, and communi...