Parallel Programming for Multicore

Electrical Engineering and Computer Sciences Department
University of California, Berkeley



Course goals: The introduction of multicore chips into the computing market has created a revolution in the software industry. To benefit from increases in hardware performance, software must be parallel. The purpose of this course is to teach the next generation of programmers to develop exciting new applications that can take advantage of on-chip parallelism. Over the past two years, every major microprocessor manufacturer has introduced processor chips with multiple cores, with dual and quad core processors for desktop and laptops, and over a hundred cores available in some Graphics Processing Units. The expectation is that the number of cores per chip will roughly double every two years while processor clock speeds will remain relatively flat. This makes parallel programming a concern for the entire computing industry. This course will provide an introduction to parallel programming with a focus on the techniques that are most appropriate for multicore architectures and the use of parallelism to improve program performance. The topics of the course include performance analysis and tuning, data and task parallelism, synchronization techniques, shared data structures, and load balancing. The course will be a hands-on project course, with 4-5 programming projects, including a final project selected by the student.

Course Work and Grading

There will be a series of homework assignments that include parallel programming that will constitute 30% of your grade. Two quizzes will make up 15% each, and the final project in the course will be worth 40%. The quizzes will cover material presented in lecture. There will not be a final exam for the course.

Course Staff

Instructor
Professor Kathy Yelick
Office hours: Wednesday 12-1pm in 777 Soda Hall or by appointment
Email: yelick AT cs

Head Teaching Assistants
Mark Hoemmen (Head TA)
Office hours: Monday 12-1pm in 651 Soda (Alcove) or by appointment
Email: mhoemmen AT eecs

Brian Kazian
Office hours: Friday 12-1pm in 751 Soda or by appointment
Email: bkazian AT eecs



Lectures

Lectures are Monday and Wednesday 10:30-12:00 in 310 Soda Hall. Discussion section is Friday 10:30-12:00 in 405 Soda Hall.
Cell Processor (ppt, pdf) (ppt, pdf)
Date # Topic Reading
Mon, 27-Aug 1 The Multicore Revolution (ppt, pdf) Notes, Berkeley View (Sec 1-2)
Wed, 29-Aug 2 Creating parallelism (ppt, pdf) Thread Tutorial (sec 1-5)
Fri, 31-Aug HW 0 due (logging in and running code)
Mon, 3-Sep Holiday
Wed, 5-Sep 3 Memory Hierarchies (ppt, pdf)
Mon, 10-Sep 4 Memory Optimizations (matrix multiply) (ppt, pdf)
Tue, 11-Sep HW 1 due (monte carlo finance)
Wed, 12-Sep 5 Shared Memory (ppt, pdf)
Fri, 14-Sep 6 Synchronization (ppt, pdf)
Mon, 17-Sep Discussion
Tue, 18-Sep HW 2a due (matmul)
Wed, 19-Sep 7 Decomposition and Locality (ppt, pdf)
Fri, 24-Sep 8 Data parallelism (ppt, pdf) ZPL Language
Mon, 24-Sep 9 CUDA (guest: David Kirk) UIUC course CUDA guides
Tue, 25-Sep HW 2b due (matmul)
Tue, 25-Sep ParLab seminar 3-4:30 in Woz by David Kirk
Wed, 26-Sep Discussion
Fri, 28-Sep 10 Tricks with Trees (ppt, pdf) NESL Language
Mon, 1-Oct 10 Load balancing (ppt, pdf)
Tue, 2-Oct HW 3a due (Life)
Wed, 3-Oct 11 Load balancing (ppt, pdf)
Mon, 8-Oct 12 Cilk (ppt, pdf)
Tue, 9-Oct HW 3b due (Life)
Wed, 10-Oct Discussion
Fri, 12-Oct 13
Mon, 15-Oct 14 Cluster Hardware (ppt, pdf)
Wed, 17-Oct Quiz 1
Fri, 19-Oct Project proposal due
Mon, 22-Oct 15 UPC Language (ppt, pdf)
Tue, 23-Oct HW 4 due (game trees)
Wed, 24-Oct 16 Titanium Language (ppt, pdf)
Mon, 29-Oct 17 Heart Simulation (pdf)
Wed, 31-Oct 18 Reasoning about Concurrency (pdf)
Mon, 5-Nov 19 Reasoning about Objects (pdf)
Wed, 7-Nov 20 Reasoning (pdf)
Wed, 14-Nov No lecture (individual meetings as needed)
Fri, 16-Nov 21 Memory Consistency
Mon, 19-Nov 22 Prelim Project Reports
Wed, 21-Nov 23 Prelim Project Reports
Mon, 26-Nov 24 Prelim Project Reports10am-1pm
Wed, 28-Nov 25 Synthesizing Lock-Free Code (guest lecture)
Mon, 3-Dec 26 How to ... (ppt, pdf)
Wed, 5-Dec No lecture (work on projects)
Mon, 10-Dec 28 Final project poster session (10am - 1pm)