Die Veröffentlichung des PoCL 3.1 (Portable Computing Language OpenCL) Projekts wird präsentiert, das die Entwicklung eines herstellerunabhängigen OpenCL Standards vorantreibt und die Verwendung verschiedener Backends für die Ausführung von OpenCL-Kernen auf unterschiedlichen Grafik- und Prozessorarchitekturen ermöglicht. Der Code des Projekts wird unter der MIT-Lizenz veröffentlicht. Unterstützung wird für die Plattformen X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU sowie verschiedene spezialisierte ASIP (Application-Specific Instruction-set Processor) und TTA-Prozessoren (Transport Triggered Architecture) mit VLIW-Architektur geboten.
Die Implementierung des OpenCL-Kernalcompilers basiert auf LLVM, wobei Clang als Frontend für OpenCL C verwendet wird. Um die erforderliche Portabilität und Leistung sicherzustellen, kann der OpenCL-Kernelcompiler kombinierte Funktionen generieren, die verschiedene Hardware-Ressourcen für die Parallelisierung der Codeausführung nutzen, einschließlich VLIW, Superskalartität, SIMD, SIMT, Mehrkern- und Multithreading. Unterstützung für ICD-Treiber (Installable Client Driver) ist vorhanden. Es stehen Backends zur Verfügung, um die Ausführung über CPU, ASIP (TCE/TTA), HSA-Architektur-GPUs und NVIDIA-GPUs (über libcuda) zu ermöglichen.
In der neuen Version:
- Unterstützung für Clang/LLVM 15.0 wurde hinzugefügt.
- Die Unterstützung für die Zwischenrepräsentation von SPIR-V wurde für Treiber, die CPU und CUDA nutzen, erheblich verbessert.
- Der Treiber für spezielle Hardware (CL_DEVICE_TYPE_ACCELERATOR) und benutzerdefinierte Geräte (CL_DEVICE_TYPE_CUSTOM), die keine Online-Kompilierung unterstützen, wurde stark überarbeitet. Die Treiber accel und ttasim wurden in den neuen Treiber AlmaIF zusammengeführt.
- Die Arbeiten am Treiber für die Grafik-API Vulkan wurden fortgesetzt.
- Eine grundlegende Implementierung der Erweiterung cl_khr_command_buffer wurde vorgeschlagen, die es ermöglicht, eine Sequenz von OpenCL-Befehlen zur Ausführung in einem einzigen Aufruf aufzuzeichnen.
Quelle: opennet.ru
