|
CS 179 Annenberg 105, MW(F) 3-3:55pm
HW Due Dates for 2024 The six homework sets are due Wednesdays, 3 pm, with the following due dates, to be uploaded onto a computer in the Barr lab.
Most office hours will be live, TBA, but some will also on Zoom, every week. Times are in Pacific Time, TBA. For some of the office hours with the TAs, we will use Zoom, which allows screen sharing and real-time discussion. The Zoom meeting links for the TA office hours will be posted on Piazza, but also sometimes can be "clicked" on, on the Canvas Calendar. See Piazza for details. The TA Office hours take place:
For the later part of the course, we may be transitioning to "appointment-style" office hours for your projects for quick questions with the TAs, approximately mid May, since the homework assignments would mainly be finished then. At that point, email a TA ahead of time to confirm, but they can likely be available at other times too, for quick questions to help you with your project, if you can set up a Zoom time with them in email.
|
Course Time and Place: | The course time and place is Annenberg 105 MW(F) 3:00 - 3:55PM PDT |
Announcements: | There may be additional resources for the
course on Canvas.
See CS179 2024 Syllabus for the course Syllabus. A Piazza link has been set up, CS179 Piazza, 2024. 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. 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]_2024_submission.zip . See Piazza for more details! The remote computer accounts have been set up. You will soon receive an email. Please test your accounts, and let us know if there is trouble!
|
Course Description: |
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. Problem sets cover performance optimization and a few specific example GPU applications such as numerical mathematics, medical imaging, finance, and other fields, ending with a 4-week project of the student's choice. This quarter we will also cover uses of the GPU in Machine Learning. Labwork will require significant programming. A working knowledge of the C programming language will be necessary. Although CS 24 is not a prerequisite, it (or equivalent systems programming experience) is strongly recommended. 9 units; third term. |
Teaching Assistants: |
Julian Peres jbperes@caltech.edu (Head TA) Agnim Agarwal aagarwal@caltech.edu Sam Foxman sfoxman@caltech.edu Jake Goldman jgoldman@caltech.edu Khanh Pham kcpham@caltech.edu Others, TBD?
TA Zoom or other Office Hour times will be listed soon, on Piazza.
|
Supervising Professor: | Professor
Al Barr - barr@caltech.edu |
Programming Guide and Textbook: | Useful to consult!
CUDA Programming Guide Also perhaps? Programming Massively Parallel Processors (3rd Edition) is recommended but not required. Amazon Link. |
Office Hours: | We will post links on Piazza for Office hours with the TAs. |
Piazza and HW Submission: |
|
Grading policy: | 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.
|
"Lectures" Online: |
Week 1 (Introduction), MW(F) 3pm PDT Lecture 1 PPT PDF Lecture 2 PPT PDF Lecture 3, Recitation (Fri. 04/02): PPT PDF Week 2 (Shared Memory), MW(F) 3pm PDT Lecture 4 (Mon. 04/05): PPT PDF Lecture 5 (Wed. 04/07): PPT PDF Lecture 6 Recitation (Fri. 04/09): PPT PDF Week 3 (Reductions, FFT) MW(F) 3pm PDT Lecture 7 (Mon. 04/12): PPT PDF Lecture 8 (Wed. 04/14): PPT PDF Lecture 9 (Fri. 04/16): PPT PDF Week 4 (cuBLAS and Graphics) MW(F) 3pm PDT Lecture 10 (Mon. 04/19): PPT PDF Google Doc Lecture 11 (Wed. 04/21): cpp Text a Annotated cuBLAS example, also Bunny Point Alignment Derivation, PDF Lecture 12 (Fri. 04/23): PPT PDF Recitation, cuBLAS, cuSolver, and Point Alignment Week 5 (Machine Learning and cuDNN I) MW(F) 3pm PDT Lecture 13 (Mon. 04/26): PPT PDF Lecture 14 (Wed. 04/28): PPT PDF Lecture 15 (Fri. 04/30): PPT PDF Week 6 (Machine Learning and cuDNN II) MW(F) 3pm PDT Lecture 16 (Mon. 05/03): PPT PDF Lecture 17 (Wed. 05/05): PPT PDF Lecture 18 (Fri. 05/07): PPT PDF Week 7 (Projects) MW(F) no class. Zoom or other office hours. Week 8 (Projects) MW(F) no class. Zoom or other office hours. Week 9 (Projects) MW(F) no class. Zoom or other office hours. Week 10 (Projects) MW(F) no class. Zoom or other office hours. |
Assignments: |
|
Project |
PROJECT INFO (For 2024) |
CUDA Installation | 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
(In 2019) DANGER! Especially for older non-Windows machines, make
a Clone of the whole computer system before attempting installation!
Using the Barr machine in Annenberg will be a safer option. FYI, Ubuntu 20.04 came out, and the installation process for CUDA is a lot easier and safer, than on older Unix systems. We will try to create an instruction sheet, on how to do this.
To do the full partition backup, a suggested cloning tool is
Clonezilla,
where you can use these
Clonezilla instructions as a reminder. Other cloning and burning tools are acceptable, if you have your own favorites.
Finally, use this code to retrieve your hardware info after you setup CUDA. |
Resources: |
CUDA C Programming Guide List of NVIDIA GPUs Mapping from GPU name to Compute Capability |
Material from previous year(s): |
2015 2016 2017 2018 2019 |
Less useful, but cool resources: |
NVIDIA's Parallel Forall Blog Videos from last several years of NVIDIA's conference on CUDA How to Write Code the Compiler Can Actually Optimize (2015) Excellent CPU optimization manuals What Every Programmer Should Know About Memory GPU focused systems guide to deep learning |