De release van het PoCL-project 5.0 (Portable Computing Language OpenCL) is gepubliceerd. Dit project ontwikkelt een implementatie van de OpenCL-standaard die onafhankelijk is van fabrikanten van grafische versnellers en het mogelijk maakt om verschillende backends te gebruiken voor het uitvoeren van OpenCL-kernels op verschillende soorten grafische en centrale processoren. De code van het project wordt verspreid onder de MIT-licentie. Het ondersteunt werken op X86_64-, MIPS32-, ARM v7-, AMD HSA APU-, NVIDIA GPU-platformen en diverse gespecialiseerde ASIP (Application-Specific Instruction-set Processor) en TTA-processors (Transport Triggered Architecture) met VLIW-architectuur.
De implementatie van de OpenCL-kernelcompiler is gebouwd op LLVM, met Clang als frontend voor OpenCL C. Om de noodzakelijke draagbaarheid en prestaties te waarborgen, kan de OpenCL-kernelcompiler gecombineerde functies genereren die verschillende hardwarebronnen kunnen gebruiken voor het parallel uitvoeren van code, zoals VLIW, superscalariteit, SIMD, SIMT, multicores en multithreading. Ondersteuning voor ICD-drivers (Installable Client Driver) is aanwezig. Er zijn backends aanwezig om te zorgen voor functionaliteit via CPU, ASIP (TCE/TTA), HSA-gebaseerde GPU's en NVIDIA GPU's (via libcuda).
In de nieuwe versie:
- Een nieuwe backend genaamd 'Remote' is geïmplementeerd, bedoeld voor het organiseren van gedistribueerde berekeningen door het verwerken van OpenCL-opdrachten naar andere hosts in het netwerk, waar een achtergrondproces van pocld draait.
- In de CUDA-driver zijn extra mogelijkheden en uitbreidingen van OpenCL 3.0 geïmplementeerd, zoals atomische operaties, variabelen met beperkte reikwijdte, subgroepen intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier en sub_group_ballot.
- De ondersteuning voor CPU's op basis van RISC-V-architectuur is verbeterd. De werking van PoCL is getest op het Starfive VisionFive 2-bord met een geladen Ubuntu 23.10-omgeving met LLVM 17 en GCC 13.2.
- De uitbreiding cl_ext_float_atomics met ondersteuning voor FP32 en FP64 is geïmplementeerd.
- De implementatie van de uitbreiding cl_khr_command_buffer is bijgewerkt naar versie 0.9.4.
- Een experimentele backend AlmaIF voor FPGA is voorgesteld.
- De onvoltooide ondersteuning voor de tussentijdse representatie van shaders SPIR 1.x/2.0 is verwijderd. SPIR-V is opgegeven als de aanbevolen tussentijdse taal voor shaders.
- Ondersteuning voor Clang/LLVM 17.0 is toegevoegd. De ondersteuning voor Clang/LLVM 10-13 is als verouderd verklaard.
Bron: opennet.ru
