Lecture Description
Lecture 4: Computer Architecture and Performance Engineering
Instructor: Saman Amarasinghe, John Dong
View the complete course: ocw.mit.edu/6-172F10
License: Creative Commons BY-NC-SA
More information at ocw.mit.edu/terms
More courses at ocw.mit.edu
Course Index
- Matrix Multiply: A Case Study
- Bit Hacks
- Basic Performance Engineering
- Computer Architecture and Performance Engineering
- Performance Engineering with Profiling Tools
- C to Assembler
- Memory Systems and Performance Engineering
- Cache-Efficient Algorithms
- Cache-Efficient Algorithms II
- Dynamic Storage Allocation
- What Compilers Can and Cannot Do
- Multicore Programming
- Parallelism and Performance
- Analysis of Multithreaded Algorithms
- Nondeterministic Programming
- Synchronizing without Locks
- Performance Issues in Parallelization
- Primer on Ray Tracing Techniques
- How TokuDB Fractal Tree Indexes Work
- Distributed Systems
- Quiz 2 Review
- A Tale of 10 Bugs: Performance Engineering at Vmware
- Final Competition and Student Feedback
- BONUS: Industry Mentor Overview
Course Description
This class is a hands-on, project-based introduction to building scalable and high-performance software systems. Topics include performance analysis, algorithmic techniques for high performance, instruction-level optimizations, cache and memory hierarchy optimization, parallel programming, and building scalable distributed systems.
Modern computing platforms provide unprecedented amounts of raw computational power. But significant complexity comes along with this power, to the point that making useful computations exploit even a fraction of the potential of the computing platform is a substantial challenge. Indeed, obtaining good performance requires a comprehensive understanding of all layers of the underlying platform, deep insight into the computation at hand, and the ingenuity and creativity required to obtain an effective mapping of the computation onto the machine. The reward for mastering these sophisticated and challenging topics is the ability to make computations that can process large amount of data orders of magnitude more quickly and efficiently and to obtain results that are unavailable with standard practice.