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

Projekt LLVM najavio je izdanje HPVM 2.0 (Heterogeneous Parallel Virtual Machine), prevoditelja usmjerenog na pojednostavljenje programiranja za heterogene sustave i pružanje alata za generiranje koda za CPU, GPU, FPGA i hardverske akceleratore specifične za domenu. Projektni kod se distribuira pod licencom Apache 2.0.

Programiranje za heterogene paralelne sustave komplicirano je prisutnošću komponenti u istom sustavu koje koriste različite modele za postizanje paralelizma (CPU jezgre, vektorske instrukcije, GPU itd.), različitih skupova instrukcija i različitih memorijskih hijerarhija. Svaki sustav koristi vlastitu kombinaciju ovih komponenti. Glavna ideja HPVM projekta je koristiti objedinjenu reprezentaciju paralelno izvedenih programa prilikom kompajliranja, koji se mogu koristiti za različite vrste hardvera koji podržavaju paralelno računalstvo, uključujući GPU-ove, vektorske instrukcije, višejezgrene procesore, FPGA i razni specijalizirani akceleratorski čipovi.

Za razliku od drugih sustava, HPVM je pokušao kombinirati tri mogućnosti za organiziranje heterogenog računalstva - programski jezik i posredni prikaz (IR) neovisan o hardveru, arhitekturu virtualnog skupa instrukcija (V-ISA) i raspored vremena izvođenja:

  • HPVM posredni prikaz proširuje LLVM posredni prikaz instrukcija korištenjem hijerarhijskog grafa protoka podataka za hvatanje paralelizma na razini zadatka, podataka i cjevovoda. HPVM posredni prikaz također uključuje vektorske instrukcije i zajedničku memoriju. Glavna svrha korištenja međureprezentacije je učinkovito generiranje koda i optimizacija za heterogene sustave.
  • Arhitektura skupa virtualnih instrukcija (V-ISA) apstrahira značajke hardvera niske razine i objedinjuje različite oblike paralelizma i memorijskih arhitektura koristeći samo osnovni model paralelizma—graf toka podataka. V-ISA vam omogućuje postizanje prenosivosti između različitih vrsta opreme za paralelno računanje i omogućuje da se ne izgubi izvedba pri korištenju različitih elemenata heterogenih sustava. Virtualni ISA također se može koristiti za isporuku univerzalnog izvršnog programskog koda koji se može izvoditi pomoću CPU-a, GPU-a, FPGA-a i raznih akceleratora.
  • Fleksibilne politike raspoređivanja za računalni proces primjenjuju se za vrijeme izvođenja i implementiraju se i na temelju informacija o programu (struktura grafa) i putem kompilacije pojedinačnih programskih čvorova za izvođenje na bilo kojem od ciljnih računalnih uređaja dostupnih u sustavu.

Generatori koda razvijeni projektom sposobni su prevesti aplikacijske čvorove definirane pomoću virtualnog ISA-a za izvođenje pomoću NVIDIA GPU-a (cuDNN i OpenCL), Intel AVX vektorskih instrukcija, FPGA-a i višejezgrenih x86 CPU-a. Napominje se da je izvedba HPVM prevoditelja usporediva s rukom pisanim OpenCL kodom za GPU-ove i vektorske računalne uređaje.

Ključne inovacije HPVM 2.0:

  • Predloženo je sučelje Hetero-C++ jezika, koje pojednostavljuje paralelizaciju aplikacijskog koda 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 grafikone niti.
  • Dodana je FPGA pozadina za pružanje podrške za izvršavanje koda na Intelovim FPGA uređajima. Za organizaciju izvršenja koristi se Intel FPGA SDK za OpenCL.
  • Dodan je DSE (Design Space Exploration) okvir koji uključuje optimizacije prevoditelja i mehanizme za prepoznavanje uskih grla za automatsko podešavanje aplikacija za određenu hardversku platformu. Okvir sadrži gotov model performansi za FPGA iz Intela i omogućuje povezivanje vlastitih procesora za optimizaciju za sve uređaje koje podržava HPVM. Optimizacije se mogu primijeniti i na HPVM i na LLVM razini grafikona protoka podataka.
  • LLVM komponente ažurirane su na verziju 13.0.
  • Kôd je reorganiziran kako bi se olakšala navigacija bazom koda, bibliotekama i uslužnim programima.
  • Infrastruktura testiranja je poboljšana, dodani su novi testovi za razne HPVM komponente.

Izvor: opennet.ru

Dodajte komentar