CS/EE 217 GPU Architecture and Parallel Programming - Fall 2020

Course Information

  • Time and Location: Tuesday, Thursday 09:30am - 10:50am Pacific time @ Zoom
  • Instructor: Daniel Wong
    • Email: danwong@ucr.edu
    • Homepage: http://www.danielwong.org
    • Office: not WCH 425 =(
    • Office Hours: By appointment
  • TA: Mohammadreza Rezvani
    • Email: mrezv002@ucr.edu
    • Office Hours: TBD
  • Piazza (for discussions): http://piazza.com/ucr/fall2020/csee217/home
    • Github Classroom (for assignment submission)
    • iLearn (for grades and lecture videos/materials on Yuja): http://ilearn.ucr.edu


Lab 4 is assigned and due Tuesday, December 1.

Lab 3 is assigned and due Thursday, November 12.

Lab 2 is assigned and due Tuesday, November 3.

Lab 1 is assigned and due Tuesday, October 20.

First lecture will be during Week 1, October 6.

Welcome to CS/EE 217!

Class Syllabus

Class webpage and communication

The class webpage is located at http://teaching.danielwong.org/csee217/fall20

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

Introduces the popular CUDA based parallel programming environments based on Nvidia GPUs. Covers the basic CUDA memory/threading models. Also covers the common data-parallel programming patterns needed to develop a high-performance parallel computing applications. Examines computational thinking; a broader range of parallel execution models; and parallel programming principles.

Prerequisite: CS160 Concurrent Programming and Parallel Systems Strong C/C++ programming skills are required


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

Grade Breakdown

  • Labs: 30%
  • Final Project: 30% (Progress report: 10%, Implementation: 10%, Final report: 10%)
  • Midterm Exam: 20%
  • Final Exam: 20%
  • Participation and Extra Credit: 5% bonus
Letter Grade Percentage
A > 93%
A- > 90%
B+ > 87%
B > 83%
B- > 80%
C+ > 77%
C > 73%
C- > 70%

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 Pacific time).
  • All labs should be uploaded to iLearn or Github Classroom.


  • 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 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.


It's a pandemic. Attend if you can. =)

However, you are still responsible for keeping up with recorded course lectures and assignments.

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 Date Topic Assignments Slides
1 October 6, T Introduction and Logistics Piazza Intro Introduction
1 October 8, Th OS/Architecture Review, CUDA C Lab 1 - CUDA Setup/Vector Add OS/Arch Review
2 October 13, T CUDA Parallelism CUDA Parallelism
2 October 15, Th GPU architecture overview, TB / Warp Scheduling GPU-Architecture
3 October 20, T CUDA Memories, Reduction Algorithm / Control Divergence Lab 1 Due
Lab 2 - Reduction
3 October 22, Th Matrix Multiply MatrixMultiply
4 October 27, T Matrix Mutiply (cont.), DRAM / Memory Coalescing GPGPU-Sim Setup
Lab 3 - Tiled Matrix Multiplication
4 October 29, Th Histogram & Atomic Operations Histogram
Atomic Implementation
5 November 3, T Stencil/Convolution Lab 2 Due
Final Project
5 November 5, Th Midterm Review Samples
6 November 10, T Midterm Exam
6 November 12, Th Lab 3 Due
7 November 17, T Modern CUDA - Streams, Unified Memory Lab 4 - Histogram CUDA Streams
Unified Memory
7 November 19, Th High-level Libraries / Final project meeting CUDA Libraries
Modern C++
Nvidia Developer Blog
8 November 24, T Final project meeting Final Project Progress Report Due
8 November 26, Th Thanksgiving Holiday
9 December 1, T GPU Architecture - Multi-GPU Lab 4 Due
Extra Credit Assigment
9 December 3, Th GPU Architecture - Microarchitecture GPUArchitecture.zip
10 December 8, T GPU Trends - Multi-Chip Module MCM.pdf
10 December 10, Th Review Samples
Final December 16, W Final Project Due
Final December 17, Th Final Exam