CS/EE 147 GPU Computing and Programming - Spring 2019

Course Information


Assigment 4 has been assigned. It is due Thursday, May 23 at midnight.

Assigment 3 has been assigned. It is due Monday, May 6 at midnight.

Assignment 2 has been assigned. It is due Friday, April 26 at midnight.

Assignment 1 has been assigned. It is due Friday, April 12 at midnight.

Welcome to CS/EE 147!

Class Syllabus

Class webpage and communication

The class webpage is located at http://danielwong.org/teaching/csee147/spring19

Information, resources, and announcements related to the class will be posted to the webpage.

In addition, we will be using iLearn for assignments, and Piazza for discussions and help.

You will need an ENGR account. EE and CEN students should already have one. If you do not, you can create one here: https://www.engr.ucr.edu/secured/systems/login.php

Course Description

Graphics processing units (GPUs) play key roles in many modern application domains, such as image processing, machine learning, and scientific computing. GPUs provide programmers with the massive parallelism required for modern data intensive applications.

This course introduces the principles and practices of programming GPUs using the CUDA parallel programming environment. Topics include CUDA memory/threading models, common data-parallel programming patterns and libraries needed to develop high-performance parallel computing applications. Students will gain hands-on experience with designing and implementing high performance applications on GPU platforms.

Prerequisite: CS/EE 120B or equivalent; consent of instructor.
The course will assume the knowledge of the C++ programming language.


Grade Breakdown

Letter Grade Percentage
A > 93%
A- > 90%
B+ > 87%
B > 83%
B- > 80%
C+ > 77%
C > 73%
C- > 70%

Lab Policies


Academic Integrity

Here at UCR we are committed to upholding and promoting the values of the Tartan Soul: Integrity, Accountability, Excellence, and Respect. As a student in this class, it is your responsibility to act in accordance with these values by completing all assignments in the manner described, and by informing the instructor of suspected acts of academic misconduct by your peers. By doing so, you will not only affirm your own integrity, but also the integrity of the intellectual work of this University, and the degree which it represents. Should you choose to commit academic misconduct in this class, you will be held accountable according to the policies set forth by the University, and will incur appropriate consequences both in this class and from Student Conduct and Academic Integrity Programs. For more information regarding University policy and its enforcement, please visit: http://conduct.ucr.edu.


You are expected to attend all lectures. While the slides contain all the information you need to know, some of the contents don't make sense unless you attend lecture. =)

Tentative Schedule

The following schedule is tentative and is subject to change.

Note: You need to be registered in Piazza to access the lecture slides.

Week Week of Topic Assignments Slides Note
1 April 1 Introduction, OS/Architecture Review, CUDA Lab 1 - CUDA Setup Introduction.pptx
Review.pptx CudaC.pptx

2 April 8 CUDA Parallelism, Control Divergence, Parallel Reduction Algorithm Lab 1 Due Friday 4/12
Lab 2 - Reduction

3 April 15 TensorFlow, Matrix Multiply, Blocking Tensorflow.pptx
Tensorflow Examples
4 April 22 GPU Memory Lab 2 Due Friday 4/26
Lab 3 - Matrix Multiply
Final Project

5 April 29 Review, Midterm 1 Final Project Proposal Due Monday 5/6 GPU-Architecture.pptx

6 May 6 Histogram, Atomic Operations, ML, High-level Libraries Lab 3 Due Monday 5/6
Lab 4 - Histogram
Nvidia Atomic Implementation

7 May 13 Modern CUDA- Streams, Unified Memory, Dynamic Parallelism Libraries.pptx

8 May 20 More Modern CUDA Lab 4 Due Wednesday 5/22
Extra Credit Lab 5 - Streams

9 May 27 May 27 - Holiday, May 30 - Review AMD-GPU-arch.pptx

10 June 3 June 3 - Midterm 2, Presentation