What the Heck is… GPU?

workers

Most of us know that CPU or “central processing unit” is the brains of our laptops, workstations, servers, and smart phones.  As games and other 3D applications have grown in popularity, a specialized processor known as the “graphics processing unit” or GPU has become more important.  GPUs are the chips that perform the math and geometry calculations necessary to render the 3D scenes in a game or render the battle scenes and animate Gollum in the Lord of the Rings movies.

The power of CPUs has continued to grow at extraordinary rates since the 1960’s, enabling devices that are faster, smaller, lighter, and more powerful.  Despite this accelerating computing power, however, we have found that many types of analytical tasks – from calculating the effects of climate change on sea level rise to calculating walksheds – remain too costly (in terms of computing time) to be run on the web with more than a small number of users.  In 2006, we began attacking this performance and scaling problem with the development of our DecisionTree platform.  Originally designed for supporting business siting and real estate decisions, DecisionTree optimized the performance of each calculation by breaking it up into small chunks, distributing the work amongst several “workers” and then reassembling the results.  This “distributed computing” approach worked for this particular scenario, and we are now able to perform a calculation that previously required several seconds in 500 milliseconds or less, enabling the development of software like the City of Asheville’s Priority Places.

GPUs enable us to potentially extend this approach. The CPU in a contemporary laptop or workstation may have two or perhaps even four “cores”.  However, while multi-core CPUs are a relatively recent development, GPUs have been multi-core for many years – a contemporary GPU processor may have 250, 500 or even 1,000 cores on a single chip.  While these GPU cores are smaller, simpler and tightly focused on the mathematical calculations used for rendering images, a few years ago some scientists got the idea that they might be able to hijack all those cores to perform certain types of scientific computing tasks more rapidly by breaking up the work and performing it on all of those hundreds of GPU cores at once.  Thus was born General Purpose computing for GPUs or “GPGPU”.  GPU computing is transforming medical imaging, fluid dynamics, and other fields that can take advantage of this type of capability.

nsf_logoUsing GPUs is not a straightforward task.  In order to use all of those cores, we frequently need to completely re-think a given algorithm.  For the past six months, with support from the National Science Foundation’s SBIR program,  we have been developing GPU versions of several Map Algebra operations aimed at testing the feasibility of using GPUs to make radical improvements in the speed of raster GIS processing. We have made good progress with some operations accelerated more than 75 times.  We are not the only ones thinking about this, and we are incredibly excited about the potential to have a big impact on the responsiveness and scalability of GIS applications.

If you are interested in learning more about the technical details of working with GPUs, check out David Zwarg’s 6-part series on GPU computing in the Azavea Labs blog.  What new GIS applications do you think will be made possible with GPUs?  If you have some ideas, get in touch.

Post a Comment

Your email is never shared. Required fields are marked *

*
*

More in Vol. 5 Issue 3, July 2010 (3 of 8 articles)