Wie OpenCl funktioniert
Wie du dir vorstellen kannst, kann die Architektur von Grafikprozessoren deutlich variieren. Es gibt unterschiedliche Hersteller und sogar unterschiedliche Generationen von GPUs des gleichen Herstellers können nicht vergleichbar sein. Gleichzeitig legen die Grafikprozessorhersteller normalerweise nicht alle Hardwaredetails gegenüber der Öffentlichkeit offen. Eine dieser Konsequenzen ist, die Notwendigkeit proprietäre Treiber unter Linux zu benutzen, wenn du deine Grafikkarte voll ausnutzen willst.
Glücklicherweise hat ein Konsortium, angeführt von The Kronos Group, ein offenes, standardisiertes Interface entwickelt, das OpenCL genannt wird, welches erlaubt, deinen Grafikprozessor als numerisches Verarbeitungsgerät zu nutzen. OpenCL bietet eine C99-ähnliche Programmiersprache mit einem starken Fokus auf Parallelisierung. Eine Anwendung, die OpenCL benutzen möchte, benötigt den OpenCL-Sourcecode, den es zur Laufzeit an einen hardwarespezifischen Compiler weiterreicht. So können Applikationen OpenCL auf unterschiedlichen GPU-Architekturen nutzen (sogar gleichzeitig). Alle Hardware “Geheimnisse” sind in diesem Compiler versteckt und normalerweise für den Nutzer nicht sichtbar (auch nicht für die Anwendung). Der kompilierte OpenCL-Code wird in deine GPU geladen – und mit gewissen API Aufrufen – ist er jetzt bereit, die Berechnungen für dich durchzuführen.