CS/EE 147 GPU Computing and Programming - Winter 2020

Course Information


Welcome to CS/EE 147!

Class Syllabus

Class webpage and Communication

The class webpage is located at https://www.cs.ucr.edu/~mchow009/teaching/cs147/winter20

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

In addition, we will be using iLearn for assignments, and Nectir for discussions and help. You can find the User Guide for Nectir here to learn how to create an account and download the app.

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.

Course Outcomes

  • Learn about calculating performance characteristics
  • Understanding the motivation why the GPU is used at all
  • How the motivation influenced the design of GPU architecture
  • How the design of the architecture leads to specific programming paradigms
  • How to create “Optimal” programs using these paradigms


  • Programming Massively Parallel Processors, 2nd Ed., by D. Kirk and W Hwu (primary textbook)
  • CUDA by example, Sanders and Kandrot (recommended)

Grade Breakdown

  • Labs: 20%
  • Midterm: 25%
  • Final: 25%
  • Quizes: 20%
  • Class Participation & Discussion: 10%
Letter Grade Percentage
A > 93%
A- > 90%
B+ > 87%
B > 83%
B- > 80%
C+ > 77%
C > 73%
C- > 70%

Online Attendence Policies

  • You are expected to attend all lectures. You participation in Lecture and in Discussion is vital in cultavativing an effective learning envirnment.
  • For online lecture you must have an available camera and microphone. I execpt everyone to turn on the camera during the lecture and be open for discussion. My goal is to treat our online course as much as an in person classroom as possible.
  • Lectures will be recorded and all course resources will be posted on ilearn

Lab Policies

  • You have 3 slip days that you can use on any lab (not project). If you exceed your slip days, there will be a 15% penalty per late day (counting weekends).
  • Slip days CANNOT be applied to the final project. We need ample time to grade the last assignment before grades are due.
  • No extensions for labs will be given (see slip days). Even if you're one minute late, it will be considered late.
  • All labs will be due at the end on the day (midnight).
  • All labs should be uploaded to iLearn.


  • You are responsible for all materials covered in lectures.
  • All labs, quizzes, and exams are individual effort.
  • Cheating in labs, quizzes, projects, and exams are absolutely prohibited. The minimum penalty for a violation of the regulations will be a zero for the assignment; the maximum penalty will be failure in the course.
  • Examinations must be taken in class on the day they are given. There will be no exceptions.

Academic Accommodations

If you have a disability or believe you may have a disability, you can arrange for accommodations by contacting Services for Students with Disabilities (SSD) at 951-827-4538 (voice) or specserv@ucr.edu (email). Students needing academic accommodations must first register with SSD and provide required disability-related documentation. If you already have approved accommodation(s), you are advised to notify the faculty instructor of record for this course privately.

Academic Rights

All students, faculty, and staff are responsible for understanding and complying with the University’s stated academic requirements. Students should feel free to express their thoughts and opinions in an academic forum.

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.

Tentative Schedule

The following schedule is tentative and is subject to change.

Note: You need to login to ilearn to access the lecture slides and materials.

Week Week of Topic Assignments Slides Note
1 March 30 Introduction Introduction.pptx

2 April 6 OS/Architecture Review,CUDA Parallelism Lab 1 - CUDA Setup Architecture_Review.pptx GPU_Architecture.pptx

3 April 13 CUDA Parallelism,Control Divergence Quiz 1 Wednesday 4/15 CUDA-Parallelism.pptx
Memory coalescing.pptx

4 April 20 Parallel Reduction Algorithm, Parallel Scan Lab 1 Due Friday 4/24
Lab 2 - Reduction

5 April 27 Matrix Multiplaction Quiz 2 Wednesday 4/29 MatrixMultiplcation.pptx

6 May 4 Review, Midterm 1
Lab 3 - Matrix Multiply

7 May 11 Modern CUDA- Unified Memory, Streams UnifiedMemory.pdf

8 May 18 Histogram, Atomic Operations, Dynamic Parallelism Lab 2 Due Moday 5/18
Lab 4 - Histogram

9 May 25 May 25 - Holiday, May 27 - Review Lab 3 Due Tuesday 5/26
Quiz 3 Wednesday 5/27

10 June 1 Review June 3 - Final
Quiz 4 Monday 6/6
Lab 4 Due Friday 6/12