Die Veröffentlichung von PoCL 6.0 (Portable Computing Language OpenCL) ist erfolgt, das die Implementierung des OpenCL-Standards entwickelt, die herstellerunabhängig von Grafikbeschleunigern ist und die Verwendung verschiedener Backends zur Ausführung von OpenCL-Kernen auf unterschiedlichen Typen von Grafik- und Prozessoren ermöglicht. Der Code des Projekts wird unter der MIT-Lizenz verbreitet. Es wird die Arbeit auf 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 unterstützt.
Die Implementierung des OpenCL-Kernels-Compilers basiert auf LLVM, und als Frontend für OpenCL C wird Clang verwendet. Um die richtige Portabilität und Leistung sicherzustellen, kann der OpenCL-Kernel-Compiler kombinierte Funktionen generieren, die verschiedene Hardware-Ressourcen zur Parallelisierung der Codeausführung nutzen können, wie VLIW, Superskalare, SIMD, SIMT, Multikern- und Multithreading. ICD-Treiber werden unterstützt.
(Installierbarer Client-Treiber). Es sind Backends vorhanden, um die Arbeit über CPU, ASIP (TCE/TTA), GPU auf Basis der HSA-Architektur und NVIDIA GPU (über libcuda) zu gewährleisten.
In der neuen Version:
- Unterstützung für Clang/LLVM 18.0 hinzugefügt, Unterstützung für LLVM 10, 11, 12 und 13 eingestellt.
- Ein neuer Backend cpu-tbb wurde implementiert, der die OneTBB-Bibliothek, entwickelt von Intel, für die Parallelisierung von Operationen und die Planung der Ausführung von Aufgaben verwendet.
- Im CPU-Backend, das die Ausführung von OpenCL-Kernen auf CPUs ermöglicht, wurde die Unterstützung für den Standard der parallelen Programmierung OpenMP hinzugefügt, die Methode clGetDeviceAndHostTimer() eingeführt und experimentelle Erweiterungen cl_pocl_svm_rect, cl_pocl_command_buffer_svm und cl_pocl_command_buffer_host_buffer implementiert.
- Im Backend „Remote“, das für die Organisation von verteilten Berechnungen durch die Auslagerung der Ausführung von OpenCL-Befehlen auf andere Hosts im Netzwerk, auf denen der Hintergrundprozess pocld läuft, vorgesehen ist, wurde die Unterstützung für CG SVM (Coarse-Grain Shared Virtual Memory) hinzugefügt, die Möglichkeit, auf das Backend über das Kommunikationsprotokoll Vsock zuzugreifen, sowie die Unterstützung für die Kompilierung und Verknüpfung von Programmen mit den Funktionen clCompileProgram() und clLinkProgram().
- Im LevelZero-Backend, das die Level Zero-API verwendet, ist das Erstellen von Puffern mit einer Größe von über 4GB erlaubt, und es wurden Optimierungen für Synchronisierungsprozesse implementiert.
- Im CUDA-Backend wurden die Operationen sub_group_shuffle und sub_group_shuffle_xor implementiert, und das Limit für CL_DEVICE_MAX_MEM_ALLOC_SIZE wurde erhöht.
Quelle: opennet.ru
