THE GRAPHICS BOARD of almost every modern PC is equipped witha specialized processor for hardware-accelerated 3D graphics. Ingeneral, such modern graphics processing units (GPUs) are highly optimized data-parallel streaming processors. The major innovation in recent years was the replacement of the traditional fixed-function pipeline by a programmable pipeline, which allows the programmer to upload userwritten microprograms to be executed very fast and efficiently. Programming models for GPUs, however, differ significantly from those of traditional CPUs. Although GPU programs have a number of limitations, in the following chapters we will see that GPUs are superior to CPUs in many aspects. They turn out to be ideal for implementing object-order as well as image-order algorithms for direct volume rendering. If you want to leverage this computational power for real-time applications, it is important to know both the limitations and the strengths of the GPU programming model. This chapter gives an overview of the architecture of modern GPUs from the programmer’s point of view. We also give a couple of examples on how to access the computational power using the programming language Cg.