Lectures will be held on Mondays and Wednesdays from 1pm to 2:30pm in 1-135.
Computer systems are at a critical juncture. Parallel computing is now ubiquitous across
all domains, from cellphones to multicore chips and supercomputers. But simply scaling
the number of cores will soon run out of steam, so architectures are also becoming
heterogeneous to handle specific types of computation more efficiently (e.g., GPUs).
These techniques improve performance at the cost of programmability and generality.
How can we strike the right balance between efficiency, generality, and ease of use?
6.888 will help you understand, use, and design these emerging parallel and heterogeneous systems. Through a mix of lectures and paper discussions, we will learn how modern systems work and review recent research in the area. We will cover both hardware and software aspects, ranging from computer architecture to programming models, with the holistic view that successful approaches need to consider both hardware and software. Topics include:
You should have a good understanding of basic computer architecture (i.e., a strong grasp of the material taught in 6.004). Background in advanced microarchitecture (e.g., at the 6.823 level) is not required, since our focus will not be on details of core pipelines. Prior knowledge of parallel programming and performance optimization (e.g., 6.172) will be helpful, but is not required.
6.888 is a 12-unit (4-0-8) subject and is worth 6 Engineering Design Points.
6.888 has no midterm or final exams. There are four required assignments:
The tentative weights of each assignment into the final grade are: 60% project, 15% seminar, 15% class participation, and 10% homework.
Deadlines: All deadlines are posted in the syllabus. Assignments are due by 5pm unless otherwise stated. Each student has two late days available. Each late day constitutes a 24-hour extension, and cannot be split in smaller extensions. Once a student runs out of late days, a penalty will be assessed on late assignments.
Collaboration policy: Collaboration among students to understand the course material and homework is strongly encouraged, but the submitted homework must be your own. Collaboration among projects is encouraged whenever possible. The final project report must describe how work was divided among team members and acknowledge any external help. As a general rule, follow the MIT academic integrity guidelines and, when in doubt, ask the course staff. Violations of this policy will be treated severely.