Monday, June 30, 2008
Nvidia's CUDA: The End of the CPU?
Posted by Suhit Gupta in "Digital Home Hardware & Accessories" @ 05:00 AM
"The operation of a GPU is sublimely simple. The job consists of taking a group of polygons, on the one hand, and generating a group of pixels on the other. The polygons and pixels are independent of each other, and so can be processed by parallel units. That means that a GPU can afford to devote a large part of its die to calculating units which, unlike those of a CPU, will actually be used. GPUs differ from CPUs in another way. Memory access in a GPU is extremely coherent – when a texel is read, a few cycles later the neighboring texel will be read, and when a pixel is written, a few cycles later a neighboring pixel will be written. By organizing memory intelligently, performance comes close to the theoretical bandwidth. That means that a GPU, unlike a CPU, doesn’t need an enormous cache, since its role is principally to accelerate texturing operations. A few kilobytes are all that’s needed to contain the few texels used in bilinear and trilinear filters."
The article is not only a great history lesson in the GPU but also raises some good though provoking questions, like what kind of processing should be done on the CPU vs the GPU, how much should the CPU be coordinating video processing, etc. Overall, the direction in which we are moving is somewhat expected really -- i.e. specialized hardware created for various types of processing. Furthermore, the introduction of CUDA, with the GeForce 8800 series, application developers have a whole new level of control of the GPU cores. Have any of you used the beta APIs?