LLVM-projekti esitteli HPVM 1.0:n, kääntäjän CPU:lle, GPU:lle, FPGA:lle ja kiihdyttimille

LLVM-projektin kehittäjät ovat julkaisseet HPVM 1.0 (Heterogeneous Parallel Virtual Machine) -kääntäjän julkaisun, jonka tarkoituksena on yksinkertaistaa ohjelmointia heterogeenisille järjestelmille ja tarjota työkaluja koodin luomiseen CPU:ille, GPU:ille, FPGA:ille ja verkkoaluekohtaisille laitteistokiihdyttimille (tuki FGPA:ita ja kiihdyttimiä ei sisällytetty 1.0-julkaisuun ). Projektikoodia jaetaan Apache 2.0 -lisenssillä.

HPVM:n pääideana on tarjota käännösvaiheessa yhtenäinen esitys rinnakkaisesti suoritettavista ohjelmista, joita voidaan käyttää suorittamiseen erilaisilla rinnakkaislaskentaa tukevilla laitteistoilla, mukaan lukien GPU:t, vektorikäskyt, moniytimiset prosessorit, FPGA:t ja erilaisia ​​erikoistuneita kiihdytinsiruja. Toisin kuin muut järjestelmät, HPVM yritti yhdistää kolme ominaisuutta heterogeenisen laskennan järjestämiseen: kielestä ja laitteistosta riippumaton väliesitys, virtuaalinen käskysarjaarkkitehtuuri (ISA) ja ajonaikainen ajoitus.

HPVM:n kohderiippumaton väliesitys (IR) perustuu LLVM 9.0:n välikäskyesitykseen ja laajentaa sitä hierarkkisella tietovirtakaaviolla tehtävä-, data- ja liukuhihnatason rinnakkaisuuden kaappaamiseksi. HPVM-väliesitys sisältää myös vektorikäskyt ja jaetun muistin. Väliesityksen käytön päätarkoitus on tehokas koodin generointi ja optimointi heterogeenisille järjestelmille.

Virtuaalinen käskysarjaarkkitehtuuri (ISA) mahdollistaa siirrettävyyden erityyppisten rinnakkaisten laskentalaitteiden välillä ja mahdollistaa sen, että suorituskykyä ei menetetä käytettäessä heterogeenisten järjestelmien erilaisia ​​elementtejä. Virtuaalista ISA:ta voidaan käyttää myös yleisen suoritettavan ohjelmakoodin toimittamiseen, jota voidaan käyttää suorittimilla, GPU:illa, FPGA:illa ja erilaisilla kiihdyttimillä.

Nykyisessä kehitysvaiheessa HPVM tarjoaa koodigeneraattoreita, jotka pystyvät kääntämään virtuaalisen ISA:n avulla määritettyjä sovellussolmuja suoritettavaksi käyttämällä NVIDIA-grafiikkasuorittimia (cuDNN ja OpenCL), Intel AVX -vektorikäskyjä ja moniytimistä x86-suorittimia. Ajon aikana HPVM soveltaa joustavia laskennallisen prosessin ajoituskäytäntöjä, jotka toteutetaan sekä ohjelmatietojen (kaavion rakenteen) perusteella että kokoamalla yksittäisiä ohjelmasolmuja suoritettaviksi missä tahansa järjestelmässä käytettävissä olevissa kohdetietokoneissa.

On huomattava, että HPVM:n käytöllä voidaan saavuttaa merkittävä tuottavuuden kasvu. HPVM-kääntäjien suorituskyky on verrattavissa käsin kirjoitettuun OpenCL-koodiin GPU:ille ja vektorilaskentalaitteille.

Ensimmäiseen esikatseluversioon verrattuna HPVM 1.0 sisältää tuen lineaarisille algebran tensorioperaatioille, Pytorchin ja Kerasin käyttöliittymät, konvoluutiooperaattorin approksimaatiot ja approksimaatiovirityskehyksen, joka valitsee automaattisesti optimaaliset approksimaatiot tietyille tensorioperaatioille ja kokoonpanon, joka tarjoaa optimaalisen suorituskyvyn.

Lähde: opennet.ru

Lisää kommentti