University of California –Riverside

Department of Electrical Engineering

Winter  2015

EECS 217: GPU Architecture and Parallel Programming

 

 

Instructor: Dr. Sheldon Tan

 

Office: 424WCH

 

Email: stan@ece.ucr.edu

 

Office Hours: Thursday 4:00pm – 5:00pm  by appointment.

 

 

 

Teaching Assistant:   Kei He  khe004@ucr.edu

 

Teaching Assistant Office Hour:  11:10am to 12:00pm W

 

Lecture time: 12:40am to 2:00pm TR

 

Lecture location:  2130 CHASS Interdisciplinary Bldg-South (INTS) 

 

Discussion time: 1:10pm to 2:00pm F

 

Discussion location: 139 Winston Chung Hall (CHUNG)

 

 

Course Syllabus

 

 

Course Background and Description:

Mass-market computing systems that combine multicore CPUs and many-core graphic processing units (GPUs) have brought terascale computing to the desk-top computers and petascale computing to clusters. Armed with such massively parallel computing power, we are at the dawn of pervasive use of computational experiments for science, engineering, and many other disciplines. The course will target at the undergraduate and graduate students, who are interested in learning the parallel programming for important many-core processors.  The course will emphasize the both critical computational thinking as well as parallel programming skills. The course will introduce the popular CUDA based parallel programming environments based on Nvidia GPUs. Students will learn the basic CUDA memory/threading models, understand the common data-parallel programming patterns needed to develop a high-performance parallel application. The course will also cover computational thinking, a boarder range of parallel execution models, and parallel programming principles. As heterogenous architecture and computing become popular, students will also has chance to learn the new OpenCL programming language, which is not emerging as the standard programming for many accelerators such as GPUs, FPGAs etc.

 

Who can take the course?

 

The targeted audience of the course is the graduate and senior undergraduate students from all science and engineering disciplines, where computational thinking and parallel programming skills are needed to use pervasive parallel computing hardware to archive high performance computations. Students should have basic C/C++ programming experiences. In additional to Computer Science, Computer Engineering  and Electrical Engineering Students, students in the computational fields such as mechanical engineering, civil engineering, bioengineering, physics, chemistry, who use computation to further their field of research are also welcome.

Course Topics and Calendar (subject to future changes)

1.     Introduction to GPU Computing (Chapter 1 and chapter 2, week 1)

2.     CUDA Programming Model (Chapter 3, week 2)

3.     CUDA API (Chapter 3, week 3)

4.     Simple Matrix Multiplication in CUDA (Chapter 3, week 3)

5.     Threading Hardware and Parallel Thread Execution (Chapter 4, week 4)

6.     CUDA Memory Model (Chapter 5, week 5)

7.     Memory Hardware (Chapter 5, week 6)

8.     Shared Memory Matrix Multiplication (Chapter 5, week 6)

9.     Additional CUDA API Features (Chapter 6, week 7)

10.   Useful Information on CUDA Tools (Chapter 7, week 8)

11.   OpenCL based propgramming (week 9-10)(Seperate materials, week 8-9)

12.   Parallel Programming and Computational Thinking (Chapter 10, week 10)

 

 

 

Textbooks:

 

 

Copies of the two books were reserved into the Science Library for this course.

 

Course text book: D. Kirk & W. Hwu, "Programming Massively Parallel Processors: A Hands-on Approach". Second edition, Morgan Kaufmann, 2013. ISBN: 978-0-12-415992-1

 


Reference Book: J. Sanders and E. Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming”, Addison Wesley, 2010. ISBN-13: 978-0-13-138768-3

 

 

 

Announcements:

 

q  The first lecture will start on Jan 6.th, 2015.

 

 

 

Assignments and grading policy

 

 

Lab1-3: 30%, each lab is 10%.

Final Project:  70%

 

 

GPU server used in this class

 

Server name:  storm.ee.ucr.edu.

 

Server specs: Dual Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz w/ 32 GB RAM, Dual NVidia Fermi C2075.

 

In addition, five GPU cards (Quadro 2000) have been installed in EE Instruction Lab 125. The computers which have the GPU cards are 24, 25, 26, 27, 28.

They are in the 2nd to last row of computers; towards the back of room 125. The computers are window 7 based PCs and has latest CUDA installed.

 

 

 

Course Final Project

 

Lecture notes are in UCR blackboard