Parallel Computer Architecture and Programming, Fall 2017

General Course Information

Instructor:  Gennady Pekhimenko
Email:  pekhimenko at cs dot toronto dot edu
Lectures:  Fri., 2pm-4pm, Bahen Centre, BA 5205
Teaching Assistant:  Hongyu Zhu, serailhydra at gmail dot com
Webpage:  http://www.cs.toronto.edu/~pekhimenko/courses/csc2231-f17/
Discussion:  http://piazza.com/utoronto.ca/fall2017/csc2231/home
Syllabus:  Syllabus [PDF]

Course Description

The goal of this course is to build a strong understanding of the fundamentals of the architecture of parallel computers and efficient programming for them. We will examine how architectures are designed to exploit and extract different types of parallelism. The focus will be on fundamentals, tradeoffs in parallel architecture design, and cutting-edge research. Architectures studied may include parallel microprocessors, GPUs and FPGAs.

Prerequisites

This course is not intended to be your first computer architecture course: it is geared toward students who have already had such a course (or some equivalent) as undergraduates. If you have never taken a computer architecture course before (or at least a Computer Organization class), it is still possible to take this course provided that you are willing to spend some additional time catching up on your own. It will also be helpful if you have some familiarity with the features of modern processor architectures (e.g., the memory hierarchy, pipelining, SMT, and vector instructions). If you feel uncertain about whether you are adequately prepared to take this class, please discuss this with the instructor.

Course Work and Grading

Item Description
Project (50%) A major focus of this course is the project. We prefer that you work in groups of two on the project, although groups of up to three may be permitted depending on the scale of project (ask the instructor for permission before forming a group of three). The project is intended to be a scaled-down version of a real research project. The project must involve an experimental component–i.e. it is not simply a paper and pencil exercise. We encourage you to come up with your own topic for your project, although we will be posting suggested projects to the class web page at a future date. You will have time until Dec. 10 to work on the project. You will present your findings in a written report (the collected reports may be published as a technical report at the end of the semester), and also during a poster/presentation session during the last day of class. Start thinking about potential project ideas soon!
Paper Reviews (20%) The intent of the research paper reviews is to familiarize you with the process of reviewing manuscripts. For those papers that you are not presenting yourself, you will assume the role of conference reviewer, and write a short (3-4 paragraph) critical review of the paper. Briefly summarize the paper in the first paragraph. In the latter paragraphs, provide paper strengths and weaknesses, what you like and dislike in the paper, your critical thoughts on how to potentially improve the work.
Paper Presentation (20%) Every student will present one paper related to its project topic. The intent is to teach student to read, analyze, summarize, and properly present other people’s research in their area of interest. The length of the presentation depends on the size of the class.
Class Participation (10%) In general, we would like everyone to do their part to make this an enjoyable interactive experience (one-way communication is no fun). Hence in addition to attending class, we would like you to actively participate by asking questions, joining in our discussions, etc. Some classes are set aside entirely for studentled in-class discussions on active areas of research and innovation in computer architecture and parallel programming. All students are expected to lead one of these discussions.

Major Milestones

Project Proposal (1–2 pages):  Oct. 1st
Progress Report (2–3 pages):  Nov. 3rd
Poster Presentation:  Dec. 8th
Project Report (6–8 pages):  Dec. 10th