Opublikowano ostateczne specyfikacje OpenCL 3.0

Koncern Khronos, odpowiedzialny za rozwój specyfikacji rodziny OpenGL, Vulkan i OpenCL, ogłosił po opublikowaniu ostatecznych specyfikacji OpenCL 3.0, definiowanie interfejsów API i rozszerzeń języka C do organizowania wieloplatformowego przetwarzania równoległego z wykorzystaniem wielordzeniowych procesorów CPU, GPU, FPGA, DSP i innych wyspecjalizowanych układów, od tych stosowanych w superkomputerach i serwerach w chmurze po chipy, które można znaleźć w urządzeniach mobilnych i wbudowana technologia. Standard OpenCL jest całkowicie otwarty i nie wymaga opłat licencyjnych.

Jednocześnie opublikowany open OpenCL SDK z narzędziami, przykładami, dokumentacją, plikami nagłówkowymi, powiązaniami C++ i bibliotekami C do tworzenia aplikacji zgodnych z OpenCL 3.0. Również reprezentowany przez wstępna implementacja OpenCL 3.0 oparta na kompilatorze Clang, która jest na etapie przeglądu poprawek pod kątem włączenia ich do głównej struktury LLVM. W pracach nad standardem wzięły udział takie firmy jak IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments i Toshiba.

Opublikowano ostateczne specyfikacje 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.
    Opublikowano ostateczne specyfikacje 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.

    Opublikowano ostateczne specyfikacje 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.

    Opublikowano ostateczne specyfikacje OpenCL 3.0

Źródło: opennet.ru

Dodaj komentarz