PoCL 5.0-Release mit einer unabhängigen Implementierung des OpenCL-Standards

Die Veröffentlichung des PoCL 5.0-Projekts (Portable Computing Language OpenCL) wurde veröffentlicht, das eine Implementierung des OpenCL-Standards entwickelt, die unabhängig von Grafikbeschleunigerherstellern ist und die Verwendung verschiedener Backends zur Ausführung von OpenCL-Kerneln auf verschiedenen Arten von Grafiken und Zentralprozessoren ermöglicht . Der Projektcode wird unter der MIT-Lizenz vertrieben. Unterstützt die Arbeit auf den Plattformen X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU und verschiedenen spezialisierten ASIP- (Application-Specific Instruction-Set Processor) und TTA-Prozessoren (Transport Triggered Architecture) mit VLIW-Architektur.

Die Implementierung des OpenCL-Kernel-Compilers basiert auf LLVM und Clang wird als Frontend für OpenCL C verwendet. Um eine ordnungsgemäße Portabilität und Leistung sicherzustellen, kann der OpenCL-Kernel-Compiler Kombinationsfunktionen generieren, die verschiedene Hardwareressourcen nutzen können, um die Codeausführung zu parallelisieren, wie z. B. VLIW, Superskalar, SIMD, SIMT, Multi-Core und Multi-Threading. Es gibt Unterstützung für ICD-Treiber (Installable Client Driver). Es gibt Backends, die den Betrieb über CPU, ASIP (TCE/TTA), GPU auf Basis der HSA-Architektur und NVIDIA GPU (über libcuda) unterstützen.

In der neuen Version:

  • Es wurde ein neues „Remote“-Backend implementiert, das die verteilte Datenverarbeitung organisieren soll, indem die Verarbeitung von OpenCL-Befehlen auf andere Hosts im Netzwerk übertragen wird, auf denen der Pocld-Prozess im Hintergrund ausgeführt wird.
  • Der CUDA-Treiber implementiert zusätzliche Funktionen und Erweiterungen von OpenCL 3.0, wie z. B. atomare Operationen, bereichsbezogene Variablen, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier und sub_group_ballot.
  • Verbesserte Unterstützung für CPUs basierend auf der RISC-V-Architektur. Der PoCL-Betrieb wurde auf dem Starfive VisionFive 2-Board getestet, das mit einer Ubuntu 23.10-Umgebung mit LLVM 17 und GCC 13.2 geladen war.
  • Die Erweiterung cl_ext_float_atomics wurde mit Unterstützung für FP32 und FP64 implementiert.
  • Die Implementierung der cl_khr_command_buffer-Erweiterung wurde auf Version 0.9.4 aktualisiert.
  • Ein experimentelles AlmaIF-Backend für FPGAs wurde vorgeschlagen.
  • Unvollständige Unterstützung für die Zwischendarstellung von SPIR 1.x/2.0-Shadern entfernt. SPIR-V wird als empfohlene Zwischen-Shader-Sprache deklariert.
  • Unterstützung für Clang/LLVM 17.0 hinzugefügt. Die Unterstützung für Clang/LLVM 10–13 ist veraltet.

Source: opennet.ru

Kommentar hinzufügen