practice
Doi: 10.1145/1400181.1400197
As the line between GPUs and CPUs
begins to blur, it’s important to understand
what makes GPUs tick.
By kayVon fatahaLian anD mike houston
a closer
Look at
GPus
A GAMER WANDERS through a virtual world rendered
in near-cinematic detail. Seconds later, the screen
fills with a 3D explosion, the result of unseen enemies
hiding in physically accurate shadows. Disappointed,
the user exits the game and returns to a computer
desktop that exhibits the stylish 3D look-and-feel
of a modern window manager. Both of these visual
experiences require hundreds of gigaflops of computing
performance, a demand met by the GPU (graphics
processing unit) present in every consumer PC.
The modern GPU is a versatile processor that
constitutes an extreme but compelling point in
the growing space of multicore parallel computing
architectures. These platforms, which include GPUs,
the STI Cell Broadband Engine, the Sun UltraSPARC
T2, and increasingly multicore x86 systems from Intel and AMD, differentiate
themselves from traditional CPU designs by prioritizing high-throughput
processing of many parallel operations
over the low-latency execution of a single task.
GPUs assemble a large collection of
fixed-function and software-program-mable processing resources. Impressive
statistics, such as ALU (arithmetic logic
unit) counts and peak floating-point
rates often emerge during discussions
of GPU design. Despite the inherently
parallel nature of graphics, however, efficiently mapping common rendering
algorithms onto GPU resources is extremely challenging.
The key to high performance lies in
strategies that hardware components
and their corresponding software interfaces use to keep GPU processing
resources busy. GPU designs go to great
lengths to obtain high efficiency and
conveniently reduce the difficulty programmers face when programming
graphics applications. As a result, GPUs
deliver high performance and expose
an expressive but simple programming
interface. This interface remains largely
devoid of explicit parallelism or asynchronous execution and has proven to
be portable across vendor implementations and generations of GPU designs.
At a time when the shift toward
throughput-oriented CPU platforms is
prompting alarm about the complexity
of parallel programming, understanding key ideas behind the success of
GPU computing is valuable not only for
developers targeting software for GPU
execution, but also for informing the
design of new architectures and programming systems for other domains.
In this article, we dive under the hood of
a modern GPU to look at why interactive
rendering is challenging and to explore
the solutions GPU architects have devised to meet these challenges.
the Graphics Pipeline
A graphics system generates images
that represent views of a virtual scene.
This scene is defined by the geometry,
ILLUS TRATION B Y DRE W FLAHER T Y