HPVM 2.0, CPU, GPU, FPGA eta hardware azeleragailuetarako konpilatzailea argitaratua

LLVM proiektuak HPVM 2.0 (Heterogeneous Parallel Virtual Machine) kaleratzea iragarri zuen, sistema heterogeneoetarako programazioa sinplifikatzeko eta PUZetarako, GPUetarako, FPGAetarako eta domeinuko hardware-azeleragailuetarako kodea sortzeko tresnak eskaintzeko xedea duen konpilatzailea. Proiektuaren kodea Apache 2.0 lizentziapean banatzen da.

Sistema paralelo heterogeneoetarako programazioa zaildu egiten da sistema berean paralelismoa lortzeko eredu desberdinak erabiltzen dituzten osagaiak egoteagatik (CPU nukleoak, instrukzio bektorialak, GPU, etab.), instrukzio multzo desberdinak eta memoria hierarkia desberdinak. Sistema bakoitzak osagai horien konbinazio propioa erabiltzen du. HPVM proiektuaren ideia nagusia konpilatzerakoan paraleloan exekutatutako programen irudikapen bateratua erabiltzea da, konputazio paraleloa onartzen duten hardware mota ezberdinetarako erabil daitekeena, besteak beste, GPUak, argibide bektorialak, nukleo anitzeko prozesadoreak, FPGAak eta hainbat azeleragailu txip espezializatuak.

Beste sistema batzuek ez bezala, HPVM konputazio heterogeneoa antolatzeko hiru gaitasun konbinatzen saiatu zen: programazio-lengoaia eta hardware-independentea den tarteko irudikapena (IR), instrukzio-multzo birtualaren arkitektura (V-ISA) eta exekuzio-denboraren programazioa:

  • HPVM tarteko irudikapenak argibideen LLVM bitarteko irudikapena hedatzen du datu-fluxuaren grafiko hierarkiko bat erabiliz 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.
  • Virtual Instruction Set Architecture (V-ISA) hardware-maila baxuko ezaugarriak abstraitzen ditu eta paralelismo eta memoria-arkitektura desberdinak bateratzen ditu oinarrizko paralelismo-eredu bat soilik erabiliz: datu-fluxuaren grafikoa. V-ISAk konputazio paralelorako ekipo mota ezberdinen artean eramangarritasuna lortzeko aukera ematen 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.
  • Konputazio-prozesuaren programazio-politika malguak exekuzioan aplikatzen dira eta programari buruzko informazioan oinarrituta (egitura grafikoa) eta sisteman eskuragarri dauden helburu informatikoko edozein gailutan exekutatzeko banakako programa-nodoen konpilazioaren bidez ezartzen dira.

Proiektuak garatutako kode-sorgailuak ISA birtual bat erabiliz definitutako aplikazio-nodoak itzultzeko gai dira NVIDIA GPUak (cuDNN eta OpenCL), Intel AVX bektore-argibideak, FPGAak eta multi-core x86 CPUak erabiliz. Kontuan izan da HPVM itzultzaileen errendimendua eskuz idatzitako OpenCL kodearen parekoa dela GPUetarako eta konputazio bektorialeko gailuetarako.

HPVM 2.0-ren berrikuntza nagusiak:

  • Hetero-C++ lengoaia frontend bat proposatu da, eta horrek C/C++-n aplikazio-kodearen paralelizazioa errazten du HPVMn konpilatzeko. Hetero-C++-k HPVM hari grafikoekin mapatzen duten datu-mailako paralelismorako eta zeregin hierarkikoetarako luzapenak definitzen ditu.
  • FPGA backend bat gehitu da Intel FPGAetan kodea exekutatzeko laguntza emateko. Exekuzioa antolatzeko, OpenCL-rako Intel FPGA SDK erabiltzen da.
  • DSE (Design Space Exploration) esparrua gehitu da, eta horrek konpiladoreen optimizazioak eta botila-lepoak identifikatzeko mekanismoak barne hartzen ditu hardware-plataforma jakin baterako aplikazioak automatikoki sintonizatzeko. Esparruak Intel-en FPGAetarako prest egindako errendimendu-eredu bat dauka eta zure prozesadoreak konektatzea posible egiten du HPVM-k onartzen dituen edozein gailuetarako optimizatzeko. Optimizazioak HPVM eta LLVM datu-fluxuaren grafiko mailetan aplika daitezke.
  • LLVM osagaiak 13.0 bertsiora eguneratu dira.
  • Kodea berrantolatu da kode-oinarrian, liburutegietan eta utilitateetan nabigatzea errazteko.
  • Proba-azpiegitura hobetu da, HPVM osagai ezberdinetarako proba berriak gehitu dira.

Iturria: opennet.ru

Gehitu iruzkin berria