Udgivelsen af PoCL 5.0-projektet (Portable Computing Language OpenCL) er blevet offentliggjort, der udvikler en implementering af OpenCL-standarden, der er uafhængig af grafikacceleratorproducenter og tillader brugen af forskellige backends til at udføre OpenCL-kerner på forskellige typer grafik og centrale processorer . Projektkoden distribueres under MIT-licensen. Understøtter arbejde på platforme X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU og forskellige specialiserede ASIP (Application-Specific Instruction-set Processor) og TTA (Transport Triggered Architecture)-processorer med VLIW-arkitektur.
Implementeringen af OpenCL-kernekompileren er bygget på basis af LLVM, og Clang bruges som frontend for OpenCL C. For at sikre korrekt portabilitet og ydeevne kan OpenCL-kernekompileren generere kombinationsfunktioner, der kan bruge forskellige hardwareressourcer til at parallelisere kodeudførelse, såsom VLIW, superscalar, SIMD, SIMT, multi-core og multi-threading. Der er understøttelse af ICD-drivere (Installable Client Driver). Der er backends til at understøtte drift via CPU, ASIP (TCE/TTA), GPU baseret på HSA-arkitektur og NVIDIA GPU (via libcuda).
I den nye version:
- En ny "Remote" backend er blevet implementeret, designet til at organisere distribueret databehandling ved at overføre behandlingen af OpenCL-kommandoer til andre værter på netværket, der kører baggrunds-pocld-processen.
- CUDA-driveren implementerer yderligere OpenCL 3.0-funktioner og udvidelser såsom atomoperationer, scoped variabler, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier og sub_group_ballot.
- Forbedret understøttelse af CPU'er baseret på RISC-V-arkitekturen. PoCL-driften blev testet på Starfive VisionFive 2-kortet fyldt med Ubuntu 23.10-miljø med LLVM 17 og GCC 13.2.
- cl_ext_float_atomics-udvidelsen er blevet implementeret med understøttelse af FP32 og FP64.
- Implementeringen af cl_khr_command_buffer-udvidelsen er blevet opdateret til version 0.9.4.
- En eksperimentel AlmaIF-backend til FPGA'er er blevet foreslået.
- Fjernet ufuldstændig understøttelse af mellemrepræsentation af SPIR 1.x/2.0 shaders. SPIR-V er erklæret som det anbefalede mellemliggende shader-sprog.
- Tilføjet understøttelse af Clang/LLVM 17.0. Understøttelse af Clang/LLVM 10-13 er blevet forældet.
Kilde: opennet.ru