Wprowadzono specyfikację OpenCL 3.0

Koncern Khronos, odpowiedzialny za rozwój specyfikacji rodziny OpenGL, Vulkan i OpenCL, ogłosił w sprawie zakończenia opracowywania specyfikacji OpenCL 3.0 definiujących interfejsy API i rozszerzenia języka C w celu organizacji wieloplatformowego przetwarzania równoległego z wykorzystaniem wielordzeniowych procesorów, procesorów graficznych, układów FPGA, procesorów DSP i innych wyspecjalizowanych układów, począwszy od tych stosowanych w superkomputerach i serwerach chmurowych do chipów, które można znaleźć w urządzeniach mobilnych i technologii wbudowanej. Standard OpenCL jest całkowicie otwarty i nie wymaga opłat licencyjnych. W pracach nad standardem wzięły udział takie firmy jak IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments i Toshiba.

Na obecnym etapie specyfikacji nadano status tymczasowy, co oznacza możliwość jej udoskonalenia na podstawie informacji zwrotnych nadesłanych drogą mailową GitHub. Po uwzględnieniu komentarzy specyfikacja zostanie sfinalizowana i opublikowany zostanie ostateczny zestaw testów w celu sprawdzenia kompatybilności istniejących implementacji.

Wprowadzono specyfikację OpenCL 3.0

Najbardziej godne uwagi Cechy OpenCL 3.0:

  • Interfejs API OpenCL 3.0 obejmuje teraz wszystkie wersje OpenCL (1.2, 2.x), bez podawania oddzielnych specyfikacji dla każdej wersji. OpenCL 3.0 zapewnia możliwość rozszerzenia podstawowej funkcjonalności poprzez integrację dodatkowych specyfikacji, które zostaną nałożone na siebie w formie opcji, bez blokowania monolitycznej natury OpenCL 1.2/2.X.
  • Tylko funkcjonalność zgodna z OpenCL 1.2 jest uznawana za obowiązkową, a wszystkie funkcje proponowane w specyfikacjach OpenCL 2.x są klasyfikowane jako opcjonalne. Takie podejście ułatwi tworzenie niestandardowych implementacji zgodnych z OpenCL 3.0 i poszerzy gamę urządzeń, na których można używać OpenCL 3.0. Na przykład producenci mogą wdrożyć obsługę OpenCL 3.0 bez wdrażania określonych funkcji OpenCL 2.x. Aby uzyskać dostęp do opcjonalnych funkcji językowych, OpenCL 3.0 dodał system zapytań testowych, który pozwala ocenić obsługę poszczególnych elementów API, a także specjalnych makr.
  • Ujednolicenie z wcześniej wydanymi specyfikacjami ułatwia migrację aplikacji do OpenCL 3.0. Aplikacje OpenCL 1.2 będą mogły działać na urządzeniach obsługujących OpenCL 3.0 bez modyfikacji. Aplikacje OpenCL 2.x również nie będą wymagały zmian w kodzie, o ile środowisko OpenCL 3.0 zapewnia wymaganą funkcjonalność (aby zapewnić przenośność w przyszłości, zaleca się, aby aplikacje OpenCL 2.x dodały zapytania testowe w celu oceny obsługi funkcji OpenCL 2.x używany). Twórcy sterowników z implementacją OpenCL mogą łatwo zaktualizować swoje produkty do OpenCL 3.0, dodając tylko przetwarzanie zapytań dla niektórych wywołań API i stopniowo zwiększając funkcjonalność w miarę upływu czasu.
  • Specyfikacja OpenCL 3.0 jest dostosowana do środowiska, rozszerzeń i specyfikacji ogólnej reprezentacji pośredniej SPIR-V, która jest również używana przez API Vulkan. Obsługa specyfikacji SPIR-V 1.3 jest zawarta w rdzeniu OpenCL 3.0 jako funkcja opcjonalna. Poprzez zastosowanie reprezentacji pośredniej SPIR-V dla rdzeni obliczeniowych dodano obsługę operacji z podgrupami.
    Wprowadzono specyfikację OpenCL 3.0

  • Dodano obsługę rozszerzenia do wykonywania asynchronicznych operacji DMA (Asynchronous DMA), obsługiwanego w układach typu DSP z bezpośrednim dostępem do pamięci. Asynchroniczny DMA umożliwia wykorzystanie transakcji DMA do asynchronicznego przesyłania danych pomiędzy pamięcią globalną i lokalną, równolegle z obliczeniami lub innymi operacjami przesyłania danych.
  • Specyfikacja rozszerzeń programowania równoległego C została zaktualizowana do wersja 3.0, a rozwój rozszerzeń języka OpenCL dla C++ został przerwany na rzecz projektu „C++ dla OpenCL”. C++ dla OpenCL to kompilator oparty na Clang/LLVM i nadawanie Jądra C++ i OpenCL C w pośrednią reprezentację SPIR-V lub kod maszynowy niskiego poziomu. Poprzez nadawanie SPIR-V organizuje również montaż aplikacji C++ przy użyciu biblioteki szablonów SYCL, co upraszcza tworzenie aplikacji równoległych.

    Wprowadzono specyfikację OpenCL 3.0

  • Zaproponowano kompilator do nadawania OpenCL poprzez API Vulkan clspv, który konwertuje jądra OpenCL na reprezentację Vulkan SPIR-V oraz warstwę clvk aby umożliwić działanie interfejsu API OpenCL na platformie Vulkan.

    Wprowadzono specyfikację OpenCL 3.0

Źródło: opennet.ru

Dodaj komentarz