Hands-on Labs
As mentioned on the welcome page, this course requires a basic knowledge of CUDA (e.g., see the Introduction to CUDA short course). The purpose of these hands-on labs is to help you learn some useful algorithmic techniques for GPU programming.Please make sure you meet the software requirements before continuing with these hands-on lab exercises.
The lab manual for this course includes the following hands-on exercises and additional information:
- Hands-on Lab 0: Initial login, package download, and environment set-up
- Hands-on Lab 1: 2D Blocking and Register Tiling (Stencil Code)
- Hands-on Lab 2A: Data Layout Transformation
- Hands-on Lab 2B: Binning with uniform distributions
- Hands-on Lab 3: Binning for non-uniform data distribution
For students with different levels of understanding of CUDA programming, we provide four hands-on labs, each of which reinforces one or several algorithmic techniques and optimizations. Lab 0 and Lab 1 are for the first hands-on lab section. Labs 2A and 2B are for the second lab section. Lab 3 is for the third lab section. Most labs are designed with varying levels of difficulty. We suggest that you choose the difficulty level that best fits your programming skills. You can advance your level of difficulty as time permits.
Solutions to the lab exercises are provided.
Acknowledgments
The following graduate students from the University of Illinois at Urbana-Champaign contributed to the creation of these lab materials:- Nasser Anssari
- Li-Wen Chang
- Hee-Seok Kim
- Deepthi Nandakumar
- Nady Obeid
- Chris Rodrigues
- John Stratton
- Ray Sung
- Xiao-Long Wu