|Course||B649—Parallel Architectures and Programming (Topics in Computer Architecture)|
|Times||Mon & Wed, 2:30 PM-3:45 PM|
|Office Hours||By appointment|
|Textbook||Computer Architecture: A Quantitative Approach (fourth edition), by John L. Hennessy and David A. Pattterson|
In 1997, IEEE Computer Society published a special issue on what could be achieved with 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 is now a reality. A symmetric multi-core architecture is just one of the uses for 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? 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 be run as a seminar, covering modern computer architectures, including multi-cores and GPUs. About half A few of the lectures will be guest lectures by Profs Geoffrey Brown, Andrew Lumsdaine, and Randall Bramley. 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 (Fourth Edition)) and published technical papers and / or other supplementary material (to be decided).
- A basic understanding of the architecture of modern machines;
- Programming and compiler challenges thrown by the modern architectures;
- Techniques currently being used, and researched, to efficiently and effectively program modern machines.
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 3-4 assignments and one final project. There will be no exams. Apart from the assignments and project, the evaluation will be based on class presentation, class participation, and answers to semi-open-ended questions that will be posed in class from time to time to be researched and answered on a course blog.