PoCL 1.6, OpenCL-i standardi iseseisev rakendus

Äsja avaldati PoCL 1.6 (Portable Computing Language OpenCL) projekti uus versioon . Versiooni 1.6 oluliste omaduste hulka kuuluvad ühilduvus Clang/LLVM 11.0-ga, samuti CUDA jõudluse ja funktsioonide parandamiseks tehtud tööd, parem ühilduvus PowerPC-ga ning täiustatud OpenCL-i silumisvõimalused.

Neile, kes PoCL-iga tuttavad pole, on see OpenCL-standardi (1.2 koos mõnede 2.0-ga ühilduvate funktsioonidega) kaasaskantav, avatud lähtekoodiga implementatsioon (MIT-litsentsiga) . Lisaks sellele, et see on väga kaasaskantav, mitme seadmega (tõeliselt heterogeenne) avatud lähtekoodiga OpenCL-i implementatsioon , on selle projekti peamine eesmärk parandada erinevate OpenCL-ühilduvate seadmete koostalitlusvõimet, integreerides need üheks tsentraalselt juhitavaks platvormiks.

Lisaks on üks peamisi pikaajalisi eesmärke parandada OpenCL-i programmide jõudluse teisaldatavust seadmetüüpides, mis kasutavad käituse ja kompileerimise tehnikaid.

OpenCL-i kerneli kompilaator põhineb LLVM-il ja Clangi kasutatakse OpenCL C liidesena. Nõuetekohase teisaldatavuse ja jõudluse tagamiseks võib OpenCL-i kerneli kompilaator genereerida kombineeritud funktsioone, mis saavad koodi täitmise paralleelseks kasutada erinevaid riistvararessursse , näiteks VLIW, superskalar, SIMD, SIMT, mitmetuumaline ja mitmekeermeline. ICD (Installable Client Driver) draiverid on toetatud. Töö tagamiseks on olemas taustaprogrammid protsessori, ASIP (TCE / TTA), HSA arhitektuuril põhineva GPU ja NVIDIA GPU (CUDA) kaudu.

PoCL 1.6 peamised uued funktsioonid

See uus PoCL 1.6 versioon tõstab esile selle rakenduse kompileerimise võimaluse kompileerimise ajal lubatud draiveritega, samuti kontrollitakse seadme kättesaadavust käivitamisel (varem on süsteemid, millele PoCL on ehitatud ja töötab neil oleks pidanud olema sama kontrolleri tugi). Rakendas võimalust kasutada conda paketihaldurit PoCL-binaarpakettide levitamiseks koos CUDA toega Linux-x86_64 ja Linux-ppc64le süsteemidele.

Teine silmapaistev muudatus on LLVM 11 tugi koos laiendatud võimalustega OpenCL-koodi silumiseks protsessori kontrolleri kasutamisel.

Lisaks tuuakse esile, et viidi läbi CUDA taustaprogrammi jõudluse optimeerimine, mis võimaldas märkimisväärselt kiirendada kohaliku mälu (FFT, GEMM) kasutamisega seotud toiminguid.

SHOC-võrdlusaluseid kasutavad võrdlusuuringud (mida nüüd pidevalt testitakse) näitavad, et need optimeerimised andsid palju parema jõudluse, eriti kohaliku mälu, näiteks FFT ja GEMM, võrdlusnäitajate puhul eelmine viide. PoCL saavutab nüüd sageli konkurentsivõimelise jõudluse Nvidia patenteeritud OpenCL-draiveriga). Tervitame kaastööd ülejäänud probleemipiirkondade algpõhjuste väljaselgitamiseks ja kõrvaldamiseks. Samuti tervitame panust OpenCL 1.2 / 3.0 standardite funktsioonide katvuse parandamiseks.

  • PoCL-i jõudlus on paljudes testides nüüd NVIDIA patenteeritud OpenCL-draiveri lähedal.
  • Lisas kompileerimise parameetri HARDENING_ENABLE, et võimaldada kompilaatori valikutel genereerida turvalisem libpocl.so jõudluse halvenemise hinnaga.
  • Tagastati tugi PowerPC 8/9 süsteemidele, mille OpenCL-i rakendustasand pthread- ja CUDA-seadmete kasutamisel vastab CUDA-tasemele x86_64 süsteemides.
  • Muutis ABI CUDA tuumade jaoks, mis kasutavad __ kohalikke plokke. Pärast täiendamist peavad kasutajad tühjendama pocl-vahemälu.
  • Suvandit SINGLE_LLVM_LIB buildi tugi on eemaldatud, selle asemel, et määrata STATIC_LLVM ja llvm-config, milliste teekidega siduda.

Lõpuks, kui soovite selle uue versiooni kohta rohkem teada saada, saate üksikasju vaadata algsest teadaandest.

Need, kes on selle rakenduse kohta rohkem huvitatud, saavad külastada selle ametlikku veebisaiti , kust leiavad dokumentatsiooni ja allalaaditavaid faile.

Projekti koodi levitatakse MIT-litsentsi alusel ja tööd toetatakse platvormidel X86_64, MIPS32, ARM v7, AMD HSA APU ja mitmesugustel VLIW arhitektuuriga TTA-protsessoritele.


Lisa eelistatud allikana Google'is