Die endgültigen Spezifikationen von OpenCL 3.0 wurden bereits veröffentlicht

Vor ein paar Monaten haben wir geteilt hier im Blog die Nachrichten von die Veröffentlichung der Entwicklung von OpenCL 3.0 von Khronos Sorge (Verantwortlich für die Entwicklung von Spezifikationen für die OpenGL-, Vulkan- und OpenCL-Familie).

Und das war bis vor kurzem so Veröffentlichung der endgültigen OpenCL 3.0-Spezifikationen angekündigtDefinieren von APIs und Erweiterungen der C-Sprache zum Organisieren von Multiplattform Parallel Computing mit Multi-Core-CPUs, GPUs, FPGAs, DSPs und anderen spezialisierten Chips, von Supercomputern und Cloud-Servern bis hin zu Chips, die in Mobilgeräten und integrierter Technologie zu finden sind.

Gleichzeitig wurde ein Open Source OpenCL SDK veröffentlicht mit Tools, Beispielen, Dokumentation, Header-Dateien, Links für C ++ - und C-Bibliotheken zur Entwicklung von OpenCL 3.0-kompatiblen Anwendungen.

Die erste Implementierung von OpenCL 3.0 basierend auf dem Clang-Compiler wird ebenfalls vorgestellt. Dies befindet sich in der Peer-Review-Phase für die Aufnahme in das LLVM-Hauptpaket. Unternehmen wie IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments und Toshiba haben zum Standard beigetragen.

Heute freut sich die Khronos® OpenCL ™ -Arbeitsgruppe, die Veröffentlichung der endgültigen OpenCL 3.0-Spezifikationen bekannt zu geben, einschließlich einer neuen einheitlichen OpenCL C 3.0-Sprachspezifikation sowie einer frühen Erstveröffentlichung eines Khronos OpenCL SDK, damit Entwickler schnell aufstehen können Beschleunigen Sie mit OpenCL.

OpenCL 3.0 Hauptfunktionen

OpenCL 3.0 API jetzt deckt alle Versionen von OpenCL ab (1.2, 2.x), ohne gesonderte Angaben zu machen für jede Version.

OpenCL 3.0 bietet die Möglichkeit, die Kernfunktionalität zu erweitern, indem zusätzliche Spezifikationen integriert werden, die sich in Form von Optionen überschneiden, ohne die monolithische Natur von OpenCL 1.2 / 2.X zu blockieren.

Nur Funktionen, die den Anforderungen entsprechen OpenCL 1.2 ist als obligatorisch deklariertund alle in der OpenCL 2.x-Spezifikationen werden als optional bezeichnet.

Dieser Ansatz vereinfacht die Erstellung spezialisierter Implementierungen, die mit OpenCL 3.0 kompatibel sind, und erweitert die Palette der Geräte, auf denen OpenCL 3.0 verwendet werden kann.

Zum Beispiel Hersteller können die Unterstützung für OpenCL 3.0 implementieren, ohne bestimmte OpenCL 2.x-Funktionen zu implementieren. Um auf optionale Sprachfunktionen zugreifen zu können, wurde OpenCL 3.0 ein Testanforderungssystem hinzugefügt, um die Unterstützung für einzelne API-Elemente sowie spezielle Makros zu bewerten.

Die Vereinheitlichung mit zuvor veröffentlichten Spezifikationen erleichtert die Übersetzung von Anwendungen in OpenCL 3.0. OpenCL 1.2-Anwendungen können ohne Änderungen auf Geräten ausgeführt werden, die OpenCL 3.0 unterstützen.

Anwendungen OpenCL 2.x erfordert auch keine Codeänderungen. Wenn die OpenCL 3.0-Umgebung jedoch die erforderlichen Funktionen bietet (für die zukünftige Portabilität sollten OpenCL 2.x-Anwendungen Testabfragen hinzufügen, um die Kompatibilität mit den verwendeten OpenCL 2.x-Funktionen zu bewerten).

Treiberentwickler mit OpenCL-Implementierungen können ihre Produkte problemlos auf OpenCL 3.0 aktualisieren, indem sie nur die Anforderungsverarbeitung für bestimmte API-Aufrufe hinzufügen und die Funktionalität im Laufe der Zeit schrittweise erhöhen.

Die OpenCL 3.0-Spezifikation wurde an die Umgebung, Erweiterungen und Spezifikationen angepasst des generischen Zwischenprodukts S.PIR-V, die auch in der Vulkan-API verwendet wird. Die Unterstützung für die SPIR-V 1.3-Spezifikation ist in OpenCL 3.0 als optionale Funktion enthalten. Die Unterstützung für Operationen mit Untergruppen wurde hinzugefügt, indem die SPIR-V-Zwischendarstellung für Rechenkerne verwendet wurde.

Außerdem Unterstützung für eine Erweiterung zur Ausführung von DMA-Vorgängen hinzugefügt Asynchron unterstützt auf DSP-ähnlichen DMA-Chips.

Asynchroner DMA ermöglicht die Verwendung von DMA-Transaktionen zum asynchronen Übertragen von Daten zwischen globalem und lokalem Speicher, parallel zu laufenden Berechnungen oder anderen Datenübertragungen.

Die Spezifikation von parallelen Programmiererweiterungen für die Sprache C wurde auf Version 3.0 aktualisiert Die Entwicklung der OpenCL-Spracherweiterungen für C ++ wird zugunsten des Projekts "C ++ für OpenCL" eingestellt.

Um OpenCL über die Vulkan-API zu übersetzen, wird der clspv-Compiler vorgeschlagen: Dadurch werden OpenCL-Kernel in die Vulkan SPIR-V-Darstellung und die clvk-Schicht konvertiert, um sicherzustellen, dass die OpenCL-API auf Vulkan funktioniert.

Quelle: https://www.khronos.org/


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.