Technics‎ > ‎

Alternative Parallel Processing

The GPU and 3D games

Actually its normal to find processors with several cores. Today, even cellular phones have processors with dual or quad cores.
The processor was always, as it says it’s name, the hardware corner stone for the computing process. The computation itself.
But the truth is that since several years ago exists a hardware component with a higher processing level for some kind of calculus or computation, this component is the GPU (Graphic Processing Unit).
The main use of the GPU is for hardcore gaming, that is basically 3D videogames that require a high amount of calculus for textures and rendering 3D worlds with their models, physics, actions, lights, shadows, collisions and everything a 3D game needs. For this kind of calculus, the GPU overpass the CPU radically because of its design, architecture, memory and bus speeds among other things.


A few years ago nVidia, one of the leading GPUs manufacturers, released CUDA (Compute Unified Device Architecture). In other words, a way to make programs that can use the GPU to make the computing. The question is, why do I need to make the process with the GPU?, I’ve already have a CPU for that. Well, even the fastest desktop processor can not compete with the performance of an average GPU. 
To make simples comparisons, the GPU nVidia 680 has 1536 CUDA cores, 1 GHz of clock speed, 3GHz of memory speed DDR5 with a good bandwith! (192GB/sec).

Unleash the power of the GPU

With CUDA, it’s possible to make programs in CUDA C, that's just C with the integration of the CUDA library (cuda.h), making it possible the use of the GPU for the computing. The real advantage is parallel processing. Just imagine how many simultaneous calculus can make 1536 cores, and that if you only use one GPU. It’s possible to connect 2 GPUs using a technology named SLI.
Today, several supercomputers have started to use farms of GPUs interconnected to do high performance computations. And with CUDA and a nVidia GPU it’s possible to have supercomputer power with a Desktop PC.
CUDA is available for Linux, Mac and Windows. Even it’s possible to use CUDA with a single video card, it’s recommended to have a spare video card to render all OS video output, and leave the nVidia CUDA compatible card to make the computing. If not, all video output may crash.

GPU for all

Many current software packages are starting to use GPU for calculations, that includes for example Matlab, Photoshop, or even Sony Vegas Video. The GPU power is real, and it’s not just for games. Programming in CUDA C is very easy, and very similar to ANSI C. Even the technology is proprietary (that’s a drawback), it’s well documented, and has many information sources. So, for the next CPU intensive consider using your nVidia GPU.
To see a nVidia CUDA compatible cards check this link:

Some examples

The performance difference in a simple example multiplying a big matrix is overwhelming. A nVidia GeForce 8500GT takes only 608 ms to multiply a 1536x1536 integer matrix. That's nothing compared to the same calculus with an Intel dual core at 3.00GHz, it took 32000ms with 1 thread and 19000ms with 8 threads. An old GPU like the 8500GT with 16 CUDA cores took 0.6 seconds, vs 32 seconds with a 3GHz Intel processor. That's a big difference.