Die Veröffentlichung von PoCL 5.0 (Portable Computing Language OpenCL) wurde bekanntgegeben. Dieses Projekt entwickelt die Implementierung des OpenCL-Standards, die herstellerunabhĂ€ngig ist und es ermöglicht, verschiedene Backends fĂŒr die AusfĂŒhrung von OpenCL-Kernen auf unterschiedlichen Grafik- und Zentralprozessoren zu verwenden. Der Code des Projekts wird unter der MIT-Lizenz veröffentlicht. Die UnterstĂŒtzung 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 wird gewĂ€hrleistet.
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:
- Ein neues âRemoteâ-Backend wurde implementiert, das fĂŒr die Organisation verteilter Berechnungen gedacht ist, indem die Verarbeitung von OpenCL-Befehlen auf andere Hosts im Netzwerk, auf denen der Hintergrundprozess pocld ausgefĂŒhrt wird, delegiert wird.
- Im CUDA-Treiber wurden zusÀtzliche Funktionen und Erweiterungen von OpenCL 3.0 realisiert, wie atomare Operationen, Variablen mit eingeschrÀnktem Geltungsbereich, Untergruppen intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier und sub_group_ballot.
- Die UnterstĂŒtzung fĂŒr CPU-basiertes RISC-V-Architektur wurde verbessert. Die FunktionalitĂ€t von PoCL wurde auf der Starfive VisionFive 2-Platine mit einer geladenen Ubuntu 23.10-Umgebung, LLVM 17 und GCC 13.2 getestet.
- Das cl_ext_float_atomics-Feature mit UnterstĂŒtzung fĂŒr FP32 und FP64 wurde implementiert.
- Die Implementierung der cl_khr_command_buffer-Erweiterung wurde auf Version 0.9.4 aktualisiert.
- Ein experimenteller AlmaIF-Backend fĂŒr FPGA wurde vorgeschlagen.
- Die unvollstĂ€ndige UnterstĂŒtzung fĂŒr das Intermediate Representation der Shader SPIR 1.x/2.0 wurde entfernt. SPIR-V wurde als empfohlene Intermediate Language fĂŒr Shader deklariert.
- UnterstĂŒtzung fĂŒr Clang/LLVM 17.0 wurde hinzugefĂŒgt. Die UnterstĂŒtzung fĂŒr Clang/LLVM 10-13 wurde als veraltet erklĂ€rt.
Quelle: opennet.ru
