General Information
This course is an introduction to performance tuning and parallelization.
Prerequisites
This course requires moderate competency in C. Some prior exposure to systems programming from courses like CS 3410 - Computer System Organization and Programming or CS 4410 - Operating Systems is very helpful but not required.
Topics Covered
- Single-Processor Architecture
- Caches
- Serial Performance Tuning
- Parallel Machine Organization
- OpenMP
- MPI
- Data Partitioning
- Dense/Sparse Linear Algebra
- Load Balancing
- GPU Programming
- Different Parallel Numeric Algorithms
Workload
This class has around 4/5 homeworks, and 4 projects, including a main final project. The first 3 projects can be done in groups of 2, while the final project can be done in teams of up to 4. The homeworks take very little time. The projects are pretty open ended, and can become a time sink, but they are graded fairly leniently, and you are given a lot of time to complete each of them.
General Advice
- Start early on the projects.
- Read the suggested notes for each project. They help clear up what to do.
- Try not to get caught up too much on tuning small aspects of your code.
- Speak with the professor for ideas for the final project if you can’t think of any.
Testimonials
(Fall 2017) This class has interesting materials and is fairly relaxed, but it be confusing to follow the material, especially toward the end of the course. It is pretty easy to fall behind in this course, since there are so few projects and the homeworks are pretty trivial, so there isn’t a lot of incentive to stay up to date on the lectures. What you get out of this course depends on how much time you are willing to put in to learn the material.
Past Offerings
Semester | Time | Professor | Median Grade | Course Page |
---|---|---|---|---|
Fall 2017 | TR 8:40 - 9:55 AM | David Bindel | - | http://www.cs.cornell.edu/courses/cs5220/2017fa/ |
Fall 2015 | TR 8:40 - 9:55 AM | David Bindel | - | http://cornell-cs5220-f15.github.io/ |