HPVM 2.0, kompilátor pre CPU, GPU, FPGA a hardvérové ​​akcelerátory, bol zverejnený

Projekt LLVM oznámil vydanie HPVM 2.0 (Heterogeneous Parallel Virtual Machine), kompilátora zameraného na zjednodušenie programovania pre heterogénne systémy a poskytovanie nástrojov na generovanie kódu pre CPU, GPU, FPGA a hardvérové ​​akcelerátory špecifické pre doménu. Kód projektu je distribuovaný pod licenciou Apache 2.0.

Programovanie pre heterogénne paralelné systémy je komplikované prítomnosťou komponentov v tom istom systéme, ktoré využívajú rôzne modely na dosiahnutie paralelizmu (jadrá CPU, vektorové inštrukcie, GPU atď.), rôzne inštrukčné sady a rôzne hierarchie pamäte. Každý systém používa vlastnú kombináciu týchto komponentov. Hlavnou myšlienkou projektu HPVM je využiť pri kompilácii jednotnú reprezentáciu paralelne vykonávaných programov, ktorú je možné použiť pre rôzne typy 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 – programovací jazyk a hardvérovo nezávislú intermediárnu reprezentáciu (IR), architektúru virtuálnej inštrukčnej sady (V-ISA) a plánovanie runtime:

  • Stredná reprezentácia HPVM rozširuje strednú reprezentáciu inštrukcií LLVM pomocou hierarchického grafu toku údajov na zachytenie paralelnosti na úrovni úloh, údajov a kanálov. 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.
  • Virtual Instruction Set Architecture (V-ISA) abstrahuje nízkoúrovňové hardvérové ​​funkcie a zjednocuje rôzne formy paralelizmu a architektúr pamäte iba pomocou základného modelu paralelizmu – grafu toku údajov. V-ISA vám umožňuje dosiahnuť prenosnosť medzi rôznymi typmi zariadení pre paralelné výpočty 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.
  • Flexibilné plánovacie politiky pre výpočtový proces sú aplikované za behu a sú implementované jednak na základe informácií o programe (grafová štruktúra) a jednak prostredníctvom kompilácie jednotlivých programových uzlov pre spustenie na ľubovoľnom z cieľových výpočtových zariadení dostupných v systéme.

Generátory kódu vyvinuté v rámci projektu sú schopné prekladať aplikačné uzly definované pomocou virtuálneho ISA na vykonávanie pomocou GPU NVIDIA (cuDNN a OpenCL), vektorových inštrukcií Intel AVX, FPGA a viacjadrových x86 CPU. Je potrebné poznamenať, že výkon prekladačov HPVM je porovnateľný s ručne písaným kódom OpenCL pre GPU a vektorové počítačové zariadenia.

Kľúčové inovácie HPVM 2.0:

  • Bol navrhnutý frontend jazyka Hetero-C++, ktorý zjednodušuje paralelizáciu kódu aplikácie v C/C++ na kompiláciu v HPVM. Hetero-C++ definuje rozšírenia pre paralelizmus na úrovni údajov a hierarchické úlohy, ktoré sa mapujú na grafy vlákien HPVM.
  • Bol pridaný backend FPGA, ktorý poskytuje podporu pre spúšťanie kódu na Intel FPGA. Na organizáciu vykonávania sa používa Intel FPGA SDK pre OpenCL.
  • Pribudol rámec DSE (Design Space Exploration), ktorý obsahuje optimalizácie kompilátora a mechanizmy na identifikáciu úzkych miest pre automatické ladenie aplikácií pre danú hardvérovú platformu. Framework obsahuje hotový výkonnostný model pre FPGA od Intelu a umožňuje pripojiť vlastné procesory pre optimalizáciu pre akékoľvek zariadenia podporované HPVM. Optimalizácie možno použiť na úrovni grafu toku údajov HPVM aj LLVM.
  • Komponenty LLVM boli aktualizované na verziu 13.0.
  • Kód bol reorganizovaný, aby sa uľahčila navigácia v kódovej základni, knižniciach a pomôckach.
  • Testovacia infraštruktúra bola vylepšená, boli pridané nové testy pre rôzne komponenty HPVM.

Zdroj: opennet.ru

Pridať komentár