Course»Course 6»Spring 2017»6.816/6.836»Homepage

6.816/6.836  Multicore Programming

Spring 2017

Instructor: Nir N Shavit

TAs: Michael Joseph Coulombe, Hayk Saribekyan

Lecture:  T2-5  (32-144)
Recitation:  R11-12  (38-166)
Recitation:  F10-11  (38-166)
Recitation:  F11-12  (38-166)  

Information: 

The computer industry is undergoing a paradigm shift to multicore and multiprocessor chips, a shift that will require a fundamental change in how we program. The art of multiprocessor programming, currently mastered by few, is more complex than programming uniprocessor machines, and requires an understanding of new computational principles, algorithms, and programming tools.

The key issues that distinguish multiprocessor programming from uniprocessor programming are the need to understand how to break applications into computations that can be executed in parallel, and perhaps more fundamentally, how these concurrent computations can coordinate with one another to allow this parallelism to translate into substantiative speedups.

There are few reference books addressing how to program multiprocessors. Most engineers must learn the tricks of the trade by asking help from more experienced friends and through a laborious trial and error process. This course aims to change this state of affairs, providing a comprehensive presentation of the principles and techniques available for programming multicore/multiprocessor machines.

The course will begin by covering the theoretical foundations of programming on multicore machines (we are strong believers that good practice requires understanding the theory). It will then move on to cover the real-world techniques used to program them. It will include a sequence of programming assignments of increasing difficulty, culminating with the design of a highly parallel "firewall" application, running on a state-of-the-art 80-way multicore machine.

Class Structure:

Our textbook will be "The Art of Multiprocessor Programming" by Herlihy and Shavit.

There will be 6 total assignments, covering both theory and practice (assignments 2-6 will have the practical part, the last being the final project). For 6.836 assignments will contain additional theoretical problems. The assignments will constitute 70% of the course grade.

There will be a final exam worth the remaining 30% of the grade. You must pass the final in order to receive a grade for the course. The exam will be scheduled during final exam period (May 22-26).

Office Hours:

Hayk Saribekyan (M5-7pm in 36-112)
Michael Coulombe (W3-5pm in 36-156)

Recitations:

Recitation sections are on R 11-12, F 10-11 and F 11-12, in 38-166. The two TAs will generally switch each week teaching recitations.

Resources:

We will use Piazza for class-related discussions. The class page can be found at https://piazza.com/mit/spring2017/68166836/home

Announcements

Last Grades Posted and Farewell

Check Stellar for the rest of the pset grades. The final has its grades posted in the newer "Gradebook Module" since it was not submitted online. There is a companion piazza post that will contain the statistics. Let me explain each one then wish you well in your future multicore life.

In Pset5B, the primary weighting was coding and explaining the hash tables. I was [possibly overly] thorough in looking at each of your implementations in detail, which is one reason it took so long to release. I was happy to see many of you came up with interesting designs as well. I hope you take the time to check out my comments to see how you may have erred so you can learn to avoid the tricky mistakes in the future.
Points were divided into these parts: 1a (5)    1b (5)    1c (10)    1d (10)    1e (15)    1f (5)    2 (5)    3 (20)    Report Quality (5)

The grade shown in the Pset6B section is your project score (out of 10). Both parts of Pset6 had to be graded in an expediated manner, so we don't have detailed comments or fine-grained points, but I personally read all of your reports and glanced through your code. I was again pleased to see the creativity and effort put into many of the projects. The primary weighting of the project was your design and writeup rather than the bug-freedom of every line of code, but don't forget you'll need both out in the real world!

You can pick up your graded and commented final exam in my office, 32-578 (it's around the corner from the open offices). One of my friendly office mates or I will let you in to grab it. The gradebook module comments lists the points per problem but no explanations for deductions.

If you won one of the performance competitions, you were notified in the Stellar comments and the bonus points were added.

In computing the final letter grades for the course, we took into account each students' pset/exam scores, strengths and weaknesses, and unique situations. Anyone on the border between two grades was examined with extra scrutiny. If you have questions about something that comments or posted solutions don't cover, feel free to post on piazza or email me and I can elaborate.

Most importantly, Nir, Hayk, and myself all really enjoyed having you as our class and wish you the best in your future endeavors.

- Michael

Announced on 29 May 2017  8:32  p.m. by Michael Joseph Coulombe

Final Review Office Hours Today

I will be holding our final office hours in 3-5pm in room 36-156. I will be available to stay longer for the benefit of those with a final ending at 4:30pm and others with further questions.

I highly recommend coming to ask questions on any of the material, including going over the solutions to the psets or the practice exams. It's important to us that you all are able to learn and be comfortable with the material and be skilled at designing and making arguments about concurrent solutions to problems.

Announced on 24 May 2017  10:40  a.m. by Michael Joseph Coulombe

I will be in 36-112 from 3-5pm today to answer your questions

We'll have a review session on Wednesday (date and time TBA).

Announced on 22 May 2017  10:07  a.m. by Hayk Saribekyan

Practice Final, Laptop Policy

A new practice final has been added to the materials section. Problem 2b was relevant for the final project during the semester the exam was given; at a high level, MapReduce is like a one-use thread pool that, when run(), will first call map() on each item (in parallel) of the inputs array, where map() will perform some computation and use storePair(k,v) to build up a (shared) mapping from a key to many values, then run() will call reduce() on each key (in parallel) with all the values stored by map() calls, where reduce() will perform some other computation. The question asks you to inherit from MapReduce and implement just map() and reduce(). You are allowed to recursively create MapReduce objects.

Also, after hearing your suggestions, Nir has agreed to allow internet-disabled electronic devices for reading the book or your notes. This is a priviledge granted out of kindness, so there will be serious consequences for cheating with your device.

Announced on 18 May 2017  11:34  p.m. by Michael Joseph Coulombe

Practice Exam, No OH today

There is now a practice exam in the materials section. It is a midterm, so it only covers the first half of the class. We will shortly post a practice final that covers the whole course, and after some time we will post solutions for them both so you can check your answers and ask questions in the Q&A session next week.

Also the pset5 theory solutions are posted, and the pset6 theory solutions are almost ready.

There will be no office hours today.

Announced on 17 May 2017  1:24  p.m. by Michael Joseph Coulombe

View archived announcements