CIS 565 GPU Programming and Architecture
Fall 2021
Click here to see 2021 Final Projects
Course Description
A timeline section from the following topics:
- GPU Computing: GPU architecture, massively parallel programming, parallel algorithms, performance.
- Rendering: Graphics pipeline (rasterization), path tracing, deferred shading, forward+ rendering, VR.
- APIs: CUDA, WebGL, RTX, Vulkan.
This is a project-intensive course with significant coding, writing, and presenting. It is more work than any other course, but it is worth it.
For a course more focused on GPU architecture without graphics, see Joe Devietti’s CIS 601 (no longer offered at Penn).
If you have registered as a student for the course, or plan to, please complete this required survey: CIS 565 Fall 2021 Student Survey.
Prerequisites
- Passion for computer graphics.
- At least one of:
- CIS 460/560: Introduction to Computer Graphics.
- CIS 461/561: Advance Rendering
- Preferably received an A. Knowledge of rasterization and ray tracing.
- Strong C or C++.
- Also useful:
Github, Schedule, Class Forum, and LinkedIn
- Github: fork your repos from here
- Piazza: Class forum
- LinkedIn Group: for networking with current and previous course students
Lecturer
Shehzan Mohammed mza@seas.upenn.edu
Office Hours:
- Monday and Wednesday: 4:30pm - 5:15pm, + 30 minutes after end of class (Towne 337)
- Sunday: 10:00am - 11:00am (Zoom)
Changes to office hour schedule will be made on the CIS 565 Calendar and notified through Piazza.
Teaching Assistants
Janine Liu jliu99@seas.upenn.edu
Office Hours:
- Tuesday and Thursday: 12:00pm - 1:00pm
- Saturday: 10:00am - 11:00am (Zoom)
Liam Dugan ldugan@seas.upenn.edu
Office Hours:
- Tuesday and Thursday: 5:00pm - 6:30pm (Moore 103 (SIG Lab))
Changes to office hour schedule will be made on the CIS 565 Calendar and notified through Piazza.
Course Advisor
Patrick Cozzi
Recommended Reading
- Moving Graphics Research into Development, Patrick Cozzi
- How to Make an Attractive GitHub Repository, Patrick Cozzi
No books are required, but course material comes from many sources including:
- Programming Massively Parallel Processors, Third Edition, 2016, David Kirk and Wen-mei Hwu.
- Real-Time Rendering, Fourth Edition, 2018, Tomas Akenine-Möller, Eric Haines, Naty Hoffman, Angelo Pesce, Michał Iwanicki, and Sébastien Hillaire.
- Ray Tracing Gems, First Edition, 2019, Eric Haines and Tomas Akenine-Möller. (Free PDF distributed under CC 4.0 License)
Other useful tools and material:
- Ray Tracing in One Weekend (Free PDF + Github)
- NVIDIA GTC On-Demand
- NVIDIA GDC 2019 Courses (Mostly Real Time Ray Tracing)
- Machine Learning by Andrew Ng (Coursera free)
- Deep Learning Book (Free to read in HTML)
- CUDA Programming Guide
- All previous CIS 565 (https://cis565-fall-201X.github.io)
Grading
- Projects: 50%
- Final Project: 50%
Academic Integrity
An academic integrity violation will result in the student receiving an F in this course.
See Academic Integrity at the University of Pennsylvania: A Guide for Students.
Code submissions will be cross-checked for plaigarism against previous years’ submissions as well as submissions from your colleagues using automated software. Please do not copy code.
If you would like to use code not written by you for this class, please run it by the TAs using Piazza for permission to use it. Examples of code you will need to ask permission to use:
- Public Github Repositories and other open source projects.
- Projects from other classes that will give you a non-trivial advantage for the project.
If you think you need to ask permission, you should ask. We will most likely approve all reasonable requests.
Penn Engineering COVID-19 Impact and Announcements
Please visit the COVID-19 for information on Penn Engineering’s announcements and information about COVID-19 impact and procedures.
COVID Protocols for CIS 565
- Classrooms will be operating under normal, pre-COVID capacity during the Fall 2021 term.
- CIS 565 will be in person and lecture recordings will be made available within 24 hours after the lecture.
- In accordance with University policy, students are required wear a face mask in the classroom and to all in-person office hours. Students who do not wear a mask in class may be required to leave the classroom.
- As a consequence of this requirement, please keep eating and drinking within the classroom to a minimum.
- If a student (or staff) tests positive at any point during the semester, and there is probable risk of spread, a portion of the students, if not the entire class may be moved online-only temporarily. You will be notified through Piazza.
Acknowledgments
Joe Kider, Gary Katz, and Suresh Venkatasubramanian taught this course before me.
All former TAs have helped shape this course:
Hannah Bollar | Youssef Victor | Ziad Ben Hadj-Alouane |
Ottavio Hartman | Yash Vardhan | Austin Eng |
Kaixiang Miao | Shuai Shao (Shrek) | Gary Li |
Kai Ninomiya | Harmony Li | Liam Boone |
Karl Li | Varun Sampath | Jon McCaffrey |
Previous students have provided significant course feedback including:
Many passionate folks in our field have also provided course input:
- Eric Haines, (@pointinpolygon)
- Christophe Riccio, (@g_truc)
- Johan Andersson, (@repi)
- Quarup Barreirinhas, (@quarup)
- Wolfgang Engel, (@wolfgangengel)
- Mikkel Gjoel, (@pixelmager)
- Dominik Lazarek, (@Omme)
- Emil Persson, (@_Humus_)
- Sebastien Vandenberghe (@sebavanmicrosof)
- Chrome GPU Team, which includes many former CIS 565 Alumni.