General-Purpose graphics processor
The general idea
Graphics processing units (GPUs) have very fast memory interfaces and, in higher-end models, a very large amount of parallelism. This makes them tempting targets for implementing compute-intensive tasks on the cheap.
However, they are not designed to be programmed with a general-purpose workload. Also, rendering 3D graphics is not accuracy-critical (the odd incorrect pixel is not noticeable within limits) so the floating-point implementation may lack accuracy compared with a conventional processor.
The challenge
- focussing on one specific range of GPUs where documentation is available
- understanding the programming model and its limitations
- analysing the potential for performance gains taking into account extra overheads like communication with the GPU
- working through an example of significant size to clarify the issues
The programming tools in this area are a work in progress so a complete working implementation while desirable is not essential, so be prepared to do an analytical evaluation.
