The general purpose computing on graphics processing unit (GPGPU) recognizes the trend to employ GPU technology for non-graphic applications. Until 2006, the graphics API OpenGL and DirectX standards were the only ways to program with the GPU. Any attempt to execute arbitrary calculations on the GPU was subject to the programming restrictions of those APIs.
The GPUs were designed to produce a color for each pixel on the screen using programmable arithmetic units called pixel shaders. The programmers realized that if the inputs were numerical data, with a different meaning from the pixel colors, then they could program the pixel shader to perform arbitrary computations.
The GPU was deceived by showing general tasks such as rendering tasks; this deception was intelligent, but also very convoluted.
There were memory limitations because the programs could only receive a handful of input color and texture...