intro

advertisement

CSE 690

General-Purpose Computation on

Graphics Hardware

(GPGPU)

Courtesy David Luebke, University of Virginia

Introduction

• 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

Motivation:

Computational Power

• 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

Motivation:

Computational Power

GPU

CPU

Courtesy Naga Govindaraju

An Aside:

Computational Power

• 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

Motivation:

Flexible and precise

• 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

Motivation:

The Potential of GPGPU

• 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

The Problem:

Difficult To Use

• 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!

Course Goals

• 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

Course Topics

• GPU building blocks

• Languages and tools

• Effective GPU programming

• GPGPU case studies

Course Topics: Details

• GPU building blocks

– Linear algebra

– Sorting and searching

– Database operations

• Languages and tools

– High-level languages

– Debugging tools

Course Topics: Details

• 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

Intended Audience

• 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

Course Schedule

• 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

Course Schedule

• GPU-specific implementations of standard operations:

– sorting and searching

– linear algebra

– signal processing

– differential equations

– numerical solvers

Course Schedule

• Numerical and scientific computations:

– non-linear optimization

– FFT

– differential equations for rigid body simulation

– statistics

– fluid dynamics

– molecular dynamics

Course Schedule

• 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

Course Schedule

• 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

Course Schedule

• Computer graphics and visualization:

– raytracing

– photon-mapping

– shadows

– radiosity

– amorphous phenomena

– volume rendering

Course Schedule

• 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

Download