The main strong point of CUDA is highly parallel number crunching. Fortunately, this is a very common type of problem encountered in many high performance computing problems. Here is a list of some example applications which have been created using CUDA to achieve maximum performance that is simply not possible on a CPU alone.
Fast Video Transcoding
Transcoding is a very common, and highly complex procedure which easily involves trillions of parallel computations, many of which are floating point operations. Applications such as Badaboom have been created which harness the raw computing power of GPUs in order to transcode video much faster than ever before. For example, if you want to transcode a DVD so it will play on your iPod, it may take several hours to fully transcode. However, with Badaboom, it is possible to transcode the movie or any video file faster than real time.
Complicated video enhancement techniques often require an enormous amount of computations. For example, there are algorithms that can upscale a movie by using information from frames surrounding the current frame. This involves too many computations for a CPU to handle in real time. ArcSoft was able to create a plugin for it’s movie player which uses CUDA in order to perform DVD upscaling in real time! This is an amazing feat, and greatly enhances any movie watching experience if you have a high definition monitor. This is fine example of how mainstream programs are harnessing the computational power of CUDA in order to delight their customers. Another fine example would be vReveal, which is able to perform a variety of enhancements to motion video, and then save the resulting video.
Oil and Natural Resource Exploration
The first two topics I talked about had to do with video, which is naturally suited for the video card. Now it’s time to talk about more serious technologies involving oil, gas, and other natural resource exploration. Using a variety of techniques, it is overwhelmingly difficult to construct a 3d view of what lies underground, expecially when the ground is deeply submerged in a sea. Scientists used to work with very small sample sets, and low resolutions in order to find possible sourses of oil. Because the ground reconstruction algorithms are highly parallel, CUDA is perfectly suited to this type of challenge. Now CUDA is being used to find oil sources quicker.
CUDA is a significant advancement for the field of medical imaging. Using CUDA, MRI machines can now compute images faster than ever possible before, and for a lower price. Before CUDA, it used to take an entire day to make a diagnosis of breast cancer. Now with CUDA, this can take 30 minutes. In fact, patients no longer need to wait 24 hours for the results, which will benefit many people.
In the raw field of computational sciences, CUDA is very advantageous. For example, it is now possible to use CUDA with MATLAB, which can increase computations by a great amount. Other common tasks such as computing eigenvalues, or SVD decompositions, or other matrix mathematics can use CUDA in order to speed up calculations.
I personally worked on a program which required the training of several thousand neural networks to a large set of training data. Using the Core 2 Duo CPU that was available to me, it would have taken over a month to get a solution. However, with CUDA, I was able to reduce my time to solution to under 12 hours.
Gate-level VLSI Simulation
In college, my friend and I were able to create a simple gate-level VLSI simulation tool which used CUDA. Speedups were anywhere form 4x to 70x, depending on the circuit and stimulus to the circuit.
Fluid dynamics simulations have also been created. These simulations require a huge number of calculations, and are useful for wing design, and other engineering tasks.