| Termin | Definicja |
|---|---|
| OpenCL 2.2 | OpenCL 2.2 to kolejna wersja standardu, integrująca funkcje języka C++ do pisania kerneli obliczeniowych. OpenCL 2.2 jako standard obliczeń heterogenicznychOpenCL 2.2 jest wersją standardu Khronos Group przeznaczoną do uruchamiania obliczeń równoległych na różnych typach urządzeń: procesorach CPU, kartach graficznych GPU, układach zintegrowanych oraz innych akceleratorach. Standard opisuje zarówno model wykonania kerneli, jak i interfejs API używany przez program działający na komputerze gospodarzu. Program hosta wybiera platformę OpenCL, wykrywa urządzenia, tworzy kontekst, przygotowuje kolejki poleceń i przekazuje do wykonania funkcje kerneli. Najbardziej charakterystyczną zmianą w OpenCL 2.2 jest wprowadzenie języka OpenCL C++, określanego także jako C++ for OpenCL. Jest to język kerneli oparty na OpenCL C oraz wybranym podzbiorze standardu C++14. Pozwala stosować między innymi klasy, szablony, przeciążanie funkcji i operatorów oraz wyrażenia lambda, ale nie oznacza pełnej zgodności z dowolnym programem C++ przeznaczonym dla systemu operacyjnego. Kod kernela nadal podlega regułom modelu pamięci i wykonywania OpenCL. Kernel C++ i ograniczenia modelu wykonaniaKernela OpenCL 2.2 nie uruchamia się jako zwykłej aplikacji C++ na procesorze. Jest on kompilowany przez implementację OpenCL dla konkretnego urządzenia obliczeniowego, a następnie wykonywany równolegle przez wiele elementów roboczych. Konstrukcje językowe muszą więc współpracować z przestrzeniami adresowymi OpenCL, typami wektorowymi, synchronizacją oraz funkcjami wbudowanymi dostępnymi po stronie urządzenia. Biblioteki standardowej C++ nie można traktować jako automatycznie dostępnej w kodzie kernela. W OpenCL 2.2 rozszerzono również możliwości związane z reprezentacją i optymalizacją kodu pośredniego. Implementacja może korzystać ze standardu SPIR-V do przenoszenia przygotowanych programów między narzędziami a środowiskiem wykonawczym. Wprowadzono także między innymi typ pipe storage, mechanizmy przekazywania wartości stałych specjalizacji podczas kompilacji SPIR-V oraz zapytania dotyczące konstruktorów i destruktorów obiektów globalnych programu. Dostępność poszczególnych funkcji zależy od zgodności sterownika i urządzenia z wymaganiami OpenCL 2.2. Sprawdzanie zgodności sterownika i urządzeniaSama obecność biblioteki OpenCL na komputerze nie potwierdza obsługi wersji 2.2. Informacje o platformie i urządzeniach można odczytać przez funkcje API, takie jak Podczas budowania źródła kernela trzeba wybrać język obsługiwany przez daną implementację. Dla kodu C++ for OpenCL stosuje się opcję kompilacji OpenCL 2.2 w praktycznej obsłudze komputeraProblemy z aplikacją wykorzystującą OpenCL 2.2 mogą objawiać się brakiem wykrytego urządzenia, błędem tworzenia kontekstu, nieudaną kompilacją kernela albo zatrzymaniem programu podczas wykonywania polecenia. Diagnostyka powinna obejmować model karty graficznej lub procesora, wersję zainstalowanego sterownika, nazwę platformy OpenCL, wersję urządzenia oraz komunikat błędu zwrócony przez API. Należy też sprawdzić, czy aplikacja wymaga pełnej zgodności z OpenCL 2.2, czy może działać z wcześniejszą wersją standardu. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, dlatego przy problemach z aplikacją korzystającą z OpenCL można zweryfikować sterownik grafiki, poprawność instalacji środowiska oraz działanie układu obliczeniowego. W przypadku uszkodzeń sprzętowych sprawdzenie temperatur, stabilności karty, pamięci operacyjnej i zasilania pomaga oddzielić błąd implementacji OpenCL od awarii komputera. Ostateczna diagnoza wymaga porównania deklarowanej wersji standardu z wymaganiami konkretnego programu. |