6.S898 Advanced Performance-Engineering for Multicore Applications


Level: Graduate Subject
Units: 6-8-4
Prerequisites:  6.172 or at least two of 6.046J, 6.035, and 6.823 or permission of instructor
Instructor:  Prof. Charles Leiserson (cel@mit.edu)
Schedule:  MWF10-12, Room 32-044
This subject qualifies as a Computer Systems 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 is rising, and the need for performance-engineering technology is growing.  Lab work involves two term projects.  Students 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 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.  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.