Are GPUs For You?

Graphics processors (GPUs) are optimized for high throughput, offering hundreds of hardware processing units (with performance up to 1 Tflop), deep multithreading in each processing element (which allows the GPU to do continue doing useful work even when some threads are stalled), and high memory bandwidth.  These hardware capabilities were originally developed to accelerate rendering of 3D models, but as programmers demanded greater programmability, GPUs have adopted general-purpose instruction sets and can be programmed with in a fairly conventional C, C++, and Fortran style.  Today's high-end GPUs offer performance in a single card that would require a large cluster if using only conventional multicore CPUs.  Speedups of 100X or more are commonly reported when accelerating an application with a GPU.  Speedups of 25X or more are common even compared to parallelization over a quad-core CPU.   However, the architecture of the GPU is better suited to certain types of applications.

Some brief highlights of the programming model:

What works well:

What doesn't work well:.

Other points to note:

When is a GPU preferable to other ways of parallelizing (e.g. a cluster)?

For more information, please contact Kevin Skadron.

Last updated 18 Oct. 2009
More information on UVACSE