Preliminary (Subject To Change With Notice) Syllabus:
Fall 2018 EE599-002 / EE699-002
Graphic Processor Computing

Instructor: Professor Hank Dietz
Office: 203 Davis Marksbury Building
Email: hankd@engr.uky.edu
Home URL: http://aggregate.org/hankd/
Course URL: http://aggregate.org/GPUCOURSE
Course Meetings: TR 9:30-10:45 in 265 F. Paul Anderson Tower
Course Text: None required - we will use 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.

Overview

Graphic Processor Computing is about the emerging many-core parallel computing architecture originally developed as Graphics Processing Units (GPUs) 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. Grading will be based on two in-class exams, several programming assignments, and the graduate student's presentation of the project they proposed. It is expected that the exams and assignments will count for approximately equal portions of the grade.

Course Content

The specific lecture coverage will strongly depend on the class background and interests. The general flow will be:

  1. Introduction
  2. The evolution of SIMD and GPU architecture
  3. For each GPU programming model in {CUDA, OpenCL/GL, OpenMP/ACC...}
  4. Graduate project presentations and discussions

There are two surprises from the first-day quiz, and I'll be adjusting the course content accordingly. The first is that folks want to use GPUs for graphics... which means we'll be doing some OpenGL. The second is that some folks only have Intel graphics hardware, which means the course shouldn't be too strongly biased toward NVIDIA/CUDA. Everyone seems comfortable with C dialects, so that will simplify things a bit. All these tweaks to the course content will be reflected incrementally in the materials posted at the course website.

Homework, Projects, Quizzes, & Exams

Grading will be based on two in-class exams, several programming assignments, and the graduate student's presentation of the project they proposed. Simple quizzes may be given in class to confirm your attentiveness and help tailor the presentation to better meet student interests and needs. The relative weightings of the assignments are yet to be determined. Independent of the weights, your final grade cannot be more than one letter grade above the lowest of your separate averages for assignments that involve coding vs. tests.

The two in-class exams should take about 1 hour each, and the schedule will be announced in class and at the course URL. Professor Dietz tries to minimize travel during the semester, but he and his research group have a major research exhibit at IEEE/ACM SC18. During that week, there may be some adjustment to the regular class meeting schedule. Such things always are announced on the course website.

Final exams are scheduled by the office of the registrar . We intend to use the scheduled 10:30AM Tuesday, December 11, 2018, final exam timeslot for brief project presentations from the graduate students enrolled in EE699-002. Although we will try to accomodate requests to take exams at other than the scheduled times, such requests generally will be considered only if made in writing or email at least a week before the scheduled exam time, and the course staff may decide to use a different format (e.g., an oral exam) for exams given at times other than those scheduled.

The programming assignments will require use of a GPU. Physical access to one or more systems will be provided in room 108 Davis Marksbury Building, with remote access to a larger number of systems (probably the suopercomputer managed by CCS). However, students are encouraged to use any appropriate computers to which they have access. Although AMD/ATI GPUs will be discussed, everything can be done using any NVIDIA GPU that is capable of both CUDA and OpenCL.

Testing/grading will be done using a Linux environment, but data demonstrating correct runs on other systems also will be accepted. Each program will be expected to be accompanied by a brief "Implementor's Notes" document giving an overview of the approach used and any known problems. To encourage good design and documentation, any documented bug in a project will loose only half as many points as the same bug without documentation. This is even taken to the limiting case of giving half credit for a submission that simply says "My project doesn't work because I didn't get around to writing it."

So that any grading errors can be consistently corrected for all students, regrade requests (preferably in writing) must be made promptly and must be specific as to the reason a regrade is requested. Any work submitted for regrade may be re-evaluated in its entirety.

Although students are encouraged to discuss course material with one another, everything you submit must be entirely your own original work. UK guidelines dictate that violation of this policy will result in all involved students failing the course; more severe penalties also may be applied. Contact Professor Dietz before submitting work if you have any doubts about how this policy might apply.


EE599/699 GPU Computing