Course Description

Course objectives: To obtain the high level of end-to-end performance needed in problem domains like graphics, computer games, and scientific computing, it is necessary for programs to exploit many of the features of modern computer architectures.  In this course, we will study the performance-critical features of modern computer architectures, and discuss how applications can take advantage of them to obtain high performance.  This is not a course on software tricks; rather, the emphasis is on abstractions of computer architecture, understanding performance, and obtaining performance when you need it.

This semester, CS377P will be co-taught by a team from Intel: Jackson Marusarz, Areg Melik-Adamyan, Gergana Slavova, and Mike Voss. They will present lectures on Intel's performance tools like VTune and Advisor, and teach students how these tools can be used to analyze and improve program performance. Course assignments will require the use of these tools.

Topics covered in lecture include the following:

  1. Parallelism and locality in algorithms
  2. Measurement of performance
  3. Memory hierarchies and locality exploitation
  4. Vector processing and vectorization
  5. Multi-core processors and shared-memory programming, pThreads, OpenMP, Intel TBB
  6. Distributed-memory machines and message-passing programming, MPI
  7. GPUs and GPU programming
  8. Performance  analysis tools: Intel VTune and Advisor

Prerequisites: programming maturity, knowledge of C/C++, basic course on modern computer architecture

Course work: There will be 6-7 substantial programming assignments (60% of grade), a mid-semester exam (15% of grade) and a final exam (25% of grade).

Discussion and assignment: You need to use Canvas and Piazza for discussion and submitting assignments.


Links:
Lecture slides and notes

Assignments

Basic material on computer architecture:
Book: "Computer Architecture: A Quantitative Approach"  by Hennessy & Patterson, Morgan Kaufmann Publishers.

Academic honesty policy

You may discuss concepts with classmates, but all written work and programming assignments must be your own or your project team's work when teamwork is permitted. You may not search online for existing implementations of algorithms related to the programming assignments, even as a reference. Students caught cheating will automatically fail the course and will be reported to the university. If in doubt about the ethics of any particular action, talk to the instructor or the TA .

Notice about students with disabilities

The University of Texas at Austin provides upon request appropriate academic accommodations for qualified students with disabilities. For more information, contact the Division of Diversity and Community Engagement — Services for Students with Disabilities at 512-471-6529.