If you frequent tech blogs, sites and forums, chances are you've already heard of or have come across the term GPGPU (general-purpose computing on graphics processing units), which has already been covered in our previous article. You might also have come across the term CUDA. But what exactly is it and what does it do? This article will attempt to explain and unravel the mystery behind CUDA.
To understand CUDA, you must first know what GPGPU is. Simply put, it is the technique in which the GPU is employed to handle and perform computations that were previously handled only by the CPU. As detailed in our previous article, there are many advantages to doing so, chief amongst which is speed, but unfortunately, getting the GPU to handle tasks traditionally performed by the CPU isn't quite so simple.
Crucially, the problem lies in the fact that many of today's software are not written to take advantage of a GPU's many-core processing and execution architecture that's specifically tuned for graphics and its workloads. The GPU doesn't have the same flexibility and calculation precision as the CPU that's built for general purpose usage. In the same way you cannot understand a foreign language, the GPU cannot understand the software and what the software is asking it to do. And this is where CUDA comes in.
According to NVIDIA, CUDA is "a general purpose parallel computing architecture that leverages the parallel compute engine in NVIDIA GPUs to solve many complex computational problems in a fraction of the time required on a CPU."
Fundamentally speaking, CUDA is the means by which software engineers use to communicate and instruct GPUs to handle data. More specifically, CUDA uses a variant of the C programming language to allow software engineers to code software easily so that they can be executed on the GPU. The familiarity of the C programming language is a big bonus for developers to embrace CUDA, and for tasks that are suited to be executed simultaneously on many cores, there can be tremendous performance benefits. In fact, NVIDIA is confident that GPUs might even one day surpass CPUs as being the primary processor in your desktop.
And to help promote the use and adoption of CUDA, NVIDIA has made the CUDA SDK publicly available to all. The initial release of the SDK was back in February 2007 and has since been popularly received. Right now, many applications make use of CUDA to speed up their operations. Most notably, it has been employed in many industries that require high performance computing.