Skip Ribbon Commands
Skip to main content
Navigate Up
Sign In

Markus Hadwiger

:

CS 380 - GPU and GPGPU Programming

Mathematical and Computer Sciences and Engineering
 

 CS 380 - GPU and GPGPU Programming

 

This course covers the architecture and programming of GPUs (Graphics Processing Units). It covers both the traditional use for rendering graphics, as well as the use of GPUs for general purpose computations (GPGPU), or GPU Computing.

Synopsis:

CS 380. GPU and GPGPU Programming (3-0-3) Recommended prerequisites: CS 248, CS 292, CS 282. Architecture and programming of GPUs (Graphics Processing Units). Covers both the traditional use of GPUs for graphics and visualization, as well as their use for general purpose computations (GPGPU). GPU many-core hardware architectures, shading and compute programming languages and APIs, programming vertex, geometry, and fragment shaders, programming with CUDA, Brook, OpenCL, stream computing, approaches to massively parallel computations, memory subsystems and caches, rasterization, texture mapping, linear algebra computations, alternative and future architectures.

Hours & Location:

Sunday, 13:00 - 14:30, Building 9, Room 4137.
Wednesday, 13:00 - 14:30, Building 9, Room 4137.

Instructor:

Prof. Markus Hadwiger

Contact:

Markus Hadwiger
markus.hadwiger (at) kaust.edu.sa
Building 1, level 2, room 2119.

Peter Rautek (main contact programming assignments)
peter.rautek (at) kaust.edu.sa
Building 1, level 2, room 2120.

Christopher Moore (help with programming questions)
christopher.moore (at) kaust.edu.sa
Building 1, level 2, room 2101 (lab area in the center).

​Textbooks:

We are using the OpenGL 4 Shading Language Cookbook, for the graphics part of the class,
and the Programming Massively Parallel Processors book for the GPGPU part.

Shading Language Cookbook CUDA book

 

 Syllabus and Slides

 
The slides for fall 2017 will be available here after each lecture.

To get an overview of the lecture, you can also look at the slides from previous semesters below.

Programming assignments

Bitbucket git repository for the programming assignments.

Slides (fall 2017)

Slides of lecture 1, Aug 21, 2017: Introduction.
Slides of lecture 2, Aug 24, 2017: Introduction, Pt. 2.
Slides of lecture 3, Aug 28, 2017: GPU Architecture 1.
Slides of lecture 4, Sep 10, 2017: GPU Architecture 2.
Slides of lecture 5, Sep 13, 2017: GPU Architecture 3.
Slides of lecture 6, Sep 17, 2017: GPU Architecture 4.
Slides of lecture 7, Sep 20, 2017: GPU Architecture 5.
Slides of lecture 8, Sep 25, 2017: GPU Architecture 6.
Slides of lecture 9, Sep 27, 2017: GPU Architecture 7.
Slides of lecture 10, Oct 11, 2017: Compute APIs 1.
Slides of lecture 11, Oct 15, 2017: Compute APIs 2.
Slides of lecture 12, Oct 18, 2017: Compute APIs 3.
Slides of lecture 13, Oct 19, 2017: GPU Texturing 1.
Slides of lecture 14, Oct 25, 2017: GPU Texturing 2.
Slides of lecture 15, Oct 26, 2017: GPU Texturing 3.
Slides of lecture 16, Oct 29, 2017: GPU Texturing 4.
Slides of lecture 17, Nov 1, 2017: GPU Texturing 5 (Virtual Texturing).
Slides of lecture 18, Nov 8, 2017: Stream Computing and GPGPU.
Slides of lecture 19, Nov 12, 2017: CUDA Memory Access 1.
Slides of lecture 20, Nov 15, 2017: CUDA Memory Access 2.
Slides of lecture 21, Nov 20, 2017: CUDA Memory Access 3.
Slides of lecture 22, Nov 22, 2017: CUDA Memory Access 4.
Slides of lecture 23, Nov 26, 2017: Parallel Reduction.
Slides of lecture 24, Nov 29, 2017: Parallel Prefix Sum / Scan.
Slides of lecture 25, Dec 3, 2017: Additional Things, Pt.1: Shuffles, Atomics, Instruction Level Parallelism.
Slides of lecture 26, Dec 6, 2017: Additional Things, Pt.2: Cooperative Thread Groups.


Old slides from Spring 2015

Slides of lecture 1, Jan 26, 2015: Introduction.
Slides of lecture 2, Jan 29, 2015: GPU Architecture 1.
Slides of lecture 3, Feb 2, 2015: GPU Architecture 2.
Slides of lecture 4, Feb 5, 2015: GPU Architecture 3.
Slides of lecture 5, Feb 9, 2015: GPU Architecture 4.
Slides of lecture 6, Feb 12, 2015: GPU Architecture 5.
Slides of lecture 7, Feb 16, 2015: Shading and Compute APIs 1.
Slides of lecture 8, Feb 19, 2015: Shading and Compute APIs 2.
Slides of lecture 9, Feb 23, 2015: Shading and Compute APIs 3.
Slides of lecture 10, Feb 26, 2015: Shading and Compute APIs 4.
Slides of lecture 11, Mar 5, 2015: GPU Texturing 1.
Slides of lecture 12, Mar 9, 2015: GPU Texturing 2.
Slides of lecture 13, Mar 12, 2015: GPU Texturing 3.
Slides of lecture 14, Mar 16, 2015: GPU Texturing 4.
Slides of lecture 15, Mar 19, 2015: GPU Texturing 5.
Slides of lecture 16, Mar 23, 2015: GPU Texturing 6.
Slides of lecture 17, Mar 26, 2015: Stream Computing and GPGPU.
Slides of lecture 18, Mar 30, 2015: CUDA Memory Access 1.
Slides of lecture 19, Apr 13, 2015: CUDA Memory Access 2.
Slides of lecture 20, Apr 16, 2015: CUDA Memory Access 3.
Slides of lecture 21, Apr 20, 2015: CUDA Memory Access 4; GPU Reduction.
Slides of lecture 22, Apr 30, 2015: GPU Parallel Scan / Prefix Sum.
Slides of lecture 23, May 4, 2015: Sparse Matrix-Vector Ops (SpMV).
Slides of lecture 24, May 7, 2015: Additional Stuff, Part 1.
Slides of lecture 25, May 12, 2015: Additional Stuff, Part 2.


Old slides from Spring 2014

Slides of lecture 1, Feb 3, 2014: Introduction.
Slides of lecture 2, Feb 10, 2014: Introduction; GPU Architecture 1.
Slides of lecture 3, Feb 13, 2014: GPU Architecture 2.
Slides of lecture 4+5, Feb 19, 2014: GPU Architecture 3+4.
Slides of lecture 6+7, Feb 26, 2014: GPU Architecture 5+6.
Slides of lecture 8+9, Mar 5, 2014: GPU Architecture 7+8.
Slides of lecture 10+11, Mar 12, 2014: Shading and Compute APIs 1+2.
Slides of lecture 12+13, Mar 19, 2014: Shading and Compute APIs 3+4.
Slides of lecture 14+15, Mar 26, 2014: Shading and Compute APIs 5.
Slides of lecture 16+17, Apr 16, 2014: GPU Texturing 1.
Slides of lecture 18+19, Apr 23, 2014: GPU Texturing 2 + Streaming Computing and GPGPU.
Slides of lecture 20+21, May 6, 2014: CUDA Memory Access; GPU Reduction and Prefix Sum.


Old slides from Spring 2013

Slides of lecture 1, Feb 3, 2013: Introduction.
Slides of lecture 2, Feb 6, 2013: Introduction; GPU Architecture 1.
Slides of lecture 3, Feb 10, 2013: GPU Architecture 2.
Slides of lecture 4, Feb 14, 2013: GPU Architecture 3.
Slides of lecture 5, Feb 17, 2013: GPU Architecture 4.
Slides of lecture 6, Feb 20, 2013: GPU Architecture 5.
Slides of lecture 7, Feb 24, 2013: GPU Architecture 6; Shading and Compute APIs 1.
Slides of lecture 8, Feb 27, 2013: Shading and Compute APIs 2.
Slides of lecture 9, Mar 3, 2013: Shading and Compute APIs 3.
Slides of lecture 10, Mar 6, 2013: Shading and Compute APIs 4.
Slides of lecture 11, Mar 10, 2013: Shading and Compute APIs 5.
Slides of lecture 12, Mar 11, 2013: GPU Texturing 1.
Slides of lecture 13, Mar 12, 2013: GPU Texturing 2.
Slides of lecture 14, Mar 17, 2013: Stream Computing and GPGPU.
Slides of lecture 15, Mar 24, 2013: GPU Texturing 3.
Slides of lecture 16, Mar 27, 2013: GPU Texturing 4.
Slides of lecture 17, Apr 7, 2013: CUDA Memory Access 1.
Slides of lecture 18, Apr 9, 2013: CUDA Memory Access 2.
Slides of lecture 19, Apr 10, 2013: CUDA Memory Access 3.
Slides of lecture 20, Apr 14, 2013: GPU Reduction 1.
Slides of lecture 21, Apr 17, 2013: GPU Reduction 2; GPU Prefix Sum 1.
Slides of lecture 22, Apr 28, 2013: GPU Prefix Sum 2.
Slides of lecture 23, Apr 30, 2013: Sparsec Matrix-Vector Ops (SpMV).
Slides of lecture 24, May 1, 2013: Alternative Architectures: Intel MIC / Xeon Phi.

 

 Links

 

Reading Assignment Papers (Required)

Reading Assignment Papers (Optional)

General Resources

GPU Hardware Info

External Courses

Tutorials

Languages and Toolkits

GPU Architecture and Algorithms

GPGPU Papers

Future Architectures

Miscellaneous

Selected Conferences

Real-Time Visualization

Videos

References