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