130 likes | 236 Views
GPU Computing with CUDA as a focus. Christie Donovan. What is GPGPU?. GPGPU is “General Purpose computation on Graphics Processing Units” Used to do general purpose scientific and engineering computing The GPU provides “hundreds of cores”
E N D
GPU Computing with CUDA as a focus Christie Donovan
GPGPU is “General Purpose computation on Graphics Processing Units” • Used to do general purpose scientific and engineering computing • The GPU provides “hundreds of cores” • Current GPUs have teraflops of floating point performance • GPU computing is basically a type of parallel programming • Use a CPU and a GPU together • The sequential part runs on the CPU • The parallel part runs on the GPU
1999-2000 Graphics chips were being used for running general purpose computational algorithms in fields such as medical imaging and electromagnetics The issue: had to use graphics programming languages, such as OpenGL and Cg to program the GPU and had to make their applications look like graphics applications 2002 The term “GPGPU” was coined by Mark Harris as a grad student who went on to work for NVIDIA and Intel 2002-2004 Brook and Sh were created
2006 NVIDIA comes out with CUDA “Compute Unified Device Architecture” 2008 AMD comes out with ATI Stream OpenCL is created Initially developed by Apple, submitted and maintained by the Khronos Group 2009 Intel acquires RapidMind
Speedups of orders of magnitude greater than just using CPU • Data doesn’t have to be divided and moved around as much • Can be combined with other types of parallel programming • CPU architecture is awaiting its next major breakthrough
Film and Entertainment - Avatar 25x speedup What would have taken a week, they did in a day and a half GIS (Geographic Information Systems) Manifold 20 minutes down to 30 seconds 30-40 sec down to real-time Supercomputing - Molecular dynamic modeling NCSA (National Center for Supercomputing Applications) Lincoln Supercomputer built with GPUs 30-60x speedup
GPU computing is easily available • Typically based on already popular languages so its easy to learn • Can be combined with other methods of parallel programming • Achieve amazing speedups