UW-Madison
Computer Sciences Dept.

CS 758 Advanced Topics in Computer Architecture

Programming Current and Future Multicore Processors

Fall 2009 Section 1
Instructor David A. Wood and T. A. Matthew D. Allen
URL: http://www.cs.wisc.edu/~david/courses/cs758/Fall2009/

The Problem

Multicore processors are here! Intel is shipping their quad-core 8-thread Nehalem processors, AMD is shipping their six-core Istanbul processors, and Sun is shipping the 8-core, 64-thread Niagara-2 processors. Furthermore, Ambric, Azul, Intel, and Tilera have chips with 48 to 336 cores either shipping or in the works. The rapid emergence of multicore processors is transforming the raw computing power of the desktop, server and cloud.

But how does one program these machines? Few people have any real experience programming multiprocessor systems. Furthermore, shared-memory parallel programming is a "known hard problem," due to deadlocks, data races, prioity inversions, etc. Are there new programming languages, models, and/or libraries that can make this easier? Is transactional memory the silver bullet that will make parallel programming easy? What do application programmers need (that computer architects can provide) to make parallel programming easier?

  AMD Istanbul chip

In this course, we will work together to explore these questions. During the first half of the semester, we will study and write programs for both current and proposed future machines. Homework will include writing programs using P-threads, OpenMP, Cilk++, Serialization Sets and TBB on dual quad-core Intel Nehalem servers and Transactional Memory on a prototype hardware system from Sun. For the second half of the semester, students will work in small groups to parallelize larger applications targeting future multi-core chips.

The Students

My goal is to bring together a diverse group of students who are interested in learning about and perhaps advancing the state-of-the-art in programming multicore processors. Prospective students should have ONE of the following:

  • Substantial programming experience,
  • At least one 700-level course in either architecture, programming languages, or operating systems,
  • Instructor's consent.
Note that the official prerequisites for 758 (i.e., 752 and 758) are not required.

When and Where

    Monday, Wednesdays, and Fridays, 1:00pm--2:15pm
    (Course is overloaded and will meet on average twice per week)
    1325 Computer Sciences and Statistics

 
Computer Sciences | UW Home