Pravkar je bila izdana nova različica projekta PoCL 1.6 (Portable Computing Language OpenCL) . Med pomembnejšimi značilnostmi različice 1.6 so združljivost s Clang/LLVM 11.0, pa tudi delo za izboljšanje zmogljivosti in funkcij CUDA, izboljšana združljivost s PowerPC in izboljšane zmogljivosti odpravljanja napak OpenCL.
Za tiste, ki niso seznanjeni s PoCL, gre za prenosljivo, odprtokodno implementacijo (z licenco MIT) standarda OpenCL (1.2 z nekaterimi funkcijami, združljivimi z 2.0). Poleg tega, da je zelo prenosljiva, večnamenska (resnično heterogena) odprtokodna implementacija OpenCL , je glavni cilj tega projekta izboljšati interoperabilnost različnih naprav, združljivih z OpenCL, z njihovo integracijo v enotno, centralno orkestrirano platformo.
Poleg tega je eden ključnih dolgoročnih ciljev izboljšati prenosljivost zmogljivosti programov OpenCL na tipih naprav, ki uporabljajo tehnike izvajanja in prevajanja.
Prevajalnik jedra OpenCL temelji na LLVM, Clang pa se uporablja kot vmesnik za OpenCL C. Za zagotovitev ustrezne prenosljivosti in zmogljivosti lahko prevajalnik jedra OpenCL generira kombinirane funkcije, ki lahko uporabljajo različne strojne vire za paralelizacijo izvajanja kode, kot je VLIW, superscalar , SIMD, SIMT, večjedrni in večnitni. Na voljo je podpora za gonilnike ICD (Installable Client Driver). Obstajajo zapornice za zagotavljanje dela prek CPU, ASIP (TCE / TTA), GPU, ki temelji na arhitekturi HSA, in NVIDIA GPU (CUDA).
Glavne novosti PoCL 1.6
Ta nova različica PoCL 1.6 poudarja zmožnost sestavljanja te izvedbe z omogočenimi gonilniki naprav ob prevajanju, pa tudi razpoložljivost naprave bo preverjena ob zagonu (prej bi morali imeti sistemi, na katerih je PoCL zgrajen in zagnan enako podporo krmilnika). Izvedli smo možnost uporabe upravitelja paketov conda za distribucijo binarnih paketov PoCL s podporo CUDA za sisteme Linux-x86_64 in Linux-ppc64le.
Druga sprememba, ki izstopa, je podpora za LLVM 11 skupaj z razširjenimi možnostmi za odpravljanje napak kode OpenCL pri uporabi krmilnika CPU.
Poleg tega je poudarjeno, da je bila izvedena optimizacija delovanja zaledja CUDA, kar je omogočilo znatno pospešitev operacij, povezanih z uporabo lokalnega pomnilnika (FFT, GEMM).
Merila uspešnosti, ki uporabljajo merila uspešnosti SHOC (ki se zdaj neprestano preizkušajo, kažejo, da so te optimizacije privedle do veliko boljše zmogljivosti, zlasti za merila uspešnosti, ki vključujejo lokalni pomnilnik, kot sta FFT in GEMM, v primerjavi s predhodnimi referencami. PoCL zdaj pogosto dosega konkurenčno zmogljivost z Nvidijinim OpenCL voznik). Pozdravljamo prispevke za prepoznavanje in odpravljanje vzrokov za preostala težavna področja. Pozdravljamo tudi prispevke za izboljšanje pokritosti funkcij za standarde OpenCL 1.2 / 3.0.

- Zmogljivost PoCL v številnih preizkusih je zdaj blizu lastniškemu gonilniku OpenCL NVIDIA.
- Dodan je parameter prevajanja HARDENING_ENABLE, da se omogoči možnost prevajalnika, da ustvari varnejši libpocl.so za ceno poslabšanja zmogljivosti.
- Vrnjena podpora za sisteme PowerPC 8/9, za katere raven implementacije OpenCL pri uporabi naprav pthread in CUDA ustreza ravni CUDA v sistemih x86_64.
- Spremenjen ABI za jedra CUDA, ki uporabljajo __ lokalne bloke. Po nadgradnji morajo uporabniki počistiti predpomnilnik pocl.
- Podpora za možnost gradnje SINGLE_LLVM_LIB je bila odstranjena, namesto da bi s STATIC_LLVM in llvm-config določili, na katere knjižnice se želite vezati.
Če želite izvedeti več o tej novi različici, si lahko podrobnosti ogledate v prvotni objavi.
Tisti, ki želijo izvedeti več o tej implementaciji, lahko obiščejo njeno uradno spletno stran , kjer najdejo dokumentacijo in datoteke za prenos.
Koda projekta se distribuira pod licenco MIT, delo pa je podprto na platformah X86_64, MIPS32, ARM v7, AMD HSA APU in različnih specializiranih procesorjih TTA z arhitekturo VLIW.