6.886 Advanced Performance-Engineering for Multicore Applications


Graduate H-level
Units: 4-6-2
Prerequisites: 6.172 or at least two of 6.046, 6.035, and 6.823 or permission of instructor
Instructors:  Professor Charles Leiserson (cel@mit.edu), and Dr. Bradley Kuszamaul
Schedule: MWF10-12, room 32-044
This subject qualifies as a Computer Systems OR Theoretical Computer Science concentration subject.
This project-based subject will provide students a foundation in advanced software performance engineering.  As Moore’s Law comes to an end, the importance of performance engineering will rise, and the need for performance-engineering technology will grow.  Lab work will involve two term projects. Students will performance-engineer a multicore application or library and develop or enhance a performance-engineering tool, both of their own choosing and either in small teams or individually.  Students will present their work in design and code reviews, as well as present topical material.  Although not mandatory for either of the two projects, the focus of the course will be on C/C++, Cilk, and LLVM.  Some of the projects may serve as the basis for or a component of a graduate thesis or conference publication.  Possible topics include parallelism and scalability analysis, work-stealing schedulers, compiler and runtime support for parallelism, memory hierarchy and cache simulators, cache-efficient algorithms, race detectors, performance profiling, vectorization, compiler instrumentation, data-graph computations, task-graph execution, pipeline parallelism, performance-testing infrastructure, hyperobjects, autotuning, domain-specific compilers, and metaprogramming for performance.