PoCL 1.6 (Portable Computing Language OpenCL) -projektin uusi versio on juuri julkaistu . Version 1.6 kohokohtiin kuuluvat yhteensopivuus Clang/LLVM 11.0:n kanssa sekä CUDA:n suorituskyvyn ja toimintojen parantamiseksi tehty työ, parannettu yhteensopivuus PowerPC:n kanssa ja parannetut OpenCL-virheenkorjausominaisuudet.
Niille, jotka eivät ole perehtyneet PoCL:ään, se on kannettava, avoimen lähdekoodin (MIT-lisensoitu) OpenCL-standardin toteutus (1.2 ja joitakin 2.0-yhteensopivia ominaisuuksia). Sen lisäksi, että se on erittäin kannettava, usean laitteen (aidosti heterogeeninen) avoimen lähdekoodin OpenCL-toteutus , tämän projektin ensisijaisena tavoitteena on parantaa erilaisten OpenCL-yhteensopivien laitteiden yhteentoimivuutta integroimalla ne yhdeksi, keskitetysti orkestroiduksi alustaksi.
Lisäksi yksi tärkeimmistä pitkän aikavälin tavoitteista on parantaa OpenCL-ohjelmien suorituskyvyn siirrettävyyttä laitetyypeissä, jotka käyttävät ajonaikaisia ​​ja kokoamistekniikoita.
OpenCL-ytimen kääntäjä perustuu LLVM: ään ja Clangia käytetään liitäntänä OpenCL C: hen. Riittävän siirrettävyyden ja suorituskyvyn tarjoamiseksi OpenCL-ytimen kääntäjä voi tuottaa yhdistettyjä toimintoja, jotka voivat käyttää erilaisia ​​laitteistoresursseja koodin suorituksen rinnakkaistamiseksi , kuten VLIW, superskalari, SIMD, SIMT, moniydin ja monisäikeinen. ICD (Installable Client Driver) -ajureille on tuki. On olemassa taustatietoja työn tuottamiseksi suorittimen, ASIP: n (TCE / TTA), HSA-arkkitehtuuriin perustuvan GPU: n ja NVIDIA GPU: n (CUDA) kautta.
PoCL 1.6: n tärkeimmät uudet ominaisuudet
Tämä uusi PoCL 1.6 -versio korostaa kykyä koota tämä toteutus laiteajureilla, jotka ovat käytössä käännösaikana, ja laitteen saatavuus tarkistetaan käynnistyksen yhteydessä (aiemmin järjestelmät, joihin PoCL on rakennettu ja ajettu) heillä olisi pitänyt olla sama ohjaimen tuki). Toteutettu kyky käyttää conda-paketinhallintaa PoCL-binaaripakettien jakamiseen CUDA-tuella Linux-x86_64- ja Linux-ppc64le-järjestelmille.
Toinen erottuva muutos on LLVM 11: n tuki sekä laajennetut mahdollisuudet OpenCL-koodin virheenkorjaukseen käytettäessä CPU-ohjainta.
Lisäksi korostetaan, että CUDA-taustakuvan suorituskyvyn optimointi suoritettiin, mikä mahdollisti huomattavasti paikallisen muistin (FFT, GEMM) käyttöön liittyvien toimintojen nopeuttamisen.
SHOC-vertailuarvoja käyttävät vertailuarvot (joita testataan nyt jatkuvasti) osoittavat, että nämä optimoinnit tuottivat paljon parempaa suorituskykyä, erityisesti paikallista muistia sisältävien vertailuarvojen, kuten FFT ja GEMM, suhteen verrattuna PoCL saavuttaa nyt kilpailukykyisen suorituskyvyn usein Nvidian omalla OpenCL-ohjaimella). Olemme tyytyväisiä panoksiin jäljellä olevien ongelma-alueiden perussyiden tunnistamiseksi ja poistamiseksi. Toivotamme myös tervetulleeksi panostukset OpenCL 1.2 / 3.0 -standardien ominaisuuksien kattavuuden parantamiseen.

- PoCL-suorituskyky monissa testeissä on nyt lähellä NVIDIA: n omistamaa OpenCL-ohjainta.
- Lisättiin HARDENING_ENABLE-kokoamisparametri, jotta kääntäjävaihtoehdot voisivat luoda turvallisemman libpocl.so: n suorituskyvyn heikkenemisen kustannuksella.
- Palautettu tuki PowerPC 8/9 -järjestelmille, joiden OpenCL-toteutustaso käytettäessä pthread- ja CUDA-laitteita vastaa CUDA-tasoa x86_64-järjestelmissä.
- Muutettu ABI CUDA-ytimille, jotka käyttävät __ paikallista lohkoa. Päivityksen jälkeen käyttäjien on tyhjennettävä pocl-välimuisti.
- Tuki SINGLE_LLVM_LIB-koontivaihtoehdolle on poistettu sen sijaan, että määritettäisiin kirjastot, joihin sidotaan, käyttämällä STATIC_LLVM- ja llvm-config-tiedostoja.
Lopuksi, jos haluat tietää lisää tästä uudesta versiosta, voit tarkistaa tiedot alkuperäisestä ilmoituksesta.
Lisätietoja tästä toteutuksesta kiinnostuneet voivat tutustua sen viralliseen verkkosivustoon , josta he löytävät dokumentaatiota ja ladattavia tiedostoja.
Projektikoodi jaetaan MIT-lisenssillä, ja työtä tuetaan alustoilla X86_64, MIPS32, ARM v7, AMD HSA APU ja useilla erikoistuneilla VLIW-arkkitehtuurilla varustetuilla TTA-prosessoreilla.