CSE 690 - General Purpose Computing on Graphics Hardware


General Info:

Instructor: Prof. Klaus Mueller
    Office hours: Tu 3-5 pm (send email for other arrangements), CS 2428
    Phone: 632-1524
    Email: mueller AT cs DOT sunysb DOT edu

Meeting time and venue:
    TuTh 5:20-6:40pm in Computer Science 2311

    Recent research developments have impressively demonstrated that modern graphics hardware can be utilized for a much wider range of applications than just the computer games they were initially designed for. The truth of the matter is, the special effects of computer games and real-time home entertainment have become computationally so demanding and sophisticated that they now require a piece of hardware that almost resembles a "supercomputer on a chip", at commodity prices and plugged into commodity computing hosts - the PC. The speed of these graphics processors (or GPUs, for short) comes from the simplicity of their design. This enables high parallelism in the processing of the data, often allowing speedups of 1-2 orders of magnitude when compared to an equivalent CPU implementation. It has also allowed sustained performance growth rates at a triple of Moore's law. These developments have enabled exciting opportunities for numerical and scientific computing, database computations, geometry processing and modeling, cluster-based computing, medical imaging, computer vision, and, of course, visualization and computer graphics.
   This course will first lay out the foundations of the underlying hardware. It will then illustrate how it is programmed, with both low-level and high-level constructs, using the C-language. The majority of the course will be dedicated to demonstrate the use of GPUs by ways of a wide variety of examples. These will be based on recent research papers in this new and up-and-coming domain, generally referred to as GPGPU (General Purpose computing on Graphics Processing Units). A number of course projects will aim to provide a hands-on experience with the subject matter.

    The course is intended for anyone who has encountered a need for accelerated computing. The material and its presentation is suited for a general audience from all academic displines. The only prerequisite is knowledge of a programming language, preferably C/C++. No prior knowledge of computer graphics is required, but some mathematical background, such as linear algebra, is desirable.

    Graduate standing or permission of instructor
    Linear algebra

Course topics:
  • Overview of GPUs: architecture, features, programming model
  • System issues: cache and data management, languages and compilers, stream processing, GPU-CPU load balancing
  • GPU-specific implementations of standard operations, such as sorting and searching, linear algebra, signal processing, differential equations, numerical solvers
  • Numerical and scientific computations: non-linear optimization, FFT, differential equations for rigid body simulation, statistics, fluid dynamics, molecular dynamics
  • Geometric computations: proximity and collision computations. Voronoi diagrams and distance fields, motion planning and navigation
  • Database computations: database queries: predicates, booleans, aggregates; streaming databases, data mining
  • Medical imaging: computed tomography, functional imaging
  • Image processing: automatic and user-guided interactive segmentation, level-set operations, visual feedback
  • Computer vision and AI: real-time tracking, surface, shape, and scene reconstruction, reasoning and belief propagation
  • Computer graphics and visualization: raytracing, photon-mapping, shadows, radiosity, amorphous phenomena, volume rendering
  • GPU Clusters: parallel computing environments for GPUs
  • Texts:
    R. Fernando and M. Kilgard, "The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics", Addison-Wesley, 2003.
        Research papers and handouts
    Course procedures:

        Please attend every session. Your presentation should but don't have to be related to the topic you have chosen for your project. Mid-way through the course, we will also have 2 sessions allocated for progress reports on each project in form of 15-20 minute presentations. A lively discussion among the class is highly encouraged. The project presentations (and the presentations in general) are meant as a mechanism to improve the project, clarify pertaining issues, and come up with cool new ideas, enhancements, and applications.

        Pick a project, either from a list provided early in the semester, or on your own. It should be a project of substance, in accordance to the level of the class and grade-percentage allocated. 

        Project: 70%
        Presentations: 30%