CMSC 22240-1: Computer Architecture for Scientists
Winter 2022, TuTh 1120-1240 , Location: Ry 251
Book: Computer Architecture for Scientists:
Principles and Performance
(Cambridge University
Press, in print March 2022!
)
The dramatic increase in computer performance has been extraordinary, but not for all computations: it has key limits and structure. Software architects, developers, and even data scientists need to understand how to exploit the fundamental structure of computer performance to harness it for future applications.
Using a principled approach, Computer Architecture for Scientists covers the four key pillars of computer performance and imparts a high-level basis for reasoning with and understanding these concepts. These principles and models provide approachable high-level insights and quantitative modeling without distracting low-level detail. The pillars include:
- Small is fast: how size scaling drives performance (miniaturization)
- Hidden parallelism: how a sequential program can be executed faster with
parallelism (instruction-level parallelism)
- Dynamic locality: skirting physical limits, by arranging data in a smaller space (caches and reuse/locality)
- Parallelism: increasing performance with teams of workers (multicore and cloud)
Finally, the text covers the GPU and machine-learning accelerators that have become important for more and more mainstream applications.
The course provides
a longer-term understanding of computer capabilities, performance, and limits to the
wealth of computer scientists practicing data science, software
development, or machine learning.
Students may not receive credit for both CMSC 22200 and 22240. This course is an optional prerequisite for CMSC 23000 (parallel to others)
Students will use a draft book, soon to be published by Cambridge University Press for readings
and exercises.
Exercises and labs will explore the performance models derived
from these scientific principles; learning to reason about
performance and scalability in computer architecture and
systems.
Canvas for this course is (will be) HERE
Syllabus
- Introduction: Computers are ubiquitous, and amazing powerful and cheap
- Basics of Computer Instruction Sets, Assembly and High-level Languages
- Small is Fast! (and Scaling)
- The Sequential Computing Abstraction, Parallel Implementation
- Exploiting Dynamic Locality (Caches and more)
- Beyond Sequential: Parallelism and Scalout (Multicore and the Cloud)
- Accelerators: GPU's, Machine Learning Accelerators, and more!
- Computing Futures
Coursework: Assignments
- Assignment #1: Computing and Society, Scaling impact. Simple assembly
- Assignment #2: Instruction Execution, Size Scaling for Computers
- Assignment #3: Sequential Abstraction, Renaming, Cheating Sequence
- Assignment #4: Dynamic Locality (for large Memories)
Assignment #5: Reuse Distance, Parallelism and Scaleout (Multicore and Cloud)
- Assignment #6: Accelerators
Coursework: In-class Discussion and Quizzes
Students will be expected to keep up with readings and contribute to in-class discussions. There will be 2-3 in-class quizzes.
|