6.172 Performance Engineering of Software Systems

6.172 Performance Engineering of Software Systems (Fall 2010, MIT OCW). Instructors: Professor Saman Amarasinghe and Professor Charles Leiserson. This course 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. (from

Lecture 17 - Performance Issues in Parallelization

Lecture covering the impact of synchronization and memory on parallel performance, using OpenMP instead of Cilk. Topics include granularity of parallelism, true and false sharing, and load balancing.

Go to the Course Home or watch other lectures:

Lecture 01 - Matrix Multiply: A Case Study
Lecture 02 - Bit Hacks
Lecture 03 - Basic Performance Engineering
Lecture 04 - Computer Architecture and Performance Engineering
Industry Mentor (MITPOSSE) Overview
Lecture 05 - Performance Engineering with Profiling Tools
Lecture 06 - C to Assembler
Lecture 07 - Memory Systems and Performance Engineering
Lecture 08 - Cache-Efficient Algorithms
Lecture 09 - Cache-Efficient Algorithms II
Lecture 10 - Dynamic Storage Allocation
Lecture 11 - What Compilers Can and Cannot Do
Lecture 12 - Multicore Programming
Lecture 13 - Parallelism and Performance
Lecture 14 - Analysis of Multithreaded Algorithms
Lecture 15 - Nondeterministic Programming
Lecture 16 - Synchronizing without Locks
Lecture 17 - Performance Issues in Parallelization
Lecture 18 - Primer on Ray Tracing Techniques
Lecture 19 - How TokuDB Fractal Tree Indexes Work
Lecture 20 - Distributed Systems
Lecture 21 - Quiz 2 Review
Lecture 22 - A Tale of 10 Bugs: Performance Engineering at VMware
Lecture 23 - Final Competition and Student Feedback