CS/EE 147: GPU Computing & Programming - Spring 2021

Course Information

  • Time and Location:
    Lecture: Mon/Wed 6:30pm - 7:50pm
    Discussion: Fri 02:00pm - 02:50pm
  • Instructor: Abbas Mazloumi
  • TA: Mohammadreza Rezvani
    • Email: mrezv002@ucr.edu
    • Office Hours: Wednesdays 2:50 - 3:50 PM
  • Discord (for discussions): Send me an email for invitation
  • iLearn (for assignments): http://ilearn.ucr.edu


Final exam in class on Wednesday, June 2. It will be cumulative. Be prepared for all lectures

Lab assigment 4 has been assigned. It is due Friday, June 4 at midnight.

Lab assigment 3 has been assigned. It is due Friday, May 21 at midnight.

Midterm exam in class on Wednesday, May 5.

Lab assignment 2 has been assigned. It is due Friday, May 7 at midnight.

Lab assignment 1 has been assigned. It is due Monday, April 19 at midnight.

Recorded lectures and discussions can be found on iLearn/YuJa/All Channels/EE_147_001_21S

Welcome to CS/EE 147!

Class Syllabus

Class webpage and Communication

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

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

In addition, we will be using iLearn for assignments, and Discord 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.

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: 25%
  • Midterm 1: 25%
  • Midterm 2: 25%
  • Quizes: 15%
  • Class Participation: 10%
  • Extra Credit: 3%
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 do your best to attend each lecture.
  • However, you are still responsible for keeping up with recorded course lectures and assignments.
  • Lectures will be recorded and all course resources will be posted on ilearn and/or through course webpage

Lab Policies

  • You have 3 slip days that you can use on any lab. If you exceed your slip days, there will be a 15% penalty per late day (counting weekends).
  • 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, 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 29 Introduction Introduction.pdf

2 April 5 OS/Architecture Review,CUDA Parallelism Lab 1 - Vector Add Architecture_Review.pdf

3 April 12 CUDA Parallelism Quiz 1: 04/14 CUDA_Parallelism.pdf

4 April 19 Control Divergence, Parallel
Reduction Algorithm, Parallel Scan
Lab 1 Due: 04/19
Lab 2 - Reduction

5 April 26 Matrix Multiplaction Quiz 2: 04/28 Matrix_Multiplcation.pdf

6 May 3 Review, Midterm 1 Lab 2 Due: 05/07 Midterm-Review.pdf

7 May 10 Modern CUDA- Unified Memory, Streams Lab 3 - Matrix Multiply Pinned_UnifiedMemory.pdf

8 May 17 Histogram, Atomic Operations Quiz 3: 05/19
Lab 4 - Histogram

9 May 24 Dynamic Parallelism, Review Lab 3 Due: 5/24 DynamicParallelism.pdf

10 May 31 May 31 - Holiday, June 2 - Midterm 2 June 2 - Final Exam
Lab 4 Due: Friday 6/04