Alongside the CPU, the graphics processing unit (GPU) has become one of the desktop's two major computational components. Generally, GPUs are designed to operate on data streams consisting of an ordered sequence of attributed primitives like vertices or fragments. GPU-based algorithms are now drawing interest for applications such as database and data mining queries, linear algebra computations, sorting, fast Fourier transforms, motion planning and navigation, global illumination, bioinformatics, cryptography, interference computations, and simulation of physical phenomena including fluid flows.