Glift: generic data structures for graphics hardware
John D. Owens, Aaron Lefohn · 2006
This thesis presents Glift, an abstraction and generic template library for parallel, random-access data structures on graphics processing units (GPUs). Glift simplifies the description of new and existing GPU data structures, stimulates development of complex GPU algorithms, and performs equivalently to hand-coded implementations. Modern GPUs are the first commodity, desktop parallel processor. Although designed for interactive rendering, researchers in the field of general purpose computation on graphics processors (GPGPU) are showing that the power, ubiquity and low cost of GPUs makes them an attractive alternative high-performance computing platform. The primitive GPU programming model, however, greatly limits the ability of both graphics and GPGPU programmers to build complex applications that take full advantage of the hardware. This dissertation demonstrates the effectiveness of Glift in three ways. First, we characterize a large body of previously published GPU data structures in terms of Glift abstractions and present novel GPU data structures. Second, we show that our example Glift data structures perform comparably to handwritten implementations but require only a fraction of the programming effort. Third, we implement four novel high-quality interactive rendering applications with complex data structure requirements: octree 3D paint, adaptive shadow maps, resolution-matched shadow maps and a new depth-of-field algorithm.