OpenCL tutorial – część 2 – listowanie dostępnych urządzeń

Przed nami druga część wprowadzenia do OpenCL. W tej części pokażę jak sprawdzić czy nasz sprzęt obsługuje OpenCL.

Naszym zadaniem jest wypisanie wszystkich urządzeń zainstalowanych w naszym komputerze, które wspierają OpenCL.

Na początek pobierzemy liczbę platform:

Zmienna platformNumber powinna przechowywać liczbę dostępnych platform, które obsługują OpenCL. Zmienna error zawiera 0 (CL_SUCCESS), jeżeli operacja wykonała się poprawnie lub liczbę różną od zera, jeżeli wystąpił błąd.

Funkcja clGetPlatformIDs ma dwa zastosowania. Pierwsze już znamy, czyli pobieranie liczby dostępnych platform, a drugie to pobieranie listy identyfikatorów dostępnych platform.

Najpierw alokujemy pamięć, a następnie pobieramy identyfikatory:

Skoro znamy już identyfikatory platform, to wykorzystajmy je do pobrania bardziej szczegółowych informacji na temat platform. Dzięki funkcji clGetPlatformInfo możemy poznać takie dane jak nazwa czy producent platformy:

Wiemy już na jakich platformach możemy operować, czas na pobranie informacji o konkretnych urządzeniach, które wspierają OpenCL.

Pobieranie informacji na temat urządzeń jest bardzo podobne do pobierania informacji na temat platform. Najpierw pobieramy liczbę urządzeń, następnie alokujemy pamięć na ich identyfikatory, a na końcu pobieramy szczegółowe informacje na temat urządzenia takie jak nazwa czy wersja.

Poniższy kod umieszczamy w pętli, dzięki czemu pobierzemy informacje na temat wszystkich urządzeń we wszystkich platformach:

Kompilujemy i uruchamiamy nasz program.

Kod programu

Cały kod powinien wyglądać tak:

Wyniki

Program po uruchomieniu powinien dać wynik podobny do poniższego:

Widzimy wszystkie platformy oraz urządzenia, które obsługują OpenCL. W moim przypadku jest to zintegrowana karta graficzna Intel HD Graphics 4000 oraz GeForce GT 650M.

Źródła w serwisie GitLab.

W następnej części kursu wykonamy i uruchomimy pierwszy program OpenCL.

4 Comments on “OpenCL tutorial – część 2 – listowanie dostępnych urządzeń

  1. dzięki za tutorial, właśnie czegoś takiego szukałem.
    aczkolwiek czepiłbym się jednego zdania, a mianowicie „Cały kod powinien wyglądać tak” (przed kodem)…

    wydaje mi się, że twórca Czystego Kodu polemizowałby czy ten kod rzeczywiście powinien tak wyglądać :P

    • Proszę o konkrety, bo sposobów tworzenia i formatowania kodu jest więcej niż samych programistów.

      Kod w tutorialu ma być prosty i skupiać się na tłumaczonym zagadnieniu. Każdy zrozumie dwie pętlę i kilka coutów. Gdybym miał pisać zgodnie ze wszystkimi „dobrymi praktykami tworzenia kodu”, to tutorial byłby 10x dłuższy ;)

      • wow, szybka odpowiedź.

        Rozumiem, że to dlatego, że to tutorial. Po prostu akurat to zdanie mnie „uderzyło” bo ostatnio mam zajęcia, na których wykładowca bardzo czepia się takich rzeczy :P

        • To dobrze, że się czepia, bo takich rzeczy należy uczyć się od początku. Tutaj mamy do czynienia z kursem dotyczącym wybranego zagadnienia, a nie ogólnie programowania. Po pierwsze, w tym przypadku stosowanie tych wszystkich dobrych praktyk i zasad pisania czystego i ładnego kodu tylko utrudniałoby zrozumienie kodu. Po drugie, zawartości książek takich jak „Czysty kod” to tylko porady i wskazówki, a nie nakazy. Te zasady należy dostosować do tworzonego projektu, zespołu, klienta itd. oraz stosować wtedy, gdy naprawdę odniesiemy z nich jakieś korzyści, a nie zawsze i wszędzie, bo autor twierdzi, że tak jest lepiej.

Pozostaw odpowiedź Michał Anuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany.