A paradigm shift for high-performance computing
In January we gave NVIDIA’s CUDA (Compute Unified Device Architecture) software tools that allows C programmers to use multiple high-performance GPU cards to perform massively parallel computations our Product of the Year award. Complex computational problems in consumer, business, and technical applications can take an eternity on a standard PC, but CUDA enables a tremendous performance improvement by operating on large quantities of data in parallel using GPU cards. And, programmers can use CUDA’s ability to have threads communicate when solving a problem.
The background of this software is interesting. Stanford, the University of Waterloo, and the University of North Carolina at Chapel Hill were among the first to explore using GPUs for general-purpose computing in the early 2000s. They demonstrated the raw parallel-computing horsepower of GPUs for scientific and technical computing, albeit by using contemporary graphics programming environments. The performance improvements these researchers achieved were phenomenal, but recasting scientific applications to make them look like a graphics algorithm was difficult and thus remained limited mostly to expert computer programmers.
NVIDIA saw the potential in this work and decided to pursue scientific computing as a key market. They realized early that for broad appeal, they had to re-architect the GPU to make it more general purpose and develop a simple programming environment that would be easy to use for computational biologists, chemists, mathematicians, and the like.
NVIDIA recruited John Nickolls, the chief architect of the massively parallel high-performance computing MasPar chip, as the chief architect of this new “computing” GPU architecture. They then paired Nickolls with Ian Buck, who developed the “Brook” parallel programming language to target GPUs as part of his Ph.D. thesis at Stanford.
Together these two headed up a team that co-designed the first instance of the many core general-purpose GPU (the G80) based on CUDA. CUDA is a combination of a massively parallel computing architecture and a complete C-based software infrastructure (compiler, libraries, etc.) to program it. This tool has propelled GPU computing to become a paradigm shift for high-performance computing.
Jim Harrison
Learn more about NVIDIA