The use of Graphics Processing Units for rendering is well known, but their power for general parallel computation has only recently been explored. Parallel algorithms running on GPUs can often achieve up to 100x speedup over similar CPU algorithms, with many existing applications for physics simulations, signal processing, financial modeling, neural networks, and countless other fields.
This course covers programming techniques for the GPU. The course will introduce NVIDIA's parallel computing language, CUDA. Beyond covering the CUDA programming model and syntax, the course will also discuss GPU architecture, high performance computing on GPUs, parallel algorithms, CUDA libraries, and applications of GPU computing.
.
This quarter we will also cover some uses of the GPU in Machine Learning.
.
Note 1: Students whose work is below the passing line are STRONGLY encouraged to DROP the course before Drop Day. A sufficient amount of graded "good work" before Drop Day is a requirement for passing the course! There are no "E" grades planned. Please see the Deans EARLY, if extenuating circumstances are developing for you, which can provide more leeway.
.
Note 2: This course, CS179, is one of two main CMS courses eligible for the undergraduate CMS CS major within the Computer Graphics track, where three courses are required to create a sequence. The second main course is CS171, Computer Graphics Lab, generally offered in the Fall. The third course to complete the courses for the undergraduate CS sequence can be a computer-graphics oriented CS81 Project or CS90 Reading course, set up with Prof. Barr sometime during the school year, where Winter Quarter may be the most convenient.
Head TA: Sam Foxman (sfoxman@caltech.edu)
Professor: Al Barr (barr@caltech.edu)
TA: Alem Snyder (asnyder@caltech.edu")
TA: Aditi Chandrashekar (ajchandr@caltech.edu)
TA: Jayden Nyamiaka (jnyamiak@caltech.edu)
TA: Miles Gee (mgee2@caltech.edu)
The course time and place is Annenberg 105 MW(F) 3:00 - 3:55PM PDT
There may be additional resources for the course on Canvas.
See CS179 2025 Syllabus for the course Syllabus.
A Piazza link has been set up, CS179 Piazza, 2025. Piazza will be the main forum for discussion, so it is important to make sure you are enrolled there!
If some of the office hours take place by Zoom, the Zoom links will be posted on Piazza. Office hours will be listed in the office_hours folder on Piazza
You will be submitting your assignments on a GPU-enabled remote computer located at Caltech in the Barr lab.
Important! Instead of using Canvas, or emailing your lab solution to a TA email like some assignments may accidentally ask, please put a zip file of your solution in your home directory on the remote Barr-lab computer, with the name lab[N]_2025_submission.zip .
See Piazza for more details!
The remote computer accounts will soon be set up and you will soon receive an email. Please test your accounts, and let us know if there is trouble!
Useful to consult! CUDA Programming Guide
Also perhaps? Programming Massively Parallel Processors (3rd Edition) is recommended but not required.
Amazon Link.
We will post links on Piazza for Office hours with the TAs. A list of these should be found in the office_hours folder on Piazza.
See Piazza for more details! Oops, some of the HW assignments may internally list an out-of-date submission method or an incorrect due date! The six HW deadlines are the six sequential Wednesdays starting 3pm starting April 9, as listed above. Again note that the Project Proposal is due alongside Lab 5 part 1.
Here is the grading scheme for the class:
Homework extensions may be granted if the TAs see it as appropriate.
Mainly ask the head TA for extensions, not Prof. Barr!
E grades for the course will not be granted except under extreme circumstances.
Please contact the Deans when there are unusual or difficult circumstances, since the Deans can give us more leeway than usual, if they feel your circumstance warrants it.
Note! Again, to pass the course, a "sufficient"
number of "good" assignments will need to be submitted
and graded before Drop Day!!! That's Wednesday May 21,
2025. If you're behind or not doing well, please drop the
course before Drop Day!! We may send out a "scary note" in
email near that time, to students who may be in trouble of
not passing, and might need to drop. There are no "E"
grades intended. Also if you're having unusual issues
causing problems, please consult with the Deans for help,
where additional flexibility may become available.
Slides below are from last year, will be updated shortly...
You will be given about four weeks to design and implement a GPU-coded project of your choice, working alone or in pairs. The project must be approved by a TA, where team projects need a more substantially-sized project.
Items should be turned in no later than 11:59 PM Pacific on the day listed:
Submit your proposal as a PDF file via email to sfoxman@caltech.edu with the subject line "CS179 Project Proposal". For group projects, only one group member should send the email and CC all other group members.
Required as proof-of-concept/baseline before GPU implementation. Should include:
Submit all code (CPU and GPU) with a comprehensive README including:
Note: Extensions cannot be granted for final project due dates due to Registrar grade submission deadlines.
There is a Caltech computer to remotely log into, in the Barr lab in Annenberg, where you should already have the computer name, an account and remote access to it.
For installing CUDA onto your own computer, you could also consider this Guide
To do the full partition backup, a suggested cloning tool is
Clonezilla,
where you can use these
Clonezilla instructions as a reminder.
An excellent USB "burning" tool (for making a Clonezilla drive or the CUDA boot drive) is Rufus, although it
requires a Windows environment to run it.
Other cloning and burning tools are acceptable, if you have your own favorites, such as Balena Etcher. See https://etcher.balena.io/
Finally, use this code to retrieve your hardware info after you setup CUDA.