Saturday, October 2, 2010

GPU Computing – From graphics operations to specialized high performance general purpose computing

A graphics object consists of a number of vertices, interrelationship among those vertices, color, lighting, and texture information of those vertices and how to render them onto display. So with advancement of complex graphics objects where billions of vertices have to be taken into account, normal processors are not efficient enough to perform graphics operation especially in real time constraint. So there need a special type of processor that will perform graphics operations efficiently. So Graphics Processing Unit came into existence.
Graphics Processing Unit:
A Graphics Processing Unit (GPU) is conventionally a specialized microprocessor for graphics operation. A GPU’s primary job is to accelerate the rendering of graphics objects onto a display.
In graphics operations, vertices manipulation are specified by vertex shader and attributes (Information about the vertices, i.e: color information, lighting, texture, and other associated data) manipulation are specified by pixel shader. A shader is basically a subroutine or program to be executed within the GPU which is used to transform the input data into the appropriate output data needed to calculate or define some aspect of the final image.

In GPU the calculations for one pixel is generally independent of every other pixel, the architecture of the GPU has evolved to process many hundreds of pixels simultaneously. In support, the GPU can be executing shaders and resolving data values from thousands of geometric objects concurrently.

In the past two decades, GPU has made enormous advancement in performance and capability. GPU evolution in the past two decades has consumed transistors at a very high rate, more than doubling for every one and half years. NVIDIA’s latest GPU chip in 40nm technology employs billions of transistors.

So massive parallelism makes its operation not limited to only graphics area. The modern GPU is not only a powerful graphics engine but also a highly parallel programmable processor featuring peak arithmetic and memory bandwidth that substantially outpaces its CPU counterpart. The GPU’s rapid increase in both programmability and capability has created a research community that has successfully mapped a broad range of computationally demanding, complex problems to the GPU. It is being applied to some of the most complex parallel computing problems which were only addressable by supercomputers in the past. The use of high performance GPUs as supercomputers opens new opportunities for many applications that can use the GPU’s massively parallel computational capabilities and can benefit from its cost and availability. Examples related to areas such as seismic detection, oil exploration, medical imaging. These efforts in general purpose computing on the GPU, also known as GPU computing, has positioned the GPU as a compelling alternative to traditional microprocessors in high-performance computer systems of the future.

The GPU is designed for a particular class of applications with the following characteristics.

·         Computational requirements are large: Real-time rendering requires billions of pixels per second, and each pixel requires hundreds or more operations.

·         Parallelism is substantial: Fortunately, the graphics pipeline is well suited for parallelism.


·         Throughput is more important than latency: GPU implementations of the graphics pipeline prioritize throughput over latency. The human visual system operates on millisecond time scales, while operations within a modern processor take nanoseconds. This six-order-of-magnitude gap means that the latency of any individual operation is unimportant.

Modern application of GPU:

·         Differential equations: The earliest attempts to use GPUs for nongraphics computation are solving large sets of differential equations. GPUs have been heavily used to solve problems in partial differential equations (PDE).

·         Linear algebra: Sparse and dense linear algebra routines are the core building blocks for a huge class of numeric algorithms, including many PDE solvers mentioned above. Applications include simulation of physical effects such as fluids, heat, and radiation.

·         Search and database queries: Researchers have also implemented several forms of search on the GPU, such as binary search and nearest neighbor search as well as high-performance database operations that build on special-purpose graphics hardware.


Experience has shown that when algorithms and applications can follow design principles for GPU computing such as the PDE solvers, linear algebra packages, and database systems referenced above, they can achieve 10–100 times speedups over even mature, optimized CPU codes.

Can the GPUs outpace the CPUs?

Contributed by: Subhasis Koley, CSE, MIT

No comments:

Post a Comment