Objavljen HPVM 2.0, kompajler za CPU, GPU, FPGA i hardverske akceleratore

Projekat LLVM najavio je izdavanje HPVM 2.0 (Heterogena paralelna virtuelna mašina), kompajlera koji ima za cilj da pojednostavi programiranje za heterogene sisteme i obezbedi alate za generisanje koda za CPU, GPU, FPGA i hardverske akceleratore specifične za domen. Kod projekta se distribuira pod licencom Apache 2.0.

Programiranje za heterogene paralelne sisteme je komplikovano prisustvom komponenti u istom sistemu koje koriste različite modele za postizanje paralelizma (CPU jezgre, vektorske instrukcije, GPU, itd.), različite skupove instrukcija i različite memorijske hijerarhije. Svaki sistem koristi svoju kombinaciju ovih komponenti. Glavna ideja HPVM projekta je korištenje objedinjenog prikaza paralelno izvršavanih programa prilikom kompajliranja, koji se može koristiti za različite tipove hardvera koji podržava paralelno računanje, uključujući GPU, vektorske instrukcije, višejezgrene procesore, FPGA i razne specijalizirane akceleratorske čipove.

Za razliku od drugih sistema, HPVM je pokušao da kombinuje tri mogućnosti za organizovanje heterogenog računarstva – programski jezik i hardverski nezavisnu međureprezentaciju (IR), virtuelnu arhitekturu skupa instrukcija (V-ISA) i vremensko zakazivanje:

  • HPVM međureprezentacija proširuje LLVM međureprezentaciju instrukcija korištenjem hijerarhijskog grafa toka podataka za hvatanje paralelizma na razinama zadatka, podataka i cjevovoda. HPVM međureprezentacija takođe uključuje vektorske instrukcije i zajedničku memoriju. Glavna svrha korištenja srednjeg predstavljanja je efikasno generiranje koda i optimizacija za heterogene sisteme.
  • Arhitektura virtuelnog skupa instrukcija (V-ISA) apstrahuje hardverske karakteristike niskog nivoa i objedinjuje različite oblike paralelizma i memorijske arhitekture koristeći samo osnovni model paralelizma – graf toka podataka. V-ISA vam omogućava da postignete prenosivost između različitih tipova opreme za paralelno računanje i omogućava da se ne izgube performanse kada se koriste različiti elementi heterogenih sistema. Virtuelna ISA se takođe može koristiti za isporuku univerzalnog izvršnog programskog koda koji se može izvoditi koristeći CPU, GPU, FPGA i razne akceleratore.
  • Fleksibilne politike planiranja za računski proces primjenjuju se u vrijeme izvođenja i implementiraju se kako na osnovu informacija o programu (struktura grafa) tako i putem kompilacije pojedinačnih programskih čvorova za izvršenje na bilo kojem od ciljnih računarskih uređaja dostupnih u sistemu.

Generatori koda razvijeni od strane projekta su sposobni da prevedu aplikacione čvorove definisane korišćenjem virtuelne ISA za izvršenje koristeći NVIDIA GPU (cuDNN i OpenCL), Intel AVX vektorske instrukcije, FPGA i višejezgarne x86 CPU. Primećeno je da su performanse HPVM prevodilaca uporedive sa ručno pisanim OpenCL kodom za GPU i vektorske računarske uređaje.

Ključne inovacije HPVM 2.0:

  • Predložen je Hetero-C++ jezik frontend, koji pojednostavljuje paralelizaciju koda aplikacije u C/C++ za kompilaciju u HPVM. Hetero-C++ definira proširenja za paralelizam na razini podataka i hijerarhijske zadatke koji se mapiraju u HPVM grafove niti.
  • FPGA backend je dodat da pruži podršku za izvršavanje koda na Intel FPGA. Za organizaciju izvršenja koristi se Intel FPGA SDK za OpenCL.
  • Dodan je okvir DSE (Design Space Exploration), koji uključuje optimizacije kompajlera i mehanizme za identifikaciju uskih grla za automatsko podešavanje aplikacija za datu hardversku platformu. Okvir sadrži gotov model performansi za FPGA iz Intela i omogućava povezivanje vlastitih procesora za optimizaciju za sve uređaje koje podržava HPVM. Optimizacije se mogu primijeniti i na HPVM i na LLVM razinama grafa protoka podataka.
  • LLVM komponente su ažurirane na verziju 13.0.
  • Kod je reorganiziran kako bi se olakšalo kretanje po bazi koda, bibliotekama i uslužnim programima.
  • Infrastruktura za testiranje je poboljšana, dodani su novi testovi za različite HPVM komponente.

izvor: opennet.ru

Dodajte komentar