LLVM proiektuak HPVM 1.0 aurkeztu zuen, CPU, GPU, FPGA eta azeleragailuetarako konpilatzailea.

LLVM proiektuaren garatzaileek HPVM 1.0 (Heterogeneous Parallel Virtual Machine) konpilatzailearen bertsioa argitaratu dute, sistema heterogeneoetarako programazioa sinplifikatzeko eta PUZ, GPU, FPGA eta domeinu espezifikoko hardware azeleragailuetarako kodea sortzeko tresnak eskaintzeko (laguntza FGPA eta azeleragailuak ez ziren 1.0 bertsioan sartu). Proiektuaren kodea Apache 2.0 lizentziapean banatzen da.

HPVM-ren ideia nagusia konpilatzean paralelo-exekutatu daitezkeen programen irudikapen bateratua eskaintzea da, konputazio paraleloa onartzen duten hainbat hardware erabiliz exekutatzeko erabil daitekeena, besteak beste, GPUak, argibide bektorialak, nukleo anitzeko prozesadoreak, FPGAak eta hainbat azeleragailu txip espezializatuak. Beste sistema batzuek ez bezala, HPVM-k konputazio heterogeneoa antolatzeko hiru gaitasun konbinatzen saiatu zen: hizkuntza eta hardwaretik independentea den tarteko irudikapena, instrukzio-multzo birtualaren arkitektura (ISA) eta exekuzio-denboraren programazioa.

HPVM-ren xede-independentearen tarteko irudikapena (IR) LLVM 9.0 bitarteko instrukzioen irudikapenean oinarritzen da eta datu-fluxuaren grafiko hierarkiko batekin hedatzen du zereginen, datuen eta kanalizazio-mailako paralelismoa harrapatzeko. HPVM tarteko irudikapenak instrukzio bektorialak eta partekatutako memoria ere barne hartzen ditu. Tarteko irudikapena erabiltzearen helburu nagusia kodea sortzea eta optimizatzea da sistema heterogeneoetarako.

Instrukzio-multzo birtualeko arkitekturak (ISA) ordenagailu paraleloko hardware mota desberdinen artean eramangarritasuna ahalbidetzen du eta sistema heterogeneoetako elementu desberdinak erabiltzean errendimendua ez galtzea ahalbidetzen du. ISA birtuala ere erabil daiteke CPUak, GPUak, FPGAak eta hainbat azeleragailu erabiliz exekutatu daitekeen programa exekutagarri unibertsala emateko.

Gaur egungo garapen-fasean, HPVM-k ISA birtual bat erabiliz definitutako aplikazio-nodoak itzultzeko gai diren kode-sorgailuak eskaintzen ditu NVIDIA GPUak (cuDNN eta OpenCL), Intel AVX bektore-argibideak eta nukleo anitzeko x86 CPUak erabiliz. Exekuzioan, HPVM-k prozesu konputazionalaren programazio politika malguak aplikatzen ditu, programaren informazioan oinarrituta (egitura grafikoa) eta sisteman eskuragarri dauden helburu informatikoko edozein gailutan exekutatzeko banakako programa-nodoak konpilatuz ezarrita.

Kontuan izan da HPVM erabiltzeak produktibitatearen igoera nabarmena lor dezakeela. HPVM itzultzaileen errendimendua eskuz idatzitako OpenCL kodearen parekoa da GPUetarako eta konputazio bektorialeko gailuetarako.

Lehenengo aurrebista-oharrarekin alderatuta, HPVM 1.0-k aljebra linealaren tentsorearen eragiketetarako laguntza, Pytorch eta Keras-en frontend-ak, konboluzio-operadoreen hurbilketak eta hurbilketa-sintonizazio-esparru bat ditu, tentsore-eragiketa zehatzetarako hurbilketa optimoak automatikoki hautatzen dituena eta errendimendu optimoa eskaintzen duen konfigurazioa hautatzen duena.

Iturria: opennet.ru

Gehitu iruzkin berria