Izdanje PoCL 6.0 sa nezavisnom implementacijom OpenCL standarda

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