El projecte LLVM va introduir HPVM 1.0, un compilador per a CPU, GPU, FPGA i acceleradors

Els desenvolupadors del projecte LLVM han publicat el llançament del compilador HPVM 1.0 (Heterogeneous Parallel Virtual Machine), destinat a simplificar la programació per a sistemes heterogenis i proporcionar eines per generar codi per a CPU, GPU, FPGA i acceleradors de maquinari específics del domini (suport per a Els FGPA i els acceleradors no es van incloure a la versió 1.0). El codi del projecte es distribueix sota la llicència Apache 2.0.

La idea principal d'HPVM és proporcionar una representació unificada dels programes executables en paral·lel durant la compilació, que es pot utilitzar per a l'execució mitjançant diversos tipus de maquinari que admeten la informàtica paral·lela, incloses les GPU, instruccions vectorials, processadors multinúclis, FPGA i diversos xips acceleradors especialitzats. A diferència d'altres sistemes, HPVM va intentar combinar tres capacitats per organitzar la informàtica heterogènia: representació intermèdia independent del llenguatge i del maquinari, l'arquitectura de conjunts d'instruccions virtuals (ISA) i la programació del temps d'execució.

La representació intermèdia (IR) independent de l'objectiu d'HPVM es basa en la representació d'instruccions intermèdies LLVM 9.0 i l'estén amb un gràfic de flux de dades jeràrquic per capturar el paral·lelisme a nivell de tasques, dades i canalització. La representació intermèdia HPVM també inclou instruccions vectorials i memòria compartida. L'objectiu principal d'utilitzar una representació intermèdia és la generació i optimització de codi eficients per a sistemes heterogenis.

L'arquitectura de conjunts d'instruccions virtuals (ISA) permet la portabilitat entre diferents tipus de maquinari informàtic paral·lel i permet no perdre rendiment quan s'utilitzen diferents elements de sistemes heterogenis. Virtual ISA també es pot utilitzar per oferir codi de programa executable universal que es pot executar amb CPU, GPU, FPGA i diversos acceleradors.

En l'etapa actual de desenvolupament, HPVM ofereix generadors de codi capaços de traduir nodes d'aplicació definits mitjançant un ISA virtual per a l'execució mitjançant GPU NVIDIA (cuDNN i OpenCL), instruccions vectorials Intel AVX i CPU x86 multinucli. En temps d'execució, HPVM aplica polítiques de programació de processos computacionals flexibles, implementades tant en funció de la informació del programa (estructura del gràfic) com mitjançant la compilació de nodes de programa individuals per a l'execució en qualsevol dels dispositius informàtics de destinació disponibles al sistema.

Cal assenyalar que l'ús de HPVM pot aconseguir un augment significatiu de la productivitat. El rendiment dels traductors HPVM és comparable al codi OpenCL escrit a mà per a GPU i dispositius informàtics vectorials.

En comparació amb la primera versió prèvia, HPVM 1.0 inclou suport per a operacions de tensor d'àlgebra lineal, interfícies per a Pytorch i Keras, aproximacions d'operadors de convolució i un marc d'ajust d'aproximació que selecciona automàticament les aproximacions òptimes per a operacions de tensor específiques i selecciona la configuració que ofereix un rendiment òptim.

Font: opennet.ru

Afegeix comentari