Objavljeno je izdanje PoCL 6.0 projekta (Portable Computing Language OpenCL) kojim se razvija implementacija OpenCL standarda koja je nezavisna od proizvođača grafičkih akceleratora i omogućava korištenje različitih pozadinskih programa za izvršavanje OpenCL kernela na različitim tipovima grafike i centralnih procesora. . Šifra projekta se distribuira pod MIT licencom. Podržava rad na platformama X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU i raznim specijalizovanim ASIP (Application-Specific Instruction-set Processor) i TTA (Transport Triggered Architecture) procesorima sa VLIW arhitekturom.
Implementacija kompajlera OpenCL kernela izgrađena je na bazi LLVM-a, a Clang se koristi kao prednji kraj za OpenCL C. Da bi osigurao odgovarajuću prenosivost i performanse, kompajler jezgre OpenCL može generirati funkcije kombinacije koje mogu koristiti različite hardverske resurse za paraleliziranje izvršavanja koda, kao što su VLIW, superskalar, SIMD, SIMT, višejezgarni i multi-threading. Dostupna podrška za ICD drajver
(Upravljački program za klijenta koji se može instalirati). Postoje backendovi koji podržavaju rad preko CPU-a, ASIP-a (TCE/TTA), GPU-a zasnovanog na HSA arhitekturi i NVIDIA GPU-a (preko libcuda).
U novoj verziji:
- Dodata podrška za Clang/LLVM 18.0, izbačena podrška za LLVM 10, 11, 12 i 13.
- Implementiran je novi cpu-tbb backend, koristeći OneTBB biblioteku koju je razvio Intel za paralelizaciju operacija i planiranje izvršavanja zadataka.
- U pozadinskom dijelu procesora, koji osigurava izvršavanje OpenCL kernela na CPU-u, dodana je podrška za OpenMP standard paralelnog programiranja, dodana je metoda clGetDeviceAndHostTimer(), a eksperimentalne ekstenzije cl_pocl_svm_rect, cl_pocl_command_buffer_svm i com implemented_pocl_poffer_svm_com implementirali su clGetDeviceAndHostTimer() metodu.
- “Remote” backend, dizajniran za organiziranje distribuiranog računanja premeštanjem obrade OpenCL komandi na druge hostove na mreži koji rade pozadinski proces pocld, dodao je podršku za CG SVM (Coarse-Grain Shared Virtual Memory), mogućnost pristupa backend koristeći komunikacijski protokol Vsock i podršku za kompajliranje i povezivanje programa pomoću funkcija clCompileProgram() i clLinkProgram().
- LevelZero backend, koji koristi Level Zero API, omogućava kreiranje bafera većih od 4 GB, a implementirane su optimizacije za procese sinhronizacije.
- U CUDA backendu implementirane su operacije sub_group_shuffle i sub_group_shuffle_xor, a ograničenje CL_DEVICE_MAX_MEM_ALLOC_SIZE je povećano.
izvor: opennet.ru
