The University of North Carolina - Chapel Hill - PowerPoint PPT Presentation

About This Presentation
Title:

The University of North Carolina - Chapel Hill

Description:

CPU can do all Turing complete operations Earliest Commodity Hardware ... Stanford RTSL GPU Programming Languages Assembly language Cg and HLSL GLSL Types of ... – PowerPoint PPT presentation

Number of Views:124
Avg rating:3.0/5.0
Slides: 33
Provided by: JeremyW157
Learn more at: http://gamma.cs.unc.edu
Category:

less

Transcript and Presenter's Notes

Title: The University of North Carolina - Chapel Hill


1
GPGP - Background Lecture
  • Graphics Pipelines, OpenGL, Fragment Programs,
    First GPGP Programs

2
Purpose
  • Give sufficient background to non-graphics
    students to program a simple GPGP program
  • Attempted to minimize any assumptions prior
    knowledge of Graphics

3
My Background in GPGP
  • 06/2003 - Worked with Bill Baxter on paint work
    using GPU to transform volume representation of
    paint to RGB
  • 01/2004 - Worked with Brandon Lloyd on shadow
    work
  • Didnt touch GPU work, but understood what it did
  • 09/2005 - Taught COMP136 and we talked about GPU
  • 10/2006 - Wrote a simple program to remove radial
    distortion from images in real time
  • 01/2007 - Prepared for this lecture

4
Overview
  • Raster Graphics
  • Where did this start?
  • Graphics Pipeline
  • Whats the hardware like?
  • OpenGL
  • How to talk to the hardware?
  • GPU Programming
  • How to make it do something non-standard?
  • A First GPGP Program
  • Hello World!

5
Raster Graphics --Utah Rendering
  • 1960s-1970s The University of Utah led raster
    graphics research
  • Ivan Sutherland
  • How do we convert mathematical representations of
    objects into images on the screen?
  • Conversion of continuous to discrete
  • Solution of light-surface-eye interactions

6
Object Representations
  • MANY continuous representations exist for objects
  • Planar polygons, quadrics, splines, M-Reps,
    general equations
  • Discrete representations are sparser
  • Generally some interpretation of an array of
    numbers

7
The Winner!
  • In modern raster graphics, the triangle is king
  • It is the simplest continuous representation that
    can approximate all other surface-types
  • All other continuous representations must be
    triangulated before being rasterized
  • Unless GPGP is used!

8
Rasterization Terms
  • Tessellate - convert some other continuous
    representation to planar polygons
  • Triangulate - converting some other continuous
    representation to triangles
  • Vertex - a point in some nD space
  • Rasterize - convert a triangle to fragments
  • Fragment - a potential pixel

9
Utah Graphics Pipeline
  • Obtain triangulation of model
  • Affine Transforms
  • Projective Transforms
  • Clip to viewable region
  • Rasterize

10
Overview
  • Raster Graphics
  • Where did this start?
  • Graphics Pipeline
  • Whats the hardware like?
  • OpenGL
  • How to talk to the hardware?
  • GPU Programming
  • How to make it do something non-standard?
  • A First GPGP Program
  • Hello World!

11
Why Specialty Hardware?
  • CPU can do all Turing complete operations

12
Earliest Commodity Hardware
Vertex Transformation
  • State of pipeline initialized
  • Vertices come down the pipe
  • Framebuffer and depth buffer set by the end

Clipping
Rasterization
Fragment Operations
Visibility
13
Cutting-edge Commodity Hardware
Vertex Transformation
  • Okay, not much changed
  • Orange denotes programmability
  • Power of standard set of settings increased
  • Output can go to any/many buffers

Clipping
Rasterization
Fragment Operations
Visibility
14
Overview
  • Raster Graphics
  • Where did this start?
  • Graphics Pipeline
  • Whats the hardware like?
  • OpenGL
  • How to talk to the hardware?
  • GPU Programming
  • How to make it do something non-standard?
  • A First GPGP Program
  • Hello World!

15
Talking to the GPU
  • Two parts
  • STATE The majority of OpenGL calls modify the
    state machine
  • INPUT Vertices
  • Three vertices make a triangle
  • Once a triangle is complete, the GPU runs with it

16
OpenGL Overview
  • Most of the features in OpenGL will probably
    never be used in this class
  • For the majority of GPGP work, you render a quad
    (two triangles) that fills the screen on a
    one-input-texture-to-one-output-pixel basis

17
Note on OpenGL
  • Although OpenGL calls are supported by nVIDIA or
    ATi drivers, some windowing system must be used
  • Native to OS - a pain
  • GLUT - quick, easy, small, has some issues with
    the nicities of coding
  • Almost all windowing toolkits support OpenGL
  • FLTK, Qt, WxWindows, etc.

18
Lets go to the code
  • All code is available at http//www.cs.unc.edu/jw
    endt/classes/GPGPLecture

19
OpenGL Gnitty-Gritties
  • Three more important OpenGL features
  • Multi-pass rendering
  • Read-backs
  • Extensions

20
Overview
  • Raster Graphics
  • Where did this start?
  • Graphics Pipeline
  • Whats the hardware like?
  • OpenGL
  • How to talk to the hardware?
  • GPU Programming
  • How to make it do something non-standard?
  • A First GPGP Program
  • Hello World!

21
History of Commodity GPU Programming
  • Pre-1999 - Basic rasterizers
  • Some texture combination ability
  • Vertex transformation occurs on CPU
  • 1999-2000 - Slightly configurable
  • Cube maps, signed math ops
  • Vertex transforms added to GPU
  • 2001 - Vertex programmability
  • 2002-present - Vertex/fragment programmability

22
History of GPU non-Commodity Programmability
  • mid-1990s - UNC PixelFlow
  • later-1990s - Stanford RTSL

23
GPU Programming Languages
  • Assembly language
  • Cg and HLSL
  • GLSL

24
Types of GPU Programs
  • Vertex Programs
  • Required Outputs Vertex position and Vertex
    color
  • Optional Outputs Hardware/language dependant
    maximum number of output values
  • Fragment Programs
  • Required Outputs RGBA color
  • Optional Outputs Writing to multiple sources

25
Communicating with GPU Programs
  • There are two ways of sending information to GPU
    Programs
  • Explicitly setting parameters using specified
    function calls
  • Sending down standard values by setting OpenGL
    state

26
For More Info
  • Tutorials, sample code, etc.
  • Go to www.gpgpu.org/developer
  • Cg Tutorial
  • Amazon http//www.amazon.com/Cg-Tutorial-Definiti
    ve-Programmable-Real-Time/dp/0321194969
  • GLSL (Orange Book)
  • Amazon http//www.amazon.com/OpenGL-Shading-Langu
    age-2nd/dp/0321334892/sr1-1/qid1169220867/refpd
    _bbs_1/102-4102099-2237769?ieUTF8sbooks

27
Overview
  • Raster Graphics
  • Where did this start?
  • Graphics Pipeline
  • Whats the hardware like?
  • OpenGL
  • How to talk to the hardware?
  • GPU Programming
  • How to make it do something non-standard?
  • A First GPGP Program
  • Hello World!

28
Lets go to the code
  • Borrowed heavily from gpgpu.org/developer
  • All code is available at http//www.cs.unc.edu/jw
    endt/classes/GPGPLecture

29
Notes
  • No Vertex program! no use for one.
  • The framebuffer-to-texture transfers we were
    doing are slow
  • Use the framebuffer object class available from
    GPGPU.org/developer
  • GLEW is downloadable from glew.sourceforge.net/
  • We only passed one parameter down in this example

30
Reading the Data Back to the CPU
  • See function SnapShot at the bottom of the last
    file

31
Debugging
  • IMDebug by Bill Baxter
  • http//www.billbaxter.com/projects/imdebug/index.h
    tml

32
Questions?
Write a Comment
User Comments (0)
About PowerShow.com