hoe opencl werkt
Zoals je jou kan voorstellen, kan de hardware-architectuur van GPU’s aanzienlijk variëren. Er zijn verschillende fabrikanten en zelfs verschillende generaties GPU’s van dezelfde fabrikant zijn mogelijk niet vergelijkbaar. Tegelijkertijd onthullen GPU-fabrikanten normaal gesproken niet alle hardwaredetails van hun producten aan het publiek. Een van de gevolgen hiervan is de noodzaak om propriëtaire stuurprogramma’s onder Linux te gebruiken, als je volledig wilt profiteren van jouw grafische kaart.
Gelukkig heeft een industrieconsortium onder leiding van The Khronos Group een open, gestandaardiseerde interface ontwikkeld, OpenCL genaamd, waarmee je jouw GPU kan gebruiken als een numeriek verwerkingsapparaat. OpenCL biedt een C99-achtige programmeertaal met een sterke focus op parallel computing. Een toepassing die OpenCL wil gebruiken, heeft OpenCL-broncode nodig die het tijdens runtime aan een hardwarespecifieke compiler overhandigt. Op deze manier kunnen applicaties OpenCL gebruiken op verschillende GPU-architecturen (zelfs tegelijkertijd). Alle hardware “geheimen” zijn verborgen in deze compiler en zijn normaal gesproken niet zichtbaar voor de gebruiker (of de applicatie). De gecompileerde OpenCL-code wordt op jouw GPU geladen en - met bepaalde API-aanroepen - klaar om berekeningen voor jou uit te voeren.