CS 179 GPU programming

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 will cover 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 will cover performance optimization and specific GPU applications such as numerical mathematics, medical imaging, finance, and other fields.

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.

Week 1 (Introduction)

Lecture 1 (Mon. 04/01): PPT PDF

Lecture 2 (Wed. 04/03): PPT PDF

Lecture 3 (Fri. 04/05): PPT PDF

Week 2 (Shared Memory)

Lecture 4 (Mon. 04/08): PPT PDF

Lecture 5 (Wed. 04/10): PPT PDF

Lecture 6 (Fri. 04/12): PPT PDF

Week 3 (Reductions, FFT)

Lecture 7 (Mon. 04/15): PPT PDF

Lecture 8 (Wed. 04/17): PPT PDF

Lecture 9 (Fri. 04/19): PPT PDF

Week 4 (cuBLAS and Graphics)

Lecture 10 (Mon. 04/22): PPT PDF [Google Doc][103]

Lecture 11 (Wed. 04/24): cuBLAS example

Lecture 12 (Fri. 04/26): PPT PDF

Week 5 (Machine Learning and cuDNN I)

Lecture 13 (Mon. 04/29): PPT PDF

Lecture 14 (Wed. 05/01): PPT PDF

Lecture 15 (Fri. 05/03): PPT PDF

Week 6 (Machine Learning and cuDNN II)

Lecture 16 (Mon. 05/06): PPT PDF

Lecture 17 (Wed. 05/08): PPT PDF