Як ви можете собі уявити, апаратна архітектура графічних процесорів може суттєво відрізнятися. Існують різні виробники, і навіть різні покоління графічних процесорів від одного виробника можуть бути не порівнянними. У той же час виробники графічних процесорів зазвичай не розголошують всіх подробиць про апаратну частину своєї продукції для громадськості. Одним із наслідків цього є необхідність використовувати пропрієтарні драйвери під Linux, якщо ви хочете повною мірою скористатися своєю графічною картою.
Fortunately an industry consortium lead by The Khronos Group has developed an open, standardized interface called OpenCL, which allows your GPU to be used 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 compiler at run-time. This way applications can use OpenCL on different GPU architectures (even at the same time). All of the 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 perform calculations for you.