Como puede imaginarse, las arquitecturas del hardware de los GPUs pueden variar significativamente. Hay diferentes fabricantes, e incluso diferentes generaciones de GPUs del mismo fabricante. Al mismo tiempo, los fabricantes de GPU usualmente no difunden todos los detalles de hardware de sus productos al público. Una de las consecuencias es la necesidad de utilizar drivers propietarios bajo Linux, si quiere tomar completa ventaja sobre su tarjeta gráfica.
Fortunately an industry consortium lead by The Khronos Group has developed an open, standardized interface called OpenCL. It allows the use of your GPU as a numerical processing device. OpenCL offers a C99-like programming language with a strong focus on parallel computing. An application that wants to use OpenCL will need OpenCL source code that it hands over to a hardware specific OpenCL compiler at run-time. This way the application can use OpenCL on different GPU architectures (even at the same time). All hardware “secrets” are hidden in this compiler and are normally not visible to the user (or the application). The compiled OpenCL code is loaded onto your GPU and – with certain API calls – it is ready to do calculations for you.