darktable page lede image
darktable page lede image

10.2.2. Jak działa OpenCL

Jak łatwo sobie wyobrazić, architektury sprzętowe GPU znacząco różnią się między sobą. Różnią się producenci, różnią się nawet generacje kart tego samego producenta. Twórcy nie przekazują wszystkich szczegółów sprzętowych swoich produktów społeczności. Dlatego też, jeśli chcesz w pełni wykorzystać możliwości swojej karty graficznej, konieczne może może okazać się skorzystanie pod Linuksem ze sterowników własnościowych.

Na szczęście konsorcjum przemysłowe pod wodzą The Khronos Group stworzyło otwarty, standaryzowany interfejs zwany OpenGL. Pozwala on skorzystać z GPU jako urządzenia do obliczeń numerycznych. OpenCL zawiera język programowania w typie C-99, ukierunkowany na obliczenia równoległe. Aplikacja, chcąca skorzystać z OpenCL wymaga jego kodu źródłowego, który przekaże do dedykowanego dla konkretnego urządzenia kompilatora czasu rzeczywistego OpenCL. W ten sposób aplikacja może używać OpenCL na różnych architekturach (nawet w tym samym czasie). Cała specyfika sprzętu pozostaje ukryta w kompilatorze i nie jest normalnie widoczna ani dla użytkownika, ani dla aplikacji. Skompilowany kod OpenCL jest ładowany do GPU, a następnie – poprzez API – staje się dostępny dla ciebie do wykonania obliczeń.