Udgivet er version 6.0 af PoCL (Portable Computing Language OpenCL), som udvikler implementeringen af OpenCL-standarden uafhængigt af grafikhardwareproducenter og muliggør brug af forskellige backend-løsninger til udførelse af OpenCL-kerneler på forskellige typer grafiske og centrale processorer. Koden til projektet distribueres under MIT-licensen. Der er support for platforme som X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU og forskellige specialiserede ASIP (Application-Specific Instruction-set Processor) og TTA-processorer (Transport Triggered Architecture) med VLIW-arkitektur.
Implementeringen af OpenCL-kernes kompilatoren er baseret på LLVM, mens Clang bruges som frontend til OpenCL C. For at sikre tilstrækkelig portabilitet og ydeevne kan OpenCL-kernens kompilator generere kombinerede funktioner, der kan bruge forskellige hardware-ressourcer til at parallelisere koden, såsom VLIW, superskalær, SIMD, SIMT, multicore og multithreading. Der er understøttelse af ICD-driverne.
(Installable Client Driver). Der er backends til at muliggøre drift via CPU, ASIP (TCE/TTA), GPU baseret på HSA-arkitekturen og NVIDIA GPU (gennem libcuda).
I den nye version:
- Tilføjet support for Clang/LLVM 18.0, mens support for LLVM 10, 11, 12 og 13 er ophørt.
- Implementeret en ny cpu-tbb backend, der bruger OneTBB-biblioteket udviklet af Intel til parallelisering af operationer og planlægning af opgaveudførelse.
- I cpu-backenden, der understøtter udførelse af OpenCL-kerneler på CPU, er der tilføjet support for OpenMP parallelprogrammeringsstandarden, tilføjet metoden clGetDeviceAndHostTimer(), og eksperimentelle tilføjelser som cl_pocl_svm_rect, cl_pocl_command_buffer_svm og cl_pocl_command_buffer_host_buffer er implementeret.
- I backend'en "Remote", der er designet til at organisere distribuerede beregninger ved at flytte behandlingen af OpenCL-kommandoer til andre værter i netværket, hvor en baggrundsproces pocld kører, er der tilføjet support for CG SVM (Coarse-Grain Shared Virtual Memory), mulighed for at få adgang til backend'en ved hjælp af kommunikationsprotokol Vsock, samt support for kompilering og linkning af programmer ved hjælp af funktionerne clCompileProgram() og clLinkProgram().
- I LevelZero-backenden, der bruger Level Zero API, er det muligt at skabe buffere større end 4GB, og der er implementeret optimeringer til synkroniseringsprocesser.
- I CUDA-backenden er operationer som sub_group_shuffle og sub_group_shuffle_xor implementeret, og grænsen for CL_DEVICE_MAX_MEM_ALLOC_SIZE er forhøjet.
Kilde: opennet.ru
