LLVM-projektet introducerade HPVM 1.0, en kompilator för CPU, GPU, FPGA och acceleratorer

Utvecklarna av LLVM-projektet har publicerat releasen av kompilatorn HPVM 1.0 (Heterogeneous Parallel Virtual Machine), som syftar till att förenkla programmering för heterogena system och tillhandahålla verktyg för att generera kod för CPU:er, GPU:er, FPGA:er och domänspecifika hårdvaruacceleratorer (stöd för FGPA:er och acceleratorer inkluderades inte i version 1.0). Projektkoden distribueras under Apache 2.0-licensen.

Huvudidén med HPVM är att tillhandahålla en enhetlig representation av parallellkörbara program vid kompilering, som kan användas för exekvering med olika typer av hårdvara som stöder parallell beräkning, inklusive GPU:er, vektorinstruktioner, flerkärniga processorer, FPGA:er och olika specialiserade acceleratorchips. Till skillnad från andra system, försökte HPVM kombinera tre möjligheter för att organisera heterogen beräkning: språk- och hårdvaruoberoende mellanrepresentation, virtuell instruktionsuppsättningsarkitektur (ISA) och körtidsschemaläggning.

HPVM:s måloberoende mellanrepresentation (IR) bygger på LLVM 9.0 mellanliggande instruktionsrepresentation och utökar den med ett hierarkiskt dataflödesdiagram för att fånga parallellism på uppgifts-, data- och pipelinenivå. HPVM-mellanrepresentationen inkluderar också vektorinstruktioner och delat minne. Huvudsyftet med att använda en mellanrepresentation är effektiv kodgenerering och optimering för heterogena system.

Den virtuella instruktionsuppsättningsarkitekturen (ISA) möjliggör portabilitet mellan olika typer av parallell datorhårdvara och gör det möjligt att inte förlora prestanda vid användning av olika delar av heterogena system. Virtual ISA kan också användas för att leverera universell körbar programkod som kan köras med CPU:er, GPU:er, FPGA:er och olika acceleratorer.

I det nuvarande utvecklingsstadiet erbjuder HPVM kodgeneratorer som kan översätta applikationsnoder definierade med en virtuell ISA för exekvering med NVIDIA GPU:er (cuDNN och OpenCL), Intel AVX vektorinstruktioner och multi-core x86 processorer. Under körning tillämpar HPVM flexibla principer för schemaläggning av beräkningsprocesser, implementerade både baserat på programinformation (grafstruktur) och genom att kompilera individuella programnoder för exekvering på någon av måldatorenheterna som är tillgängliga i systemet.

Det noteras att användningen av HPVM kan uppnå en betydande ökning av produktiviteten. Prestandan hos HPVM-översättare är jämförbar med handskriven OpenCL-kod för GPU:er och vektorberäkningsenheter.

Jämfört med den första förhandsversionen innehåller HPVM 1.0 stöd för linjär algebratensoroperationer, frontends för Pytorch och Keras, faltningsoperatorapproximationer och ett approximationsavstämningsramverk som automatiskt väljer optimala approximationer för specifika tensoroperationer och väljer den konfiguration som ger optimal prestanda.

Källa: opennet.ru

Lägg en kommentar