|Course||B649—Parallel Architectures and Programming (Topics in Systems)|
|Location||LH 008 (Lindley Hall)|
|Times||Mon & Wed, 2:30-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? 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 (Fourth 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. 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.