Courtesy David Luebke, University of Virginia
• The GPU on commodity video cards has evolved into an extremely flexible and powerful processor
– Programmability
– Precision
– Power
• This course will address how to harness that power for general-purpose computation
• GPUs are fast…
– 3 GHz Pentium4 theoretical : 6 GFLOPS, 5.96 GB/sec peak
– GeForceFX 5900 observed : 20 GFLOPs, 25.3 GB/sec peak
• GPUs are getting faster, faster
– CPUs: annual growth
1.5
× decade growth
60 ×
– GPUs: annual growth > 2.0
× decade growth > 1000
Courtesy Kurt Akeley,
Ian Buck & Tim Purcell, GPU Gems
GPU
CPU
Courtesy Naga Govindaraju
• Why are GPUs getting faster so fast?
– Arithmetic intensity: the specialized nature of GPUs makes it easier to use additional transistors for computation not cache
– Economics: multi-billion dollar video game market is a pressure cooker that drives innovation
• Modern GPUs are deeply programmable
– Programmable pixel, vertex, video engines
– Solidifying high-level language support
• Modern GPUs support high precision
– 32 bit floating point throughout the pipeline
– High enough for many (not all) applications
• The power and flexibility of GPUs makes them an attractive platform for general-purpose computation
• Example applications range from in-game physics simulation to conventional computational science
• Goal: make the inexpensive power of the GPU available to developers as a sort of computational co-processor
• GPUs designed for and driven by video games
– Programming model is unusual & tied to computer graphics
– Programming environment is tightly constrained
• Underlying architectures are:
– Inherently parallel
– Rapidly evolving (even in basic feature set!)
– Largely secret
• Can’t simply “port” code written for the CPU!
• A detailed introduction to general-purpose computing on graphics hardware
• Emphasize:
– Core computational building blocks
– Strategies and tools for programming GPUs
– Tips & tricks, perils & pitfalls of GPU programming
• Several case studies to bring it all together
• GPU building blocks
• Languages and tools
• Effective GPU programming
• GPGPU case studies
• GPU building blocks
– Linear algebra
– Sorting and searching
– Database operations
• Languages and tools
– High-level languages
– Debugging tools
• Effective GPU programming
– Efficient data-parallel programming
– Data formatting & addressing
– GPU computation strategies & tricks
• Case studies in GPGPU Programming
– Physically-based simulation on GPUs
– Ray tracing & photon mapping on GPUs
– Tone mapping on GPUs
– Level sets on GPUs
• Anyone interested in accelerated computing
– from all academic disciplines
• No graphics background required
– will cover all necessary and relevant detail in the course
• What is required…
– working knowledge of C/C++
– linear algebra
– enthusiasm and an open mind
• Understanding the fabric: computer graphics basics
• Overview of GPUs
– architecture
– features
– programming model
– some simple applications
• System issues
– cache and data management,
– languages and compilers
– stream processing
– GPU-CPU load balancing
• GPU-specific implementations of standard operations:
– 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
• Image processing:
– automatic and user-guided interactive segmentation
– level-set operations
– visual feedback (coupling computational and visualization aspects)
• Medical imaging:
– computed tomography
– functional imaging
• Computer vision and AI:
– real-time tracking
– surface, shape, and scene reconstruction
– reasoning and belief propagation
• Database computations:
– database queries: predicates, booleans, aggregates
– streaming databases
– data mining and visual data mining
• Computer graphics and visualization:
– raytracing
– photon-mapping
– shadows
– radiosity
– amorphous phenomena
– volume rendering
• GPU Clusters
– parallel computing environments for GPUs
– comparison with other high performance specialized hardware
(playstation2 cluster from UIUC)
• Project presentations
– at the end of the term