HPVM 2.0, kääntäjä CPU:lle, GPU:lle, FPGA:lle ja laitteistokiihdyttimille julkaistu

LLVM-projekti ilmoitti julkaisevansa HPVM 2.0:n (Heterogeneous Parallel Virtual Machine), kääntäjän, jonka tarkoituksena on yksinkertaistaa ohjelmointia heterogeenisille järjestelmille ja tarjota koodin luontityökaluja suorittimille, GPU:ille, FPGA:ille ja verkkoaluekohtaisille laitteistokiihdyttimille. Projektikoodia jaetaan Apache 2.0 -lisenssillä.

Heterogeenisten rinnakkaisten järjestelmien ohjelmointia vaikeuttaa samassa järjestelmässä olevien komponenttien läsnäolo, jotka käyttävät eri malleja rinnakkaisuuden saavuttamiseksi (CPU-ytimet, vektorikäskyt, GPU jne.), erilaiset käskyjoukot ja erilaiset muistihierarkiat. Jokainen järjestelmä käyttää omaa näiden komponenttien yhdistelmää. HPVM-projektin pääideana on käyttää käännöksessä rinnakkain suoritettavien ohjelmien yhtenäistä esitystä, jota voidaan käyttää erityyppisille rinnakkaislaskentaa tukeville laitteille, 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 - ohjelmointikielen ja laitteistosta riippumattoman väliesityksen (IR), virtuaalisen käskysarjan arkkitehtuurin (V-ISA) ja ajonaikaisen ajoituksen:

  • HPVM-väliesitys laajentaa käskyjen LLVM-väliesitystä käyttämällä hierarkkista tietovirtakaaviota rinnakkaisuuden kaappaamiseen tehtävän, datan ja liukuhihnan tasolla. 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.
  • Virtual Instruction Set Architecture (V-ISA) tiivistää matalan tason laitteiston ominaisuuksia ja yhdistää eri rinnakkaisuuden ja muistiarkkitehtuurien muodot käyttämällä vain perusrinnakkaismallia – tietovirtakaaviota. V-ISA mahdollistaa siirrettävyyden erityyppisten laitteiden välillä rinnakkaislaskentaa varten ja mahdollistaa suorituskyvyn menettämisen heterogeenisten järjestelmien eri elementtejä käytettäessä. Virtuaalista ISA:ta voidaan käyttää myös yleisen suoritettavan ohjelmakoodin toimittamiseen, jota voidaan käyttää suorittimilla, GPU:illa, FPGA:illa ja erilaisilla kiihdyttimillä.
  • Laskennallisen prosessin joustavia ajoituskäytäntöjä sovelletaan ajon aikana, ja ne toteutetaan sekä ohjelmaa koskevien tietojen (kaavion rakenteen) perusteella että yksittäisten ohjelmasolmujen kokoamisen kautta suoritettaviksi missä tahansa järjestelmän käytettävissä olevissa kohdetietokoneissa.

Projektin kehittämät koodigeneraattorit pystyvät kääntämään virtuaalisen ISA:n avulla määritettyjä sovellussolmuja suoritettaviksi NVIDIA-grafiikkasuorittimilla (cuDNN ja OpenCL), Intel AVX -vektorikäskyillä, FPGA:illa ja moniytimisillä x86-suorittimilla. On huomattava, että HPVM-kääntäjien suorituskyky on verrattavissa käsin kirjoitettuun OpenCL-koodiin GPU:ille ja vektorilaskentalaitteille.

HPVM 2.0:n tärkeimmät innovaatiot:

  • Hetero-C++-kielen käyttöliittymää on ehdotettu, mikä yksinkertaistaa sovelluskoodin rinnakkaisua C/C++:ssa HPVM-kääntämistä varten. Hetero-C++ määrittelee laajennukset tietotason rinnakkaisuudelle ja hierarkkisille tehtäville, jotka kartoitetaan HPVM-säiekaavioihin.
  • FPGA-taustaosa on lisätty tarjoamaan tukea koodin suorittamiselle Intel FPGA:illa. Suorituksen järjestämiseen käytetään Intel FPGA SDK:ta OpenCL:lle.
  • DSE (Design Space Exploration) -kehys on lisätty, joka sisältää kääntäjien optimoinnit ja mekanismit pullonkaulojen tunnistamiseksi sovellusten automaattista viritystä varten tietylle laitteistoalustalle. Kehys sisältää valmiin Intelin FPGA-suorituskykymallin ja mahdollistaa omien prosessorisi kytkemisen optimointia varten kaikille HPVM:n tukemille laitteille. Optimointeja voidaan soveltaa sekä HPVM- että LLVM-tietokulkukaaviotasoilla.
  • LLVM-komponentit on päivitetty versioon 13.0.
  • Koodi on järjestetty uudelleen, jotta koodikannassa, kirjastoissa ja apuohjelmissa navigointi on helpompaa.
  • Testausinfrastruktuuria on parannettu, uusia testejä on lisätty erilaisille HPVM-komponenteille.

Lähde: opennet.ru

Lisää kommentti