Objavljen je izdanje projekta PoCL 6.0 (Portable Computing Language OpenCL), koji razvija implementaciju OpenCL standarda, neovisnu o proizvođačima grafičkih akceleratora i omogućuje korištenje različitih backendova za izvođenje OpenCL jezgri na različitim tipovima grafičkih i centralnih procesora. Kod projekta distribuira se pod MIT licencom. Podržano je rad na platformama X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU i različitim specijaliziranim ASIP (Application-Specific Instruction-set Processor) i TTA procesorima (Transport Triggered Architecture) s VLIW arhitekturom.
Implementacija OpenCL jezgri kompajlera temelji se na LLVM-u, dok se za frontend za OpenCL C koristi Clang. Kako bi se osigurala odgovarajuća prenosivost i performanse, kompajler OpenCL jezgri može generirati kombinirane funkcije koje mogu koristiti različite hardverske resurse za paralelno izvršavanje koda, kao što su VLIW, superskalarnost, SIMD, SIMT, višejezgreni i višedretveni. Podrška za ICD drajvere je prisutna.
(Installable Client Driver). Dostupni su backendovi za osiguranje rada preko CPU-a, ASIP-a (TCE/TTA), GPU-a zasnovanog na HSA arhitekturi i NVIDIA GPU-a (putem libcuda).
U novoj verziji:
- Dodana je podrška za Clang/LLVM 18.0, a podrška za LLVM 10, 11, 12 i 13 je ukinuta.
- Implementiran je novi backend cpu-tbb, koji koristi biblioteku OneTBB za paralelizaciju operacija i planiranje izvršavanja zadataka, a koju razvija Intel.
- U backendu cpu, koji osigurava izvršavanje OpenCL jezgra na CPU-u, dodana je podrška za standard paralelnog programiranja OpenMP, dodat je metod clGetDeviceAndHostTimer(), kao i implementirana su eksperimentalna proširenja cl_pocl_svm_rect, cl_pocl_command_buffer_svm i cl_pocl_command_buffer_host_buffer.
- U backendu 'Remote', namijenjenom organizaciji distribuiranih izračuna putem vanjskog izvršavanja OpenCL komandi na drugim hostovima u mreži na kojima se izvodi pozadinski proces pocld, dodana je podrška za CG SVM (Coarse-Grain Shared Virtual Memory), mogućnost pristupa backendu koristeći komunikacijski protokol Vsock i podrška za kompajliranje i povezivanje programa putem funkcija clCompileProgram() i clLinkProgram().
- U backendu LevelZero, koji koristi Level Zero API, omogućeno je kreiranje bafera veličine veće od 4GB i implementirane su optimizacije procesa sinkronizacije.
- U backendu CUDA implementirane su operacije sub_group_shuffle i sub_group_shuffle_xor, a također je povećan limit CL_DEVICE_MAX_MEM_ALLOC_SIZE.
Izvor: opennet.ru
