GeneralPurposeGraphicsProcessUnits (GPGPUs) are GraphicsProcessUnits (GPUs) which have been adapted to make them usable for general purpose computing. The GPUs themselves are capable of such use, but these are changed in several ways. The latest ones have an increased capability for double precision processing. As such they have the potential to reduce the cost of hardware for very intensive computations, particularly involving LinearAlgebra.
The hardware design for graphical use means that in most cases the performance on single precision floating point is much better than on double precision floating point, because there are more parallel units for single precision.
One example of software is the ComputeUnifiedDeviceArchitecture (CUDA) from NvidiaCorporation. This now also uses the ThrustLibrary.
OpenCl provides a standard for programming on GPGPUs from different manufacturers.
The MagmaLibrary is built on top of CUDA and includes some routines which are designed to achieve a double precision result by first calculating a single precision result and then using iteration to improve it. For larger matrix cases this turns out to be quicker than solving the double precision result directly.
CudaMpi is software which combines CUDA with the MessagePassingInterface so that several GPGPUs can be used on the same task.
See also LinearAlgebraPackage
http://gpgpu.org/ (GPGPU dot ORG) is a good site for developments in software for GPGPUs.
CategoryHardware CategoryComputerArchitecture ParallelProgrammingModel CategoryGpgpu