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:
-
Early research done in the 70s and 80s on parallel computing.
- The relatively high success enjoyed by pipelined processors and
the sequential compilers for them (80s and 90s), which somewhat eclipsed
the explicit use of parallelism.
- The present decade highlighted by
the resurgence of interest
in parallel computing caused by many factors
including the inevitable design
styles of multicore CPUs dictated by energy and manufacturability considerations,
the difficulty of parallel programming,
as well as the sheer sizes of the data sets being handled in high-end parallel
applications.
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:
-
-
Hardware trends (ASICs or streaming mode processors,
microarchitecture of
multi-core CPUs, multi-core communication APIs)
- Microprocessor design and verification
in the multi-core era : pre and post-silicon verification challenges
- A survey of libraries, languages, APIs, and environments
(Cilk, Erlang, Titanium, X10, Microsoft's
Concurrency Coordinated Runtime CCR,
MPI, OpenMP, Intel TBB)
- Studying
position papers of experts
presented in the EC2 workshop
of 2008 (the second
workshop in the EC2 series will be held in June 2009).
- Basics of Thread and Message Passing Programming:
-
-
Writing thread and MPI programs.
- Debugging thread and MPI programs through dynamic analysis.
Hands-on experience on the use of three state-of-the-art tools:
- Lectures from our Textbook:
-
Studying the text ``The Art of Multiprocessor Programming''
-
foundations of concurrent objects,
shared memory models, universal constructions
- locks, synchronization, concurrent queues,
barriers, priority queues, work-stealing,
coordination
- We will explore the use of tools to understand these
ideas better.
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
-
active participation, and
- showing substantial improvement in your own abilities in this area (compared
to your abilities coming into this class)
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.