I-PoCL 1.6, ukuqaliswa okuzimele kwezinga le-OpenCL

Ukwethulwa kwe- inguqulo entsha yephrojekthi I-PoCL 1.6 (Portable Computing Language OpenCL), okuvelele kwinguqulo 1.6 ukuxhaswa kweClang / LLVM 11.0, kanye nomsebenzi owenziwe ukuthuthukisa ukusebenza nemisebenzi ye-CUDA, ukusebenzisana okuthuthukile ne-PowerPC nokusetshenziswa okuthuthukile kwe-OpenCL ukulungisa iphutha.

Kulabo abangayazi i-PoCL, kufanele wazi ukuthi iyini ukuqaliswa komthombo ovulekile ophathekayo (ilayisensi yi-MIT) esezingeni le-OpenCL (1.2 enezici ezithile ze-2.0 ezisekelwayo). Kanye nokuba ngumthombo ovulekile wamadivayisi amaningi wokuqalisa i-OpenCL (ngokwehlukana ngokweqiniso) okuphatheka kalula, inhloso enkulu yale phrojekthi ukuthuthukisa ukusebenzisana kokuhlukahluka kwamadivayisi athobela i-OpenCL ngokuwafaka kupulatifomu eyodwa ehlelwe maphakathi.

Ngokwengeziwe, enye yezinhloso ezibalulekile zesikhathi eside ukwenza ukuthuthuka kokusebenza kwezinhlelo ze-OpenCL ezinhlotsheni zedivayisi ezisebenzisa isikhathi sokusebenza namasu wokuhlanganisa.

I-OpenCL kernel compiler isuselwa ku-LLVM futhi i-Clang isetshenziswa njenge-interface ku-OpenCL C. Ukunikeza ukuthwalwa nokusebenza okufanele, i-OpenCL kernel compiler ingakhipha imisebenzi ehlanganisiwe engasebenzisa izinsiza ezahlukahlukene zehadiwe ukufanisa ukwenziwa kwekhodi, njenge-VLIW, i-superscalar , I-SIMD, i-SIMT, i-multi-core, ne-multi-threaded. Kukhona ukusekelwa kwabashayeli be-ICD (Installable Client Driver). Kunezikhala ezingemuva zokunikeza umsebenzi nge-CPU, ASIP (TCE / TTA), i-GPU ngokususelwa ekwakhiweni kwe-HSA, kanye ne-NVIDIA GPU (CUDA).

Izici ezintsha eziyinhloko zePoCL 1.6

Le nguqulo entsha ye-PoCL 1.6 igqamisa ikhono lokuhlanganisa lokhu kusetshenziswa ngamashayeli wedivayisi anikwe amandla ngesikhathi sokuhlanganiswa, futhi ukutholakala kwedivayisi kuzoqinisekiswa ekuqaleni (phambilini, amasistimu lapho i-PoCL yakhelwe futhi isebenza khona bekufanele babe nakho ukwesekwa kwesilawuli esifanayo). Kusetshenziswe ikhono lokusebenzisa umphathi wephakethe le-conda ukusabalalisa amaphakheji kanambambili we-PoCL ngosizo lwe-CUDA lwezinhlelo zeLinux-x86_64 neLinux-ppc64le.

Olunye ushintsho oluvelele ukuxhaswa kwe-LLVM 11 kanye namathuba anwetshiwe wokulungisa iphutha ikhodi ye-OpenCL lapho usebenzisa isilawuli se-CPU.

Ngaphezu kwalokho, kuqokonyiswa ukuthi ukwenziwa kokusebenza kwe-CUDA backend kwenziwa, okuvumela ukusheshiswa okuphawulekayo kokusebenza okuhlobene nokusetshenziswa kwememori yendawo (FFT, GEMM).

Amabhentshimakhi asebenzisa amabhentshi we-SHOC (manje ahlolwa ngokuqhubekayo akhombisa ukuthi lokhu kulungiswa kuholele ekusebenzeni okungcono kakhulu, ikakhulukazi kumabhentshimakhi afaka imemori yasendaweni efana ne-FFT ne-GEMM, uma kuqhathaniswa nokuqhutshwa kwesethenjwa esingenhla. umshayeli). Samukela iminikelo yokuhlonza nokususa izimbangela zezindawo ezinenkinga esele. Samukela neminikelo yokwenza ngcono ukufakwa kwezici kumazinga we-OpenCL 1.2 / 3.0.

  • Ukusebenza kwePoCL ezivivinyweni eziningi manje sekuseduze nomshayeli we-NVIDIA we-OpenCL ophathelene.
  • Kungezwe ipharamitha yokuhlanganisa ye-HARDENING_ENABLE ukunika amandla izinketho zomhlanganisi ukuze kukhiqizwe i-libpocl.so ephephe kakhudlwana ngezindleko zokwehla kokusebenza.
  • Usekelo olubuyisiwe lwezinhlelo ze-PowerPC 8/9, lapho ileveli yokuqalisa ye-OpenCL lapho kusetshenziswa i-pthread ne-CUDA amadivayisi ahambelana nezinga le-CUDA kuzinhlelo ze-x86_64
  • Kushintshwe i-ABI yama-CUDA kernels asebenzisa amabhlokhi __ wendawo. Ngemuva kokuthuthuka, abasebenzisi badinga ukusula i-pocl cache.
  • Ukusekelwa kwenketho yokwakha ye-SINGLE_LLVM_LIB kususiwe, esikhundleni sokusebenzisa i-STATIC_LLVM ne-llvm-config ukuchaza ukuthi yimiphi imitapo yolwazi ozozibophezela kuyo.

Ekugcineni, uma ufuna ukwazi okwengeziwe ngale nguqulo entsha, ungabheka imininingwane esikhangisweni sokuqala. 

Ngenkathi kulabo abanentshisekelo yokwazi kabanzi ngalokhu kusetshenziswa, bangaxhumana iwebhusayithi esemthethweni kwalokhu, lapho ungathola khona imibhalo bese ulanda amafayela.

Ikhodi yephrojekthi isatshalaliswa ngaphansi kwelayisense ye-MIT futhi umsebenzi usekelwa kuzingxenyekazi X86_64, MIPS32, ARM v7, AMD HSA APU kanye nabaprosesa abahlukahlukene abakhethekile be-TTA ngobuciko be-VLIW.


Engeza njengomthombo okhethwayo ku-Google