|Course||B649—Parallel Architectures and Programming (Topics in Systems)|
|Credits||3 (Students may request P-credits)|
|Location||LH 008 (Lindley Hall)|
|Times||Mon & Wed, 8:00-9:15 AM|
|Office Hours||By appointment|
|Textbook||Computer Architecture: A Quantitative Approach (fifth edition), by John L. Hennessy and David A. Pattterson|
In 1997, the IEEE Computer Society published several articles on its theme feature of a billion transistors on a single chip. Leading computer architects proposed seven different ideas. A subsequently published article in 2004 noted that none of those architectures has become mainstream. Such is the nature of research! However, a billion transistors on a chip—indeed, several billions on a chip—is now a reality. A symmetric multi-core architecture is just one of the uses for the billions of transistors on a chip. What other possibilities are there? Do these entail entirely novel ways of programming them? What are the consequences for application programmers? For compilers? What are the implications for the challenge of energy-efficient “exa-scale” computing? This course will attempt to answer these questions by drawing on experts in the fields of architecture, parallel programming, high-performance applications, and compilers.
About the course
The course will cover modern computer architectures, including multi-cores and GPUs. There might be a few guest lectures. The rest will be divided between the instructor and student presentations. The course content will be based on a textbook (Computer Architecture, A Quantitative Approach (Fifth Edition)) and published technical papers and / or other supplementary material (to be decided).
- Provide a basic understanding of the architecture of modern machines;
- Study programming and compiler challenges thrown by the modern architectures;
- Discuss techniques currently being used, and researched, to efficiently and effectively program modern machines.
An important pedagogical goal of the course is to expose students to research methods in computer science through carefully selected course projects that would be designed to be extensible to become publishable research.
A substantial knowledge of computer architecture is not assumed, although a fundamental understanding of digital hardware and computer architecture is expected. Experience with system-level programming will help. Familiarity with Unix / Linux is highly recommended.
The course will involve 2-3 assignments and one course project. Each course project will be designed to be expandable into a publishable research project. Each project will culminate in a project presentation in class and a formal technical report. In addition, there will be one midterm exam, one final exam, and several unannounced quizzes.