Preliminary ABET-style Syllabus
CATALOG DATA:
EE 599 - GPU Computing: 3 Credits
EE 699 - GPU Computing: 3 Credits
GPU Computing is about the emerging many-core parallel computing architecture originally developed as Graphics Processing Units for video cards.
This course will begin by tracing the evolution of SIMD (Single Instruction, Multiple Data) architecture that produced modern GPUs, studying the current architectural features, and discussing trends for the future. GPUs are evolving rapidly and not without growing pains (buggy hardware and software, fundamental changes to the programming model, Intel's Larrabee, etc.), but it is clear GPU-like architectures are here to stay and are becoming an integral part of most computers and processor chips (e.g., AMD Fusion "APUs").
The bulk of the course will then involve using various GPU programming environments (especially CUDA and OpenCL), running on ATI (now AMD) and/or NVIDIA GPUs, to implement programs solving problems that would classically have been run on supercomputers. All students will have hands-on experience programming GPUs for assigned problems, at least one of which will involve building software tools/support to make GPUs easier to use. In addition, each graduate student (EE 699) will be expected to solve a modest GPU programming problem that they individually will propose, write-up, code, and present to the class.
A good knowledge of C programming is expected, as all the programming will use environments building on C.
TEXTBOOK
:None required - Course notes
Both NVIDIA and AMD have extensive collections of supporting materials
freely available or indexed at their WWW sites, and we will be making
heavy use of some of those materials in addition to notes developed here.
COORDINATOR
Dr. Henry G. Dietz, Professor
GOALS
:The goal of this course is to have students understand the ongoing evolution of SIMD architecture and GPUs, and to be able to use GPUs as supercomputers for problems relevant to computer science and engineering.
PREREQUISITE
:For EE599: Undergraduate standing and fluency in C or a similar programming language
For EE699: Graduate standing and fluency in C or a similar programming language
TOPICS
:OUTCOMES
:Upon completion of this course the students should demonstrate the ability to:
COMPUTER
USAGE:
Students will perform open-ended experiments using GPU
computing to solve engineering problems.
DESIGN CONTENT:
Students will design parallel approaches for their problems
suitable for execution on GPUs. Implementation of these
approaches will largely reuse code provided to them, with only a
small amount of new coding required. The design content, which
is the bulk of the effort in the projects, is the casting of a
problem in a form that can be efficiently accelerated by a GPU.
CLASS SCHEDULE:
Lecture 3 hours per week.
PROFESSIONAL CONTRIBUTION:
Engineering Science: 1 Credit (33%)
Engineering Design: 2 Credits (67%)
RELATION OF COURSE TO PROGRAM OBJECTIVES:
These course outcomes fulfill the following program objectives:
PREPARED BY: Henry G. Dietz; last update: August 24, 2011