Objavljen je izdanak projekta PoCL 5.0 (Portable Computing Language OpenCL), koji razvija implementaciju standarda OpenCL neovisnu o proizvođačima grafičkih akceleratora i omogućava korištenje različitih backendova za izvođenje OpenCL jezgre na različitim vrstama grafičkih i središnjih procesora. Kod projekta se distribuira pod MIT licencom. Podržano je izvođenje na platformama X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU i raznim specijaliziranim ASIP (Processor s aplikacijski specifičnom instrukcijskom setom) i TTA procesorima (Transport Triggered Architecture) s VLIW arhitekturom.
Implementacija kompilatora OpenCL jezgre temelji se na LLVM, a za frontend za OpenCL C koristi se Clang. Kako bi se osigurala adekvatna prenosivost i performanse, kompilator OpenCL jezgre 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šekernelna i višedretvena obrada. Podrška za ICD drajvere (Installable Client Driver) je prisutna. Dostupni su backendovi za osiguranje rada putem CPU, ASIP (TCE/TTA), GPU temeljenog na HSA arhitekturi i NVIDIA GPU (putem libcuda).
U novoj verziji:
- Implementiran je novi backend „Remote“, namijenjen organizaciji distribuiranih izračuna putem premještanja obrade OpenCL naredbi na druge hostove u mreži na kojima radi pozadinski proces pocld.
- U CUDA drajveru implementirane su dodatne mogućnosti i proširenja OpenCL 3.0, poput atomskih operacija, varijabli s ograničenim opsegom, podgrupa intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier i sub_group_ballot.
- Poboljšana je podrška za CPU temeljen na RISC-V arhitekturi. Rad PoCL-a testiran je na ploči Starfive VisionFive 2 s učitanim Ubuntu 23.10 okruženjem s LLVM 17 i GCC 13.2.
- Implementirano je proširenje cl_ext_float_atomics s podrškom za FP32 i FP64.
- Implementacija proširenja cl_khr_command_buffer ažurirana je na verziju 0.9.4.
- Predložen je eksperimentalni backend AlmaIF za FPGA.
- Uklonjena je nedovršena podrška za međusobno predstavljanje šablona SPIR 1.x/2.0. Kao preporučeni međusobni jezik šablona proglašen je SPIR-V.
- Dodana je podrška za Clang/LLVM 17.0. Provođenje podrške za Clang/LLVM 10-13 proglašeno je zastarjelim.
Izvor: opennet.ru
