Vydán HPVM 2.0, kompilátor pro CPU, GPU, FPGA a hardwarové akcelerátory

Projekt LLVM oznámil vydání HPVM 2.0 (Heterogeneous Parallel Virtual Machine), kompilátoru zaměřeného na zjednodušení programování pro heterogenní systémy a poskytování nástrojů pro generování kódu pro CPU, GPU, FPGA a hardwarové akcelerátory specifické pro doménu. Kód projektu je distribuován pod licencí Apache 2.0.

Programování pro heterogenní paralelní systémy je komplikováno přítomností komponent ve stejném systému, které používají různé modely pro dosažení paralelismu (jádra CPU, vektorové instrukce, GPU atd.), různé instrukční sady a různé hierarchie paměti. Každý systém využívá svou vlastní kombinaci těchto komponent. Hlavní myšlenkou projektu HPVM je použití jednotné reprezentace paralelně spouštěných programů při kompilaci, kterou lze použít pro různé typy hardwaru podporující 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 pokusil zkombinovat tři možnosti pro organizaci heterogenních výpočtů – programovací jazyk a hardwarově nezávislou zprostředkující reprezentaci (IR), architekturu virtuální instrukční sady (V-ISA) a plánování běhu:

  • Mezilehlá reprezentace HPVM rozšiřuje střední reprezentaci instrukcí LLVM pomocí hierarchického grafu toku dat k 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.
  • Virtual Instruction Set Architecture (V-ISA) abstrahuje nízkoúrovňové hardwarové funkce a sjednocuje různé formy paralelismu a architektur paměti pouze pomocí základního modelu paralelismu – grafu toku dat. V-ISA umožňuje dosáhnout přenositelnosti mezi různými typy zařízení pro paralelní výpočty 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ů.
  • Flexibilní plánovací politiky pro výpočetní proces jsou aplikovány za běhu a jsou implementovány jak na základě informací o programu (struktura grafu), 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.

Generátory kódu vyvinuté v rámci projektu jsou schopny překládat aplikační uzly definované pomocí virtuálního ISA pro provádění pomocí GPU NVIDIA (cuDNN a OpenCL), vektorových instrukcí Intel AVX, FPGA a vícejádrových x86 CPU. Je třeba poznamenat, že výkon překladačů HPVM je srovnatelný s ručně psaným kódem OpenCL pro GPU a vektorová výpočetní zařízení.

Klíčové inovace HPVM 2.0:

  • Byl navržen frontend jazyka Hetero-C++, který zjednodušuje paralelizaci aplikačního kódu v C/C++ pro kompilaci v HPVM. Hetero-C++ definuje rozšíření pro paralelismus na úrovni dat a hierarchické úlohy, které se mapují do grafů vláken HPVM.
  • Byl přidán backend FPGA, který poskytuje podporu pro spouštění kódu na Intel FPGA. Pro organizaci provádění se používá Intel FPGA SDK pro OpenCL.
  • Byl přidán rámec DSE (Design Space Exploration), který zahrnuje optimalizace kompilátoru a mechanismy pro identifikaci úzkých míst pro automatické ladění aplikací pro danou hardwarovou platformu. Framework obsahuje hotový výkonový model pro FPGA od Intelu a umožňuje připojit vlastní procesory pro optimalizaci pro jakákoli zařízení podporovaná HPVM. Optimalizace lze použít na úrovni grafu toku dat HPVM i LLVM.
  • Komponenty LLVM byly aktualizovány na verzi 13.0.
  • Kód byl reorganizován, aby usnadnil navigaci v kódové základně, knihovnách a utilitách.
  • Testovací infrastruktura byla vylepšena, byly přidány nové testy pro různé komponenty HPVM.

Zdroj: opennet.ru

Přidat komentář