Executing STL algorithms on the GPU
Graphics processing units, or GPUs, were originally designed and used for processing points and pixels for computer graphics rendering. Briefly, what the GPUs did was to retrieve a buffer of pixel data or vertex data, perform a simple operation on each one of them individually, and store the result in a new buffer (to eventually be displayed).
GPU APIs and parallel operations
The main API for programming the GPU is OpenGL, although similar functionality is available in DirectX as well.
Here are some examples of simple, independent operations that could be executed on the GPU at an early stage:
- Transform a point from world coordinates to screen coordinates.
- Perform a lighting calculation at a specific point (by lighting calculation I refer to calculating the color of a specific pixel in an image).
As these operations could be performed in parallel, the GPUs were designed for executing small operations in parallel.
Technically, a CPU commonly consists of a few...