CUDA from NVIDIA - Turbo-Charging High Performance Computing
In our previous article, we've already offered an introduction into the world of parallel computing, the benefits it'll bring and the obstacles it has to overcome. Now, we take a look closer look at one of the technologies that is powering it. CUDA, from NVIDIA.
By Kenny Yeo -
Ladies & Gentlemen, Meet CUDA
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."
A flow-chart showing how CUDA allows the GPU to work in tandem with the CPU. Note how data is executed simultaneously in "parallel" to other cores. Source: Wikipedia
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.
CUDA in High Performance Computing
Apart from CUDA, NVIDIA has also introduced their Tesla line of general-purpose GPUs. These GPUs are not responsible for displaying images onto displays, rather, alongside with CUDA, they are intended for high performance computing. To be specific, NVIDIA touts the Tesla as being able to provide the same computing power as a cluster processing, but at only a tiny fraction of the space, price and power consumption.
Though resembling a normal graphics card and using the same GPU technology as the desktop counterparts, the Tesla forgoes the additional display output circuitry and processing chip while being highly optimized for general purpose stream processing tasks. NVIDIA even has Tesla Supercomputers and Tesla Computing Servers which are basically several Tesla cards stacked together for massive parallel processing.
There are many instances where CUDA-enabled Tesla GPUs have had a positive effect in industries and services where high performance computing is essential, and Geographic Information Services (GIS) is one of them.
A GIS is a system which captures, stores, analyzes and shares geographic information. It is important because city planners and businesses use it alongside with other data to do all sorts of things such as monitor water levels, track emergency calls and identify sewerage leakages. Given that it manages and tracks a geographic location, huge amounts of data are naturally involved, and operations on the GIS can take as long as 20 minutes to complete, even on a high-end system.
Geographic Information Services is extremely data intensive, and operations can sometimes take minutes to perform. GPGPU allows this data to be quickly computed to provide useful information. Source: Manifold.net
Fortunately, Manifold.net, a leading GIS developer saw the potential of GPGPU and proceeded to convert its software to the CUDA platform. Release 8.00, Manifold.net's latest GIS then became the first GIS in the world to make use of CUDA technology and the benefits were jaw-dropping. With a CUDA-enabled system, Manifold.net reported that calculations which used to take 20 minutes now take only 30 seconds, while those that used to take 30 seconds, are now completed in real-time. In light of such substantial improvements, Dimitri Rotow, Product Manager of Manifold.Net, even commented that CUDA technology could be the most revolutionary development in computing since the microprocessor.
CUDA in High Performance Computing... (continued)
Elsewhere, NVIDIA and CUDA have also made significant contributions in the life sciences and petroleum industry.
In life sciences, NVIDIA and CUDA have helped Evolved Machines reverse engineer brain circuits to develop a new paradigm for device technology, where the simulation of a single brain neuron involves over 200 million differential equation evaluations, or four gigaFLOPS a second. So powerful are the GPUs that the company claims that a single desktop system with two GPUs runs as fast as a traditional 200-core server cluster.
The human brain is exceedingly complex and a single neuron alone requires over 200 million differential equations to simulate. We can speed these calculations up immensely with the help of GPUs. Source: Desktop Engineering
GPGPU using NVIDIA and CUDA have also helped speed up the detection of harmful diseases like breast cancer. At the University of Wisconsin-Madison, researchers make use of GPU computing solutions to rapidly speed up the time it takes to generate three-dimensional images of a full breast scan. Fortunately, the power of GPGPU computing allows these scans, which used to take days, to be generated in only a matter of hours. This helps speed up the detection process, which in turn greatly improves the chances of recovery.
In a time when oil and gas are becoming increasingly scarce, NVIDIA and CUDA have also made it possible for the discovery of new oil fields thousands of feet underground and achieve better yields due to accurate simulation. Thanks to GPGPU computing solutions employed by geophysical data analysis specialists Headwave, geophysicists are able to quickly analyze large multi-terabytes datasets, and are able to determine and locate underground oil fields with increased accuracy and efficiency. You can read more on this from our .
It takes lots of computing power to go through multi-terabytes of geophysical data. Thanks to the power of GPGPU, however, processes that used to take hours can now be accomplished in minutes.
iSteve Briggs, Headwave's VP of Integration and Deployment, who saw the potential of GPGPU says, "One of the things that's exciting about GPUs is that you get vastly more compute power for the same wattage and density. They're running out ahead of what the standard CPUs are achieving." In fact, GPGPU has helped Headwave accelerate application performance by as much as 100 times. Owning to the success they've enjoyed, some of their customers are already thinking of clustered GPUs.
CUDA Elsewhere
As you can see from the few examples provided here, the performance gain from GPGPU is undeniable. Processes that used to take days now take only hours; and those that used to take minutes can now be accomplished in real time. And we have CUDA to thank for all of this, as it has truly unlocked the potential of GPGPU on NVIDIA graphics cards.
Of course, NVIDIA and CUDA are not the only players in the GPGPU market. NVIDIA's fierce competitors, ATI, and their Stream solution are slowly making incursions into the world of GPGPU computing as well. However, their inability to get into this market quick enough has helped give NVIDIA a remarkable head start.
NVIDIA's Quadro is specially suited for professionals in the digital content creation, computer assisted design and video production industry. We'll cover Quadro in depth in our next feature article.
Of course, the application of CUDA is much more far reaching and is not limited to just the realm of high performance computing. In fact, the benefits of NVIDIA and CUDA can be seen in other aspects too, such as at the workplace with their Quadro line of graphics card, which is aimed at professionals doing digital content creation, computer aided design and video production; and at home, with their gaming-centric GeForce line of graphics cards. Stay tuned to next week's special as we take a closer look at how NVIDIA's Quadro can help professionals with the work they do.
Our articles may contain affiliate links. If you buy through these links, we may earn a small commission.