EE 147 GPU Computing and Programming - Spring 2018

  • Lecture Time and Location: MWF 12:10pm - 1:00pm @ Boyce Hall 1471
  • Discussion (Section 021) Time and Location: Thursday 2:10pm - 3:00pm @ MSE 003
  • Instructor: Daniel Wong
    • Email:
    • Office: WCH 425
    • Office Hours: Wednesday, 10-11am or by appointment
  • TA: Kiran Ranganath
    • Email:
    • Office Hours: Thursday, 3-4pm or by appointment
  • iLearn (for assignments):
  • Satisfies Tech Elective requirement for EE, CEN, and CS majors

  • Midterm 2 is Monday, June 4th in class
  • Final Project has been assigned. Final Project presentations are on June 6 and June 8.
  • Midterm is Friday, May 4th in class There will be a review session Wednesday in class
  • Lab 3 has been posted. Due Wednesday, May 9, 2018
  • Lab 2 has been posted. Due Friday, April 27, 2018
  • Lab 1 has been posted. Due Monday, April 16, 2018
  • Assignment 0 has been posted. Due Monday, April 9, 2018
  • Welcome to EE 147!

Class webpage and communication

The class webpage is located at

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:

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.


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

Grade Breakdown

  • Homework/Labs: 20%
  • Project: 30%
  • Midterm 1 & 2: 45%
  • Participation/Discussion: 5%


  • You are responsible for all materials covered in lectures.
  • All assignments are individual efforts.
  • Cheating in assignments, 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.

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).
  • Slip days CANNOT be applied to the last lab. 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.

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:


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

The following schedule is tentative and is subject to change.

Week Week of Topic Assignments Slides Note
1 Apr 2 Introduction
Architecture Background
Assignment 0 0-introduction.pptx
No discussion this week
2 Apr 9 GPU Architecture and CUDA Lab 1 - Vector Add
No class April 11, 13
3 Apr 16 Memory and Data Locality
Control Flow and Divergence
Lab 2 - Matrix Multiply
4 Apr 23 Parallel Patterns Lab 3 - Histogram
5 Apr 30 Parallel Patterns / Midterm 1 Final Project Thurst Parallel Algorithms Library Midterm Friday, May 4th
Review session Wednesday
6 May 7 Data Transfer and Streams Extra Credit Lab - Streams Data Transfer and Streams
7 May 14 Unified Memory "Extra" Credit Lab - Unified Memory Unified Memory
Performance-Power Challenges
8 May 21 Computational Libraries Graphics Pipeline
9 May 28 Review Monday - Memorial day, Wednesday - Review
10 June 4 Midterm 2
10 June 6 & 9 Presentation