Ką tik išleista nauja „PoCL 1.6“ (nešiojamųjų kompiuterių kalbos OpenCL) projekto versija . Svarbiausi 1.6 versijos privalumai: suderinamumas su „Clang/LLVM 11.0“, taip pat atlikti darbai siekiant pagerinti CUDA našumą ir funkcijas, pagerintas suderinamumas su „PowerPC“ ir patobulintos „OpenCL“ derinimo galimybės.
Tiems, kurie nėra susipažinę su „PoCL“, tai yra nešiojama, atvirojo kodo (MIT licencijuota) „OpenCL“ standarto (1.2 su kai kuriomis su 2.0 suderinamomis funkcijomis) įgyvendinimas. Be to, kad tai yra labai nešiojama, keliems įrenginiams skirta (išties heterogeniška) atvirojo kodo „OpenCL“ įgyvendinimas , pagrindinis šio projekto tikslas yra pagerinti įvairių su „OpenCL“ suderinamų įrenginių sąveikumą, integruojant juos į vieną, centralizuotai valdomą platformą.
Be to, vienas iš pagrindinių ilgalaikių tikslų yra pagerinti „OpenCL“ programų našumą įrenginiuose, naudojančiuose vykdymo laiką ir kompiliavimo metodus.
„OpenCL“ branduolio kompiliatorius yra pagrįstas LLVM, o „Clang“ naudojamas kaip sąsaja su „OpenCL C“. Norint užtikrinti tinkamą perkeliamumą ir našumą, „OpenCL“ branduolio kompiliatorius gali generuoti kombinuotas funkcijas, kurios gali naudoti įvairius aparatūros išteklius, kad būtų galima lygiagrečiai vykdyti kodo vykdymą, pvz., VLIW, superscalar , SIMD, SIMT, daugiagysliai ir daugiasriegiai. Yra ICD (Installable Client Driver) tvarkyklių palaikymas. Yra programinės įrangos, teikiančios darbą per procesorių, ASIP (TCE / TTA), GPU, pagrįstą HSA architektūra, ir NVIDIA GPU (CUDA).
Pagrindinės naujos „PoCL 1.6“ savybės
Ši nauja „PoCL 1.6“ versija pabrėžia galimybę kompiliuoti šį diegimą su įrenginio tvarkyklėmis, įgalintomis kompiliavimo metu, taip pat įrenginio prieinamumas bus patikrintas paleidimo metu (anksčiau sistemos, kuriose yra sukurta ir veikia „PoCL“, turėjo būti tas pats valdiklio palaikymas). Įdiegta galimybė naudoti „conda“ paketų tvarkytuvę platinant „PoCL“ dvejetainius paketus su „CUDA“ palaikymu „Linux-x86_64“ ir „Linux-ppc64le“ sistemoms.
Kitas išskirtinis pakeitimas yra „LLVM 11“ palaikymas kartu su išplėstomis galimybėmis derinti „OpenCL“ kodą naudojant procesoriaus valdiklį.
Be to, reikia pažymėti, kad buvo atliktas CUDA backend optimizavimas, kuris leido žymiai supaprastinti operacijas, susijusias su vietinės atminties (FFT, GEMM) naudojimu.
Lyginamieji indeksai, naudojantys SHOC etalonus (kurie dabar yra nuolat tikrinami, rodo, kad šie optimizavimai padėjo pasiekti daug geresnių rezultatų, ypač lyginant su vietine atmintimi, pvz., FFT ir GEMM, palyginti su aukščiau pateiktu pavyzdžiu. „PoCL“ dabar dažnai pasiekia konkurencingą našumą su „Nvidia“ nuosavybės teise priklausančia „OpenCL“. vairuotojas). Mes sveikiname indėlį siekiant nustatyti ir pašalinti likusių probleminių sričių pagrindines priežastis. Mes taip pat sveikiname indėlį siekiant pagerinti „OpenCL 1.2 / 3.0“ standartų funkcijų aprėptį.

- „PoCL“ našumas daugelyje bandymų dabar artimas NVIDIA patentuotai „OpenCL“ tvarkyklei.
- Pridėtas kompiliavimo parametras HARDENING_ENABLE, kad kompiliatoriaus parinktys leistų sugeneruoti saugesnį libpocl.so našumo pablogėjimo kaina.
- Grąžintas „PowerPC 8/9“ sistemų palaikymas, kuriam „OpenCL“ diegimo lygis naudojant pthread ir CUDA įrenginius atitinka CUDA lygį x86_64 sistemose.
- Pakeistas ABI CUDA branduoliams, naudojantiems __ vietinius blokus. Atnaujinę vartotojai turi išvalyti „Pocl“ talpyklą.
- Parama SINGLE_LLVM_LIB komponavimo galimybei buvo pašalinta, užuot naudojusios STATIC_LLVM ir llvm-config apibrėžti, prie kurių bibliotekų susieti.
Galiausiai, jei norite sužinoti daugiau apie šią naują versiją, galite peržiūrėti išsamią informaciją originaliame pranešime.
Norintys sužinoti daugiau apie šį įgyvendinimą gali apsilankyti oficialioje svetainėje , kurioje rasite dokumentaciją ir atsisiunčiamus failus.
Projekto kodas platinamas pagal MIT licenciją, o darbas palaikomas platformose X86_64, MIPS32, ARM v7, AMD HSA APU ir įvairiuose specializuotuose TTA procesoriuose su VLIW architektūra.