Friday, July 31, 2009

NVIDIA CUDA

NVIDIA CUDA GPGPU technology logo

What is NVIDIA CUDA? If you've read our previous post here, you'll get a brief understanding of CUDA, which is basically NVIDIA's implementation of GPGPU technology by supporting programs (and games) designed to take advantage of CUDA. GPGPU is explained below.

CUDA is found on GeForce 8 series of 3D gaming and multimedia graphics card and above - as well as Quadro FX professional workstation video cards. This is possible because since GeForce 8, as well as the new Quadro, the design of the graphics processor (the GPU) on the card has changed. In fact, it's more like a CPU (the processor on the mainboard) now. Hence what you have is a GPU that functions like a CPU, and is known as GPGPU. But how did this come about and why? Read on.

In the past, GPUs work in seperate processing methods - one part of the GPU will do the processing of the 3D structure, while the other part will then process the image on the structure - think of it like how when you construct a building you first have to build the framework before you can install the windows and floors.

That worked fine for awhile, until 3D games began to get more demanding and this was a poor allocation of GPU resources - what happens if you had more structures to show but less textures and surfaces? Or the other way around? Hence the birth of the new GPU known as Unified Shader Architecture, which combines the mini processes inside the GPU into a single block which can process anything given to it dynamically. So what you have now is one large processor.

So since you have a CPU in a GPU, now you can also use it for processing programs asides from just processing 3D graphics in games (or processing 3D scenes for Quadro cards). In comes CUDA which allows this since the GPU is still not a full CPU so you need an interface medium.

What can CUDA do? Basically anything that a CPU can do - except programs have to be made to take advantage of CUDA for this to happen, so that will take time. Some of the early programs include video conversion tools.

BadaBoom CUDA media converter
BadaBoom Media Converter using NVIDIA CUDA GPGPU technology

This converting (transcoding) process takes up time and if you were to run it on your CPU, not only will you won't be able to do other tasks on your computer because your CPU is busy with the process, it will also be slower since CUDA is a newer technology which can be done from scratch to be optimised faster. One such CUDA transcoder is BadaBoom.

Photoshop plugin
An image filter plugin in Adobe Photoshop

Then there's also the ability to use CUDA for image processing, like running plugin filters in Adobe's Photoshop. Again, this takes time on the CPU so for large images, it will be faster on CUDA. You can also use CUDA for games. That's where Microsoft's Windows DirectX 11's Compute Shader comes in, found in Windows 7. But we'll leave that for another post.

More Data?