sposób działania opencl
Jak możesz sobie wyobrazić, architektura sprzętowa procesorów graficznych może się znacznie różnić. Istnieją różni producenci, a nawet różne generacje procesorów graficznych tego samego producenta mogą nie być porównywalne. Jednocześnie producenci procesorów graficznych zwykle nie ujawniają publicznie wszystkich szczegółów sprzętowych swoich produktów. Jedną z konsekwencji tego jest konieczność używania własnościowych sterowników pod Linuksem, jeśli chcesz w pełni wykorzystać swoją kartę graficzną.
Na szczęście konsorcjum branżowe, kierowane przez The Khronos Group opracowało otwarty, ustandaryzowany interfejs o nazwie OpenCL, który umożliwia wykorzystanie procesora graficznego jako urządzenia do przetwarzania numerycznego. OpenCL oferuje język programowania podobny do C99, z silnym naciskiem na przetwarzanie równoległe. Aplikacja, która chce korzystać z OpenCL, będzie potrzebowała kodu źródłowego OpenCL, który przekazuje kompilatorowi specyficznemu dla sprzętu w czasie wykonywania. W ten sposób aplikacje mogą używać OpenCL na różnych architekturach GPU (nawet jednocześnie). Wszystkie „tajemnice” sprzętowe są ukryte w tym kompilatorze i zwykle nie są widoczne dla użytkownika (lub aplikacji). Skompilowany kod OpenCL jest ładowany do procesora graficznego i jest — dzięki określonym wywołaniom interfejsu API — gotowy do wykonania obliczeń.