Computer Graphics World

SEPTEMBER 09

Issue link: https://digital.copcomm.com/i/2965

Contents of this Issue

Navigation

Page 11 of 51

September 2009 10 A Balanced Approach A s evidenced by their use in the highly interactive 3D games available today, modern graphics processing units (GPUs) are very efficient at manipulating raster graphics. What is not as well known is that the highly parallel structure and compu- tational power of GPUs also makes them extremely effective for handling more general, computationally intensive, and demand- ing algorithms. Using graphics processors to do things other than graphics is a disruptive technology (it has a large impact within the industry) that has been an active area of research as far back as the late 1970s, with work on Ikonas [England, 1968], one of the first commer- cial graphics companies and chips. Using rasterization hardware to perform motion planning [Lengyel, et al. 1990], calculate Voronoi diagrams [Hoff, et al, 1999], simulate neural networks [Bohn, 1998], and crack passwords [Kedem and Ishihara, 1999], among many other examples, became the basis for continued ac- tive research as commodity graphics engines became more widely available and powerful. e first wave of truly programmable GPUs, early in this de- cade, brought about many more advanced algorithms running on them, including advanced image processing, raytracing, cellular automata, linear algebra, physics, and database operations. Run- ning these applications on programmable GPUs was the start of the general-purpose GPU (GPGPU) computation revolution. In graphics-oriented conferences, such as SIGGRAPH, there was an increased interest in advanced research in computational photography, image processing, raytracing, and advanced shad- ing effects, all going beyond what is available using traditional graphics application programming interfaces (APIs). is is also when the immense processing power of GPUs was noticed in other fields, and publications about their use can be found in areas from finance to biology, often demonstrating large perfor- mance increases. Most of the original GPGPU work was done by changing the compute algorithm to fit the programming models of graphics APIs, such as OpenGL or Microsoft DirectX. As a simple example, to perform computation at each pixel in a 2D image, developers would bind a simple shader program, written in a graphics shad- ing language, like HLSL or GLSL, and, at times, even pseudo- assembly, like ARB_fragment_program, then render a full-screen quad the size of the output image. While there was a tremendous amount of research using graph- ics APIs, this was a difficult approach for developers who were not proficient with graphics APIs. Consequently, the academic research community began to design languages to abstract the GPU as a compute engine, hiding the use of the graphics APIs behind more compute-friendly programming interfaces. Per- haps the two best-known examples of this are Brook, developed at Stanford, and Sh, developed at the University of Waterloo. (Brook evolved into AMD's Brook+; Sh eventually was commer- cialized by RapidMind.) Until recently, even with more compute-oriented program- ming interfaces, computation on GPUs has remained primarily a research technology used by early adopters—a new, promising, experimental capability for scientists, engineers, financial profes- sionals, and others running computationally intensive applica- tions. Mainstream adoption, however, was low. Basically, two issues have kept GPU computing from gaining wide adoption: First, available GPU compute APIs were propri- etary, targeting a single vendor's architecture; second, the GPU has been treated as an independent application accelerator, as opposed to being part of a larger, balanced, heterogeneous plat- f orm working with other computational resources. GPUs By Mike Houston Mike Houston is a senior system ar- chitect in the Advanced Technology Development group at AMD in San- ta Clara, CA, working in architecture design and programming models for parallel architectures. He received his PhD in Computer Science from Stanford University, focusing on research in programming models, algorithms, and runtime systems for parallel architectures, including GPUs, cell, multi-core, and clusters.

Articles in this issue

Archives of this issue

view archives of Computer Graphics World - SEPTEMBER 09