EE 599-006 - GPU Computing
EE 699-002 - GPU Computing

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:

  1. Introduction
  2. The evolution of SIMD and GPU architecture
  3. GPU programming using CUDA, OpenCL, ...
  4. Performance tuning
  5. Projects
  6. Graduate project presentations and discussions

OUTCOMES:

Upon completion of this course the students should demonstrate the ability to:

  1. Understand the operation and evolution of SIMD architecture and its SWAR and GPU variants.
  2. Understand the basic concepts of SIMD-based programming models.
  3. Understand the architectural features and hardware performance issues for specific modern GPUs
    -- i.e., recent products from ATI (now AMD) and NVIDIA.
  4. Understand the GPU-enhanced computing environment, including interactions with the host system.
  5. Use NVIDIA CUDA to solve computational problems.
  6. Use KHRONOS OpenCL to solve computational problems.
  7. Create software tools and/or a library of code to simplify computational use of GPUs.

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


http://aggregate.org/GPUCOURSE/ GPU Computing