https://www.nvidia.com/content/PDF/...DIA_Fermi_Compute_Architecture_Whitepaper.pdf
Efforts to exploit the GPU for non-graphical applications have been underway since 2003. By using high-level shading languages such as DirectX, OpenGL and Cg, various data parallelalgorithms have been ported to the GPU. Problems such as protein folding, stock options pricing, SQL queries, and MRI reconstruction achieved remarkable performance speedups on the GPU. These early efforts that used graphics APIs for general purpose computing were known as GPGPU programs.
While the GPGPU model demonstrated great speedups, itfaced several drawbacks. First, itrequired the programmer to possess intimate knowledge of graphics APIs and GPUarchitecture. Second, problems had to be expressed in terms of vertex coordinates, texturesand shader programs, greatly increasing program complexity. Third, basic programming features such as random reads and writes to memory were not supported, greatly restricting the programming model. Lastly, the lack of double precision support (until recently) meantsome scientific applications could not be run on the GPU.
To address these problems, NVIDIA introduced two key technologies—the G80 unified graphics and compute architecture (first introduced in GeForce 8800®, Quadro FX 5600®, andTesla C870®GPUs), and CUDA, a software and hardware architecture that enabled the GPU to be programmed with a variety of high level programming languages. Together, these two technologies represented a new way of using the GPU. Instead of programming dedicated graphics units with graphics APIs, the programmer could now write C programs with CUDA extensions and target a general purpose, massively parallel processor. We called this new way
of GPU programming “GPU Computing”—it signified broader application support, widerprogramming language support, and a clear separation from the early “GPGPU” model ofprogramming.
So GPGPU is dead, long live GPU-Computing ... (addition for the archives)