Udgivelsen af projektet PoCL 3.1 (Portable Computing Language OpenCL) er præsenteret, hvilket udvikler en implementation af OpenCL-standarden, der er uafhængig af producenterne af grafiske acceleratorer og muliggør brug af forskellige backend-løsninger til at udføre OpenCL-kjerner på forskellige typer grafiske og centrale processorer. Projektkoden distribueres under MIT-licensen. Der understøttes drift på platforme som X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU samt forskellige specialiserede ASIP (Application-Specific Instruction-set Processor) og TTA-processorer (Transport Triggered Architecture) med VLIW-arkitektur.
Implementation af OpenCL-kernelkompilatoren er baseret på LLVM, mens Clang bruges som frontend til OpenCL C. For at sikre ordentlig bærbarhed og ydeevne kan kompileringskoden generere kombinerede funktioner, som kan udnytte forskellige hardware-ressourcer til parallel udførelse af koden, såsom VLIW, superskalaritet, SIMD, SIMT, flerkernede og multitrådede muligheder. Der er støtte for ICD-drivere (Installable Client Driver). Backend-løsninger er tilgængelige til at understøtte drift gennem CPU, ASIP (TCE/TTA), HSA-arkitektur GPU og NVIDIA GPU (via libcuda).
I den nye version:
- Support for Clang/LLVM 15.0 er tilføjet.
- Den midlertidige repræsentation af shaderne SPIR-V til drivere, der bruger CPU og CUDA, er væsentligt forbedret.
- Driveren til specialiseret hardware (CL_DEVICE_TYPE_ACCELERATOR) og brugerdefinerede enheder (CL_DEVICE_TYPE_CUSTOM), som ikke understøtter online-kompilering, er blevet betydeligt revideret. Driverne accel og ttasim er blevet fusioneret i en ny driver kaldet AlmaIF.
- Arbejdet med driveren til grafisk API Vulkan er fortsat.
- En grundlæggende implementation af udvidelsen cl_khr_command_buffer er foreslået, som tillader optagelse af en sekvens af OpenCL-kommandoer til udførelse i én kald.
Kilde: opennet.ru
