Kakalabas lang ng bagong bersyon ng proyektong PoCL 1.6 (Portable Computing Language OpenCL) . Kabilang sa mga tampok ng bersyon 1.6 ang pagiging tugma sa Clang/LLVM 11.0, pati na rin ang mga gawaing ginawa upang mapabuti ang pagganap at mga function ng CUDA, pinahusay na pagiging tugma sa PowerPC, at pinahusay na kakayahan sa pag-debug ng OpenCL.
Para sa mga hindi pamilyar sa PoCL, ito ay isang portable, open-source na implementasyon (lisensyado ng MIT) ng pamantayang OpenCL (1.2 na may ilang 2.0 compatible na mga tampok). Bukod sa pagiging isang lubos na portable, multi-device (tunay na magkakaiba) open-source na implementasyon ng OpenCL , ang pangunahing layunin ng proyektong ito ay upang mapabuti ang interoperability ng magkakaibang mga aparatong compatible sa OpenCL sa pamamagitan ng pagsasama ng mga ito sa isang solong, sentralisadong platform.
Bilang karagdagan, ang isa sa mga pangunahing layuning pangmatagalan ay upang mapabuti ang kakayahang dalhin ang pagganap ng mga programa ng OpenCL sa mga uri ng aparato na gumagamit ng mga diskarteng runtime at compilation.
Ang compiler ng OpenCL kernel ay batay sa LLVM at ang Clang ay ginagamit bilang interface sa OpenCL C. Upang maibigay ang wastong kakayahang dalhin at pagganap, ang OpenCL kernel compiler ay maaaring makabuo ng pinagsamang mga pagpapaandar na maaaring gumamit ng iba't ibang mga mapagkukunan ng hardware upang maipareho ang pagpapatupad ng code, tulad ng VLIW, superscalar , SIMD, SIMT, multi-core, at multi-thread. Mayroong suporta para sa mga driver ng ICD (Na-install na Client Driver). May mga backend upang magbigay ng trabaho sa pamamagitan ng CPU, ASIP (TCE / TTA), GPU batay sa arkitektura ng HSA, at NVIDIA GPU (CUDA).
Pangunahing mga bagong tampok ng PoCL 1.6
Ang bagong bersyon ng PoCL 1.6 na ito ay nagha-highlight ng kakayahang ipagsama ang pagpapatupad na ito sa mga driver ng aparato na pinagana sa oras ng pagtitipon, pati na rin ang pagkakaroon ng aparato ay mapatunayan sa pagsisimula (dati, ang mga system kung saan itinayo at pinatakbo ang PoCL na dapat sana ay mayroon sila. ang parehong suporta ng controller). Ipinatupad ang kakayahang magamit ang conda package manager upang ipamahagi ang PoCL binary packages na may suporta ng CUDA para sa mga Linux-x86_64 at Linux-ppc64le system.
Ang isa pang pagbabago na namumukod ay ang suporta para sa LLVM 11 kasama ang pinalawak na mga posibilidad para sa pag-debug ng OpenCL code kapag ginagamit ang CPU controller.
Bilang karagdagan, dapat pansinin na ang pag-optimize sa pagganap ng backend ng CUDA ay isinasagawa, na makabuluhang streamline ng mga pagpapatakbo na may kaugnayan sa paggamit ng lokal na memorya (FFT, GEMM).
Ang mga benchmark na gumagamit ng mga benchmark ng SHOC (na patuloy na nasubok ngayon ay ipinapakita na ang mga pag-optimize na ito ay nagresulta sa mas mahusay na pagganap, lalo na para sa mga benchmark na kinasasangkutan ng lokal na memorya tulad ng FFT at GEMM, kumpara sa isang pagpapatakbo ng sanggunian sa itaas. Ang PoCL ay madalas na nakakamit ngayon ng mapagkumpitensyang pagganap sa pagmamay-ari ng Openvid ng Nvidia. driver). Tinatanggap namin ang mga kontribusyon upang makilala at matanggal ang mga pangunahing sanhi ng mga natitirang lugar ng problema. Tinatanggap din namin ang mga kontribusyon upang mapabuti ang saklaw ng tampok para sa pamantayan ng OpenCL 1.2 / 3.0.

- Ang pagganap ng PoCL sa maraming mga pagsubok ay malapit na ngayon sa pagmamay-ari ng driver ng OpenCL ng NVIDIA.
- Idinagdag ang HARDENING_ENABLE parameter ng pagtitipon upang paganahin ang mga pagpipilian sa compiler upang makabuo ng isang mas ligtas na libpocl.so sa gastos ng pagkasira ng pagganap.
- Ibinalik ang suporta para sa mga system ng PowerPC 8/9, kung saan ang antas ng pagpapatupad ng OpenCL kapag gumagamit ng mga aparato ng pthread at CUDA ay tumutugma sa antas ng CUDA sa mga x86_64 system.
- Pinalitan ang ABI para sa mga kernel ng CUDA na gumagamit ng __ mga lokal na bloke. Pagkatapos ng pag-upgrade, kailangang i-clear ng mga gumagamit ang pocl cache.
- Inalis ang suporta para sa pagpipiliang build ng SINGLE_LLVM_LIB, sa halip na gamitin ang STATIC_LLVM at llvm-config upang tukuyin kung aling mga aklatan ang bubuklod.
Panghuli, kung gusto mong malaman ang higit pa tungkol sa bagong bersyong ito, maaari mong tingnan ang mga detalye sa orihinal na anunsyo.
Ang mga interesadong matuto nang higit pa tungkol sa implementasyong ito ay maaaring sumangguni sa opisyal na website nito , kung saan makakahanap sila ng dokumentasyon at mga nada-download na file.
Ang code ng proyekto ay ipinamamahagi sa ilalim ng lisensya ng MIT at ang trabaho ay suportado sa mga platform X86_64, MIPS32, ARM v7, AMD HSA APU at iba't ibang mga dalubhasang processor ng TTA na may arkitekturang VLIW.