Die Veröffentlichung von PoCL 5.0 (Portable Computing Language OpenCL) wurde bekannt gegeben, das die Implementierung des OpenCL-Standards entwickelt, unabhĂ€ngig von Herstellern von Grafikkarten und verschiedene Backends ermöglicht, um OpenCL-Kerne auf unterschiedlichen Typen von Grafik- und CPU-Prozessoren auszufĂŒhren. Der Code des Projekts wird unter der MIT-Lizenz veröffentlicht. Die UnterstĂŒtzung fĂŒr Plattformen wie X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU und verschiedene spezialisierte ASIP (Application-Specific Instruction-set Processor) und TTA-Prozessoren (Transport Triggered Architecture) mit VLIW-Architektur ist gegeben.
Die Implementierung des OpenCL-Kerncompilers basiert auf LLVM, und Clang wird als Frontend fĂŒr OpenCL C verwendet. Um die erforderliche PortabilitĂ€t und Leistung sicherzustellen, kann der OpenCL-Kerncompiler kombinierte Funktionen generieren, die verschiedene Hardware-Ressourcen zur Parallelisierung der CodeausfĂŒhrung nutzen können, wie VLIW, SuperskalaritĂ€t, SIMD, SIMT, Multi-Core und Multithreading. Es gibt UnterstĂŒtzung fĂŒr ICD-Treiber (Installable Client Driver). Es sind Backends vorhanden, um die AusfĂŒhrung ĂŒber CPU, ASIP (TCE/TTA), HSA-Architektur basierende GPUs und NVIDIA GPUs (ĂŒber libcuda) zu ermöglichen.
In der neuen Version:
- Ein neuer Backend «Remote» wurde implementiert, der fĂŒr verteilte Berechnungen konzipiert ist, indem die Verarbeitung von OpenCL-Befehlen auf andere Hosts im Netzwerk ausgelagert wird, auf denen der Hintergrundprozess pocld lĂ€uft.
- Im CUDA-Treiber wurden zusĂ€tzliche Funktionen und Erweiterungen von OpenCL 3.0 implementiert, darunter atomare Operationen, Variablen mit begrenztem GĂŒltigkeitsbereich, Gruppenfunktionen wie intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier und sub_group_ballot.
- Die CPU-UnterstĂŒtzung fĂŒr die RISC-V-Architektur wurde verbessert. Die FunktionalitĂ€t von PoCL wurde auf der Starfive VisionFive 2-Platine mit einer geladenen Ubuntu 23.10-Umgebung mit LLVM 17 und GCC 13.2 getestet.
- Die Erweiterung cl_ext_float_atomics mit UnterstĂŒtzung fĂŒr FP32 und FP64 wurde implementiert.
- Die Implementierung der Erweiterung cl_khr_command_buffer wurde auf Version 0.9.4 aktualisiert.
- Ein experimenteller Backend AlmaIF fĂŒr FPGA wurde vorgeschlagen.
- Die unvollstĂ€ndige UnterstĂŒtzung des Zwischenformats fĂŒr Shader SPIR 1.x/2.0 wurde entfernt. SPIR-V wurde als empfohlenes Zwischenformat fĂŒr Shader angegeben.
- 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
