Einführung der OpenCL 3.0-Spezifikation

Der Khronos-Konzern, der für die Entwicklung der Spezifikationen der OpenGL-, Vulkan- und OpenCL-Familie verantwortlich ist, объявил über den Abschluss der Entwicklung von OpenCL 3.0-Spezifikationen, die APIs und Erweiterungen der C-Sprache für die Organisation plattformübergreifender paralleler Datenverarbeitung unter Verwendung von Mehrkern-CPUs, GPUs, FPGAs, DSPs und anderen speziellen Chips definieren, die beispielsweise in Supercomputern und Cloud-Servern verwendet werden hin zu Chips, die in mobilen Geräten und eingebetteter Technologie zu finden sind. Der OpenCL-Standard ist vollständig offen und erfordert keine Lizenzgebühren. An der Arbeit am Standard waren Unternehmen wie IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments und Toshiba beteiligt.

Zum jetzigen Zeitpunkt wurde der Spezifikation der vorläufige Status zugewiesen, was die Möglichkeit einer Verfeinerung auf der Grundlage des über gesendeten Feedbacks impliziert GitHub. Sobald die Kommentare berücksichtigt sind, wird die Spezifikation finalisiert und eine endgültige Testsuite veröffentlicht, um die Kompatibilität bestehender Implementierungen zu testen.

Einführung der OpenCL 3.0-Spezifikation

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.
    Einführung der OpenCL 3.0-Spezifikation

  • 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.

    Einführung der OpenCL 3.0-Spezifikation

  • 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.

    Einführung der OpenCL 3.0-Spezifikation

Source: opennet.ru

Kommentar hinzufügen