Welcome to the course notes and supplementary materials for the full-day SIGGRAPH 2005 GPGPU course!
The course was held at SIGGRAPH 2005 on Wednesday, August 3, 2005.
Abstract
The graphics processor (GPU) on today’s commodity video cards has evolved into an extremely powerful and flexible processor. The latest graphics architectures provide tremendous memory bandwidth and computational horsepower, with fully programmable vertex and pixel processing units that support vector operations up to full IEEE floating point precision. High level languages have emerged for graphics hardware, making this computational power accessible. Architecturally, GPUs are highly parallel streaming processors optimized for vector operations, with both MIMD (vertex) and SIMD (pixel) pipelines. Not surprisingly, these processors are capable of general-purpose computation beyond the graphics applications for which they were designed. Researchers have found that exploiting the GPU can accelerate some problems by over an order of magnitude over the CPU.
However, significant barriers still exist for the developer who wishes to use the inexpensive power of commodity graphics hardware, whether for in-game simulation of physics of for conventional
computational science. These chips are designed for and driven by video game development; the programming model is unusual, the programming environment is tightly constrained, and the
underlying architectures are largely secret. The GPU developer must be an expert in computer graphics and its computational idioms to make effective use of the hardware, and still pitfalls abound. This course provides a detailed introduction to general purpose computation on graphics hardware (GPGPU). We emphasize core computational building blocks, ranging from linear algebra to database queries, and review the tools, perils, and tricks of the trade in GPU programming. Finally we present some interesting and important case studies on general-purpose applications of graphics hardware.
The course presenters are experts on general-purpose GPU computation from academia and industry, and have presented papers and tutorials on the topic at SIGGRAPH, Graphics Hardware, Game Developers Conference, and elsewhere.
Course Organizers
- Mark Harris, NVIDIA Corporation (UK)
- David Luebke, University of Virginia
Course Speakers
- Ian Buck, NVIDIA Corporation
- Naga Govindaraju, University of North Carolina at Chapel Hill
- Mark Harris, NVIDIA Corporation(UK)
- Jens Krueger, TU-Munich Computer Graphics & Visualization group
- Aaron Lefohn, University of California Davis
- David Luebke, University of Virginia
- Tim Purcell, NVIDIA Corporation(UK)
- Cliff Woolley, University of Virginia
Full Course Notes
Course Notes PDF (277 pages, 34.6 MB)
Course Outline
- Introduction (740 KB PPT)
- GPGPU Building Blocks
- Mapping computational concepts to the GPU (830 KB PPT)
- Linear algebra (7.3 MB PPT)
- Sorting and searching (400 KB PPT)
- Geometric Computing (2.4 MB PPT)
- High-level Languages and Debugging Tools
- High-level languages (1 MB PPT)
- Debugging (2.2 MB PPT)
- Effective GPGPU Programming: Tricks and Traps
- GPU Program Optimization (1 MB PPT)
- GPU Memory Model Overview (850 KB PPT)
- GPU computation strategies and tricks (650 KB PPT)
- GPU Data Structures (4.5 MB PPT) (video (43.1MB AVI))
- GPGPU Case Studies
- Database and Stream Mining Using GPUs (450 KB PPT)
- Dynamic Geometry Displacement (9 MB PPT)
- Applications of Adaptive Data Structures on GPUs (3.5 MB PPT)