Projekt LLVM predstavil HPVM 1.0, kompilátor pre CPU, GPU, FPGA a akcelerátory

Vývojári projektu LLVM zverejnili vydanie kompilátora HPVM 1.0 (Heterogeneous Parallel Virtual Machine), ktorého cieľom je zjednodušiť programovanie pre heterogénne systémy a poskytnúť nástroje na generovanie kódu pre CPU, GPU, FPGA a doménovo špecifické hardvérové ​​akcelerátory (podpora pre FGPA a urýchľovače neboli zahrnuté vo verzii 1.0). Kód projektu je distribuovaný pod licenciou Apache 2.0.

Hlavnou myšlienkou HPVM je poskytnúť jednotnú reprezentáciu paralelne spustiteľných programov pri kompilácii, ktoré možno použiť na spustenie pomocou rôznych typov hardvéru, ktorý podporuje paralelné výpočty, vrátane GPU, vektorových inštrukcií, viacjadrových procesorov, FPGA a rôzne špecializované urýchľovacie čipy. Na rozdiel od iných systémov sa HPVM pokúsil skombinovať tri možnosti na organizovanie heterogénnych výpočtov: jazykovo a hardvérovo nezávislú strednú reprezentáciu, architektúru virtuálnej inštrukčnej sady (ISA) a plánovanie runtime.

Stredná reprezentácia HPVM nezávislá od cieľa (IR) stavia na reprezentácii strednej inštrukcie LLVM 9.0 a rozširuje ju o hierarchický graf toku údajov na zachytenie paralelizmu na úrovni úloh, údajov a potrubí. Medzireprezentácia HPVM zahŕňa aj vektorové inštrukcie a zdieľanú pamäť. Hlavným účelom použitia prechodnej reprezentácie je efektívne generovanie kódu a optimalizácia pre heterogénne systémy.

Architektúra virtuálnej inštrukčnej sady (ISA) umožňuje prenosnosť medzi rôznymi typmi paralelného výpočtového hardvéru a umožňuje nestratiť výkon pri použití rôznych prvkov heterogénnych systémov. Virtual ISA možno použiť aj na poskytovanie univerzálneho spustiteľného programového kódu, ktorý možno spustiť pomocou CPU, GPU, FPGA a rôznych akcelerátorov.

V súčasnej fáze vývoja ponúka HPVM generátory kódu schopné prekladať aplikačné uzly definované pomocou virtuálneho ISA na spustenie pomocou GPU NVIDIA (cuDNN a OpenCL), vektorových inštrukcií Intel AVX a viacjadrových x86 CPU. Za behu HPVM aplikuje flexibilné politiky plánovania výpočtových procesov, implementované na základe informácií o programe (grafová štruktúra) a prostredníctvom kompilácie jednotlivých programových uzlov na vykonanie na ľubovoľnom z cieľových výpočtových zariadení dostupných v systéme.

Je potrebné poznamenať, že použitím HPVM možno dosiahnuť významné zvýšenie produktivity. Výkon HPVM prekladačov je porovnateľný s ručne písaným OpenCL kódom pre GPU a vektorové počítačové zariadenia.

V porovnaní s prvým predbežným vydaním obsahuje HPVM 1.0 podporu pre operácie tenzorov lineárnej algebry, frontendy pre Pytorch a Keras, aproximácie operátorov konvolúcie a rámec ladenia aproximácie, ktorý automaticky vyberá optimálne aproximácie pre konkrétne operácie tenzorov a vyberá konfiguráciu, ktorá poskytuje optimálny výkon.

Zdroj: opennet.ru

Pridať komentár