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
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.
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.
Lecture notes are in UCR
blackboard