Projekt LLVM představil HPVM 1.0, kompilátor pro CPU, GPU, FPGA a akcelerátory

Vývojáři projektu LLVM zveřejnili vydání kompilátoru HPVM 1.0 (Heterogeneous Parallel Virtual Machine), jehož cílem je zjednodušit programování pro heterogenní systémy a poskytnout nástroje pro generování kódu pro CPU, GPU, FPGA a doménově specifické hardwarové akcelerátory (podpora pro FGPA a akcelerátory nebyly zahrnuty ve verzi 1.0). Kód projektu je distribuován pod licencí Apache 2.0.

Hlavní myšlenkou HPVM je poskytnout sjednocenou reprezentaci paralelně spustitelných programů při kompilaci, které lze použít pro spouštění pomocí různých typů hardwaru podporujících paralelní výpočty, včetně GPU, vektorových instrukcí, vícejádrových procesorů, FPGA a různé specializované urychlovací čipy. Na rozdíl od jiných systémů se HPVM pokoušel zkombinovat tři možnosti pro organizaci heterogenních výpočtů: jazykově a hardwarově nezávislou střední reprezentaci, architekturu virtuální instrukční sady (ISA) a plánování běhu.

Cílově nezávislá střední reprezentace (IR) HPVM staví na střední reprezentaci instrukce LLVM 9.0 a rozšiřuje ji o hierarchický graf toku dat pro zachycení paralelismu na úrovni úloh, dat a potrubí. Mezilehlá reprezentace HPVM také zahrnuje vektorové instrukce a sdílenou paměť. Hlavním účelem použití přechodné reprezentace je efektivní generování kódu a optimalizace pro heterogenní systémy.

Architektura virtuální instrukční sady (ISA) umožňuje přenositelnost mezi různými typy paralelního výpočetního hardwaru a umožňuje neztrácet výkon při použití různých prvků heterogenních systémů. Virtual ISA lze také použít k poskytování univerzálního spustitelného programového kódu, který lze spustit pomocí CPU, GPU, FPGA a různých akcelerátorů.

V současné fázi vývoje nabízí HPVM generátory kódu schopné překládat aplikační uzly definované pomocí virtuálního ISA pro spouštění pomocí GPU NVIDIA (cuDNN a OpenCL), vektorových instrukcí Intel AVX a vícejádrových x86 CPU. Za běhu HPVM aplikuje flexibilní zásady plánování výpočetních procesů, implementované jak na základě informací o programu (grafové struktury), tak prostřednictvím kompilace jednotlivých uzlů programu pro provádění na libovolném z cílových výpočetních zařízení dostupných v systému.

Je třeba poznamenat, že použití HPVM může dosáhnout významného zvýšení produktivity. Výkon HPVM překladačů je srovnatelný s ručně psaným OpenCL kódem pro GPU a vektorová výpočetní zařízení.

Ve srovnání s prvním předběžným vydáním obsahuje HPVM 1.0 podporu pro operace tenzorů lineární algebry, frontendy pro Pytorch a Keras, aproximace operátorů konvoluce a rámec ladění aproximace, který automaticky vybírá optimální aproximace pro konkrétní operace tenzoru a vybírá konfiguraci, která poskytuje optimální výkon.

Zdroj: opennet.ru

Přidat komentář