Endgültige OpenCL 3.0-Spezifikationen veröffentlicht

Der Khronos-Konzern, der für die Entwicklung der Spezifikationen der OpenGL-, Vulkan- und OpenCL-Familie verantwortlich ist, объявил bei Veröffentlichung der endgültigen Spezifikationen OpenCL 3.0, Definieren von APIs und Erweiterungen der C-Sprache für die Organisation plattformübergreifender paralleler Datenverarbeitung mithilfe von Multi-Core-CPUs, GPUs, FPGAs, DSPs und anderen speziellen Chips, von denen, die in Supercomputern und Cloud-Servern verwendet werden, bis hin zu Chips, die in mobilen Geräten und Geräten zu finden sind eingebaute Technik. Der OpenCL-Standard ist vollständig offen und erfordert keine Lizenzgebühren.

Gleichzeitig veröffentlicht Öffnen Sie das OpenCL SDK mit Tools, Beispielen, Dokumentation, Header-Dateien, C++-Bindungen und C-Bibliotheken für die Entwicklung von Anwendungen, die mit OpenCL 3.0 kompatibel sind. Auch vertreten Erstimplementierung von OpenCL 3.0 auf Basis des Clang-Compilers, der derzeit Patches für die Aufnahme in die Hauptstruktur von LLVM prüft. An der Arbeit am Standard waren Unternehmen wie IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments und Toshiba beteiligt.

Endgültige OpenCL 3.0-Spezifikationen veröffentlicht

Am bemerkenswertesten eigenschaften OpenCL 3.0:

  • Die OpenCL 3.0 API deckt jetzt alle Versionen von OpenCL (1.2, 2.x) ab, ohne für jede Version separate Spezifikationen bereitzustellen. OpenCL 3.0 bietet die Möglichkeit, die Kernfunktionalität durch die Integration zusätzlicher Spezifikationen zu erweitern, die in Form von Optionen geschichtet werden, ohne die monolithische Natur von OpenCL 1.2/2.X zu blockieren.
  • Nur Funktionen, die OpenCL 1.2 entsprechen, werden als obligatorisch erklärt und alle in den OpenCL 2.x-Spezifikationen vorgeschlagenen Funktionen werden als optional eingestuft. Dieser Ansatz erleichtert die Erstellung benutzerdefinierter Implementierungen, die mit OpenCL 3.0 kompatibel sind, und erweitert die Palette der Geräte, auf denen OpenCL 3.0 verwendet werden kann. Beispielsweise können Hersteller die OpenCL 3.0-Unterstützung implementieren, ohne bestimmte OpenCL 2.x-Funktionen zu implementieren. Um auf optionale Sprachfunktionen zuzugreifen, hat OpenCL 3.0 ein System von Testabfragen hinzugefügt, mit dem Sie die Unterstützung einzelner API-Elemente sowie spezieller Makros bewerten können.
  • Die Vereinheitlichung mit zuvor veröffentlichten Spezifikationen erleichtert die Migration von Anwendungen auf OpenCL 3.0. OpenCL 1.2-Anwendungen können ohne Änderungen auf Geräten ausgeführt werden, die OpenCL 3.0 unterstützen. OpenCL 2.x-Anwendungen erfordern auch keine Codeänderungen, solange die OpenCL 3.0-Umgebung die erforderliche Funktionalität bietet (um zukünftige Portabilität sicherzustellen, wird OpenCL 2.x-Anwendungen empfohlen, Testabfragen hinzuzufügen, um die Unterstützung für die OpenCL 2.x-Funktionen zu bewerten verwendet werden). Treiberentwickler mit OpenCL-Implementierungen können ihre Produkte problemlos auf OpenCL 3.0 aktualisieren, indem sie nur die Abfrageverarbeitung für bestimmte API-Aufrufe hinzufügen und die Funktionalität im Laufe der Zeit schrittweise erhöhen.
  • Die OpenCL 3.0-Spezifikation ist auf die Umgebung, Erweiterungen und Spezifikationen der generischen Zwischendarstellung SPIR-V abgestimmt, die auch von der Vulkan-API verwendet wird. Die Unterstützung der SPIR-V 1.3-Spezifikation ist als optionale Funktion im Kern von OpenCL 3.0 enthalten. Durch die Verwendung einer Zwischendarstellung SPIR-V Für Rechenkerne wurde Unterstützung für Operationen mit Untergruppen hinzugefügt.
    Endgültige OpenCL 3.0-Spezifikationen veröffentlicht

  • Unterstützung für eine Erweiterung zur Durchführung asynchroner DMA-Operationen (Asynchronous DMA) hinzugefügt, die in DSP-ähnlichen Chips mit direktem Speicherzugriff unterstützt wird. Asynchrones DMA ermöglicht die Verwendung von DMA-Transaktionen zur asynchronen Übertragung von Daten zwischen dem globalen und lokalen Speicher, parallel zu Berechnungen oder anderen Datenübertragungsvorgängen.
  • Die C Parallel Programming Extensions-Spezifikation wurde auf aktualisiert Version 3.0, und die Entwicklung von OpenCL-Spracherweiterungen für C++ wurde zugunsten des Projekts „C++ für OpenCL“ eingestellt. C++ für OpenCL ist ein Compiler, der auf Clang/LLVM und basiert Rundfunk C++- und OpenCL-C-Kernel in SPIR-V-Zwischendarstellung oder Maschinencode auf niedriger Ebene. Durch Broadcasting organisiert SPIR-V auch die Zusammenstellung von C++-Anwendungen mithilfe der SYCL-Vorlagenbibliothek, was die Erstellung paralleler Anwendungen vereinfacht.

    Endgültige OpenCL 3.0-Spezifikationen veröffentlicht

  • Für die Übertragung von OpenCL über die Vulkan-API wurde ein Compiler vorgeschlagen clspv, das OpenCL-Kernel in eine Vulkan SPIR-V-Darstellung und einen Layer konvertiert clvk um zu ermöglichen, dass die OpenCL-API auf Vulkan funktioniert.

    Endgültige OpenCL 3.0-Spezifikationen veröffentlicht

Source: opennet.ru

Kommentar hinzufügen