Multicore Computing
CS 5966 / 6966

School of Computing
University of Utah
http://www.eng.utah.edu/~cs5966/LECTURES
http://www.cs.utah.edu/formal_verification

Administrative: teach-cs5966@eng.utah.edu
TA: sriram@cs.utah.edu
Wiki:
http://www.cs.utah.edu/formal_verification/mediawiki/index.php/User:Cs5966
Google Group:
cs5966
OFFICE HOURS: Instructor: Thu or Fri are wide open - just come after sending email!
OFFICE LOCATION: 3428 MEB

SOFTWARE UPDATES:


http://www.eng.utah.edu/~cs5966/software-updates.html

LECTURE NOTES:
Week 1:
Lecture 1, 1/12/09
[html] [pdf] [tex]

Lecture 2, 1/14/09
[html] [pdf] [tex]


Week 2:
Lecture 3, 1/21/09 (only lec)
[html] [pdf] [tex]


Week 3:
Lecture 5, 1/28/09
[html] [pdf] [tex]


Week 4:
Lecture 6, 2/2/09
[html] [pdf] [tex] Code examples courtesy of LLNL, Blaise Barney


Week 5:
Lecture 7, 2/9/09
[html] [pdf] [tex]


Week 6:
Lecture on MCAPI (slides will be posted asap).

Week 7:
Lecture on MCAPI (slides will be posted asap).
Lecture 9, 2/23/09
[html] [pdf] [tex]

Table of Contents

1  SUBJECT OVERVIEW

Multiprocessor machines or ``Multicores'' as they are known are quickly taking over every aspect of computing. The central questions in this area are: How do we design correct parallel applications that perform well and consume less resources? How do we design parallel machines (the hardware) to support these applications? Roughly speaking, one can notice the following degrees of emphasis in parallel computing research over the decades: An article in CACM November 2008 by Cantrill et al. asks whether the kinds of questions that are being answered by modern research in multicore computing are any different from those asked and answered in the research of the 70s and 80s. This question is well answered in the whitepaper under http://www.upcrc.uiuc.edu where they point out that whereas previous parallel computing research had focussed on server and high performance computing (HPC) applications, the shift of of focus toward client parallel applications escalates the scope and magnitude of the questions -- i.e., how many people are affected by the various outstanding problems in this area. This truly sets apart the modern resurgence of interest in parallelism from those on previous occasions.

2  SYLLABUS OVERVIEW

For a definitive description of the syllabus (even this will be frequently changed), kindly refer to Week1's lecture notes in html or pdf.

My focus will be on the conceptual foundations of concurrency -- anything that tends to have longer-term value. One should ideally learn these concepts within the application contexts in which they occur; this requires studying specific applications. One should study and appreciate the interplay between different aspects of concurrency such as the design and evaluation of concurrent algorithms, programming languages, concurrency semantics, and verification/testing techniques. One should also have plenty of opportunities to read and summarize papers, use tools, make in-class presentations, and do a project.

I will be using multiple references. A wiki page will be set up containing some references -- and you'll have the opportunity to expand this collection. At some point in this course, I would like to switch to the class textbook ``The Art of Multiprocessor Programming'' (we'll call it TAMP) by Herlihy and Shavit (its table of contents is available
here, for example), and then remain with the book, studying many of the topics it introduces. Till then, we shall be using various papers and online references.

A summary of the course is as follows.
Introduction:


Basics of Thread and Message Passing Programming:


Lectures from our Textbook:
Studying the text ``The Art of Multiprocessor Programming''

3  GRADING

This class is dual-listed permitting UGs (seniors) and Grads to profit from it. The assignments are worth 25% of the course grades. All assignments can be freely discussed amongst yourselves, unless otherwise indicated. There will also be a project worth 60% of the course grades. The project can be done in groups of size from 1 to 4. 15% is for participation during classes and through email.

Multi-core computing is witnessing an explosive (and often confusing) growth. My goal is to learn these developments myself, as well as to help you learn. I understand that you are coming with different backgrounds. Luckily, this is a special topics class - and so, my goal is to maximize both your freedom to explore and my freedom to evaluate your work positively. This means that
are sufficient reasons for me to give you an A.

You may face many unknown terms in your readings. A good way to understand these terms is to post discussion topics in our class Google group. All assignment submissions must, by default, be made as a discussion on the Google group. While posting this discussion, you are allowed to comment on (of course polite remarks -- no flames) as well as build on others' remarks. If you disagree strongly with a posted comment, kindly send your opinions to me directly. Some homework assignments will require individual submissions through directly mailed PDFs or Tarballs.


4  ADDITIONAL REFERENCES


This document was translated from LATEX by HEVEA.