GPUs – Graphics Processing Units Applications in Graphics Processing and Beyond COSC 3P93 – Parallel ComputingMatt Peskett
What We’ll Cover Today COSC 3P93 – Parallel ComputingMatt Peskett A Brief History of the GPU GPU – Definition and difference from CPU Memory – DDR vs. GDDR Uses of GPUs in graphics processing Uses of GPUs outside of graphics processing
History of the GPU COSC 3P93 – Parallel ComputingMatt Peskett Whirlwind Flight Simulator (1951) One of the first ventures into digital computing (previously analog)
History of the GPU COSC 3P93 – Parallel ComputingMatt Peskett Lincoln Laboratory at MIT Whirlwind flight simulator
History of the GPU COSC 3P93 – Parallel ComputingMatt Peskett Whirlwind Flight Simulator (1951) One of the first ventures into digital computing (previously analog) Atari 2600 (1977) Major enhancement in consumer-oriented graphics hardware
History of the GPU COSC 3P93 – Parallel ComputingMatt Peskett Atari 2600 console Basketball (1978)
History of the GPU COSC 3P93 – Parallel ComputingMatt Peskett Whirlwind Flight Simulator (1951) One of the first ventures into digital computing (previously analog) Atari 2600 (1977) Major enhancement in consumer-oriented graphics hardware IBM Monochrome Display Adapter (1981) Produced 720 x 350 resolution
History of the GPU COSC 3P93 – Parallel ComputingMatt Peskett Character set of the MDA IBM 5151 with green monochrome text from MDA Basketball (1978) MDA Card
What makes a GPU a GPU? COSC 3P93 – Parallel ComputingMatt Peskett Specialized for SIMD operations
What makes a GPU a GPU? COSC 3P93 – Parallel ComputingMatt Peskett A visual distinction:
What makes a GPU a GPU? COSC 3P93 – Parallel ComputingMatt Peskett CPU processing core (left) vs. GPU processing core (right)
What makes a GPU a GPU? COSC 3P93 – Parallel ComputingMatt Peskett GPUs are optimized for floating point operations
What makes a GPU a GPU? COSC 3P93 – Parallel ComputingMatt Peskett Minimal control infrastructure to enhance throughput
What makes a GPU a GPU? COSC 3P93 – Parallel ComputingMatt Peskett CPUs can handle a lot of what a GPU does – but not nearly as well
Why have both a GPU and CPU? COSC 3P93 – Parallel ComputingMatt Peskett Executing serial code with a GPU is slower than on a CPU Operating systems and user applications have a large portion of serial code Rewriting applications to utilize GPU is often not worth the investment in time Too much variety in operations; some are best handled by the CPU and others by the GPU
GPU Memory vs. CPU Memory COSC 3P93 – Parallel ComputingMatt Peskett DDR – Double Data Rate GDDR – Graphics Double Data Rate
GPU Memory vs. CPU Memory COSC 3P93 – Parallel ComputingMatt Peskett Memory architectures (UMA, NUMA, and hUMA)
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett The graphics pipeline
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett 1) Vector shader
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett 2) Projection
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett 3) Clipping
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett 4) Rasterization
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett 5) Pixel shader
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett Texture mapping
Graphical Applications of GPUs COSC 3P93 – Parallel ComputingMatt Peskett Coherence
General Purpose GPUs COSC 3P93 – Parallel ComputingMatt Peskett Origins
General Purpose GPUs COSC 3P93 – Parallel ComputingMatt Peskett GPGPU models: Brook+, OpenCL & CUDA
CUDA Example COSC 3P93 – Parallel ComputingMatt Peskett
CUDA Example COSC 3P93 – Parallel ComputingMatt Peskett
CUDA Example COSC 3P93 – Parallel ComputingMatt Peskett
CUDA Example COSC 3P93 – Parallel ComputingMatt Peskett
CUDA Example COSC 3P93 – Parallel ComputingMatt Peskett
CUDA Example COSC 3P93 – Parallel ComputingMatt Peskett
Additional Resources COSC 3P93 – Parallel ComputingMatt Peskett Intro to Parallel Programming – Using CUDA to Harness the Power of GPUs GPU Programming for the Rest of Us OpenGL Tutorials (Basic to advanced) Parallel Computing for Graphics: Beyond Programmable Shading (Course delivered at SIGGRAPH Asia 2008, very interesting and still relevant)