PoCL 1.6, samostalna primjena OpenCL standarda

Nova verzija projekta PoCL 1.6 (Portable Computing Language OpenCL) upravo je objavljena . Među najvažnijim značajkama verzije 1.6 su kompatibilnost s Clang/LLVM 11.0, kao i rad na poboljšanju performansi i funkcija CUDA-e, poboljšana kompatibilnost s PowerPC-om i poboljšane mogućnosti otklanjanja pogrešaka OpenCL-a.

Za one koji nisu upoznati s PoCL-om, to je prijenosna, otvorenog koda (MIT licencirana) implementacija OpenCL standarda (1.2 s nekim značajkama kompatibilnim s 2.0). Osim što je vrlo prijenosna, višeuređajna (zaista heterogena) OpenCL implementacija otvorenog koda , primarni cilj ovog projekta je poboljšanje interoperabilnosti različitih OpenCL-kompatibilnih uređaja njihovom integracijom u jednu, centralno orkestriranu platformu.

Uz to, jedan od ključnih dugoročnih ciljeva je poboljšati prijenos performansi programa OpenCL na izvedbama na vrstama uređaja koji koriste tehnike izvođenja i kompilacije.

Kompajler OpenCL kernela zasnovan je na LLVM-u, a Clang se koristi kao sučelje za OpenCL C. Da bi osigurao ispravnu prenosivost i izvedbu, kompajler OpenCL kernela može generirati kombinirane funkcije koje mogu koristiti različite hardverske resurse za paraleliziranje izvršavanja koda , kao što su VLIW, superscalar, SIMD, SIMT, višejezgreni i višenitni. Postoji podrška za upravljačke programe ICD (Installable Client Driver). Postoje pozadinske mreže za rad putem CPU-a, ASIP-a (TCE / TTA), GPU-a temeljenog na HSA arhitekturi i NVIDIA GPU-a (CUDA).

Glavne nove značajke PoCL 1.6

Ova nova verzija PoCL 1.6 ističe mogućnost kompajliranja ove implementacije s upravljačkim programima uređaja omogućenim u vrijeme kompilacije, kao i dostupnost uređaja provjerit će se prilikom pokretanja (prethodno su sustavi na kojima je PoCL izgrađen i pokrenut trebali su imati istu podršku kontrolera). Implementirana sposobnost korištenja upravitelja paketima conda za distribuciju PoCL binarnih paketa s CUDA podrškom za Linux-x86_64 i Linux-ppc64le sustave.

Još jedna promjena koja se ističe je podrška za LLVM 11 zajedno s proširenim mogućnostima za uklanjanje pogrešaka s OpenCL kodom kada se koristi CPU kontroler.

Uz to, istaknuto je da je provedena optimizacija izvedbe pozadine CUDA, što je omogućilo značajno ubrzanje operacija povezanih s korištenjem lokalne memorije (FFT, GEMM).

Mjerila koja koriste SHOC referentne vrijednosti (koja se sada kontinuirano testiraju pokazuju da su ove optimizacije rezultirale mnogo boljim performansama, posebno za mjerila koja uključuju lokalnu memoriju poput FFT-a i GEMM-a, u usporedbi s nizom prethodna referenca. PoCL sada često postiže konkurentne performanse s Nvidijinim vlasničkim OpenCL upravljačkim programom). Pozdravljamo doprinose u identificiranju i uklanjanju temeljnih uzroka preostalih problematičnih područja. Također pozdravljamo doprinose za poboljšanje pokrivenosti značajki za OpenCL 1.2 / 3.0 standarde.

  • PoCL performanse u mnogim testovima sada su bliske NVIDIA-inom vlasničkom OpenCL upravljačkom programu.
  • Dodan je parametar kompilacije HARDENING_ENABLE kako bi se omogućilo da opcije kompajlera generiraju sigurnije libpocl.so po cijenu degradacije performansi.
  • Vraćena podrška za PowerPC 8/9 sustave, za koju razina implementacije OpenCL-a pri korištenju pthread i CUDA uređaja odgovara razini CUDA na x86_64 sustavima.
  • Promijenjen ABI za CUDA jezgre koje koriste __ lokalnih blokova. Nakon nadogradnje korisnici trebaju očistiti predmemoriju pocl.
  • Uklonjena je podrška za opciju izrade SINGLE_LLVM_LIB, umjesto da se pomoću STATIC_LLVM i llvm-config definira na koje se knjižnice veže.

Konačno, ako želite saznati više o ovoj novoj verziji, možete provjeriti detalje u izvornoj objavi.

Oni koji žele saznati više o ovoj implementaciji mogu posjetiti službenu web stranicu , gdje mogu pronaći dokumentaciju i datoteke za preuzimanje.

Kôd projekta distribuira se pod MIT licencom, a rad je podržan na platformama X86_64, MIPS32, ARM v7, AMD HSA APU i raznim specijaliziranim TTA procesorima s VLIW arhitekturom.


Dodaj kao preferirani izvor na Googleu