Publicat HPVM 2.0, compilador per a CPU, GPU, FPGA i acceleradors de maquinari

El projecte LLVM va anunciar el llançament de HPVM 2.0 (Heterogeneous Parallel Virtual Machine), un compilador destinat a simplificar la programació per a sistemes heterogenis i proporcionar eines de generació de codi per a CPU, GPU, FPGA i acceleradors de maquinari específics del domini. El codi del projecte es distribueix sota la llicència Apache 2.0.

La programació per a sistemes paral·lels heterogenis es complica per la presència de components en un mateix sistema que utilitzen diferents models per aconseguir el paral·lelisme (nuclis de CPU, instruccions vectorials, GPU, etc.), diferents conjunts d'instruccions i diferents jerarquies de memòria. Cada sistema utilitza la seva pròpia combinació d'aquests components. La idea principal del projecte HPVM és utilitzar una representació unificada de programes executats en paral·lel a l'hora de compilar, que es pot utilitzar per a diversos tipus de maquinari que admet la informàtica paral·lela, incloses les GPU, instruccions vectorials, processadors multinucli, FPGA i diversos xips acceleradors especialitzats.

A diferència d'altres sistemes, HPVM va intentar combinar tres capacitats per organitzar una informàtica heterogènia: un llenguatge de programació i una representació intermèdia (IR) independent del maquinari, l'arquitectura del conjunt d'instruccions virtuals (V-ISA) i la programació del temps d'execució:

  • La representació intermèdia HPVM amplia la representació intermèdia LLVM d'instruccions mitjançant l'ús d'un gràfic de flux de dades jeràrquic per capturar el paral·lelisme a nivells de tasca, 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 (V-ISA) resumeix les característiques de maquinari de baix nivell i unifica diverses formes de paral·lelisme i arquitectures de memòria utilitzant només un model de paral·lelisme bàsic: el gràfic de flux de dades. V-ISA permet aconseguir la portabilitat entre diferents tipus d'equips per a la computació paral·lela 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.
  • Les polítiques de planificació flexible del procés computacional s'apliquen en temps d'execució i s'implementen tant a partir de la informació sobre el programa (estructura del gràfic) com a través de la compilació de nodes de programa individuals per a l'execució en qualsevol dels dispositius informàtics de destinació disponibles al sistema.

Els generadors de codi desenvolupats pel projecte són 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, FPGA i CPU x86 multi-nucli. Cal assenyalar que el rendiment dels traductors HPVM és comparable al codi OpenCL escrit a mà per a GPU i dispositius informàtics vectorials.

Innovacions clau de HPVM 2.0:

  • S'ha proposat una interfície en llenguatge hetero-C++, que simplifica la paral·lelització del codi de l'aplicació en C/C++ per a la compilació a HPVM. Hetero-C++ defineix extensions per al paral·lelisme a nivell de dades i tasques jeràrquiques que s'assignen als gràfics de fil HPVM.
  • S'ha afegit un backend FPGA per proporcionar suport per a l'execució de codi a les FPGA Intel. Per organitzar l'execució, s'utilitza l'SDK Intel FPGA per a OpenCL.
  • S'ha afegit el marc DSE (Design Space Exploration), que inclou optimitzacions del compilador i mecanismes per identificar colls d'ampolla per ajustar automàticament les aplicacions per a una plataforma de maquinari determinada. El marc conté un model de rendiment preparat per a FPGA d'Intel i permet connectar els vostres propis processadors per optimitzar-los per a qualsevol dispositiu compatible amb HPVM. Les optimitzacions es poden aplicar tant als nivells de gràfics de flux de dades HPVM com LLVM.
  • Els components de LLVM s'han actualitzat a la versió 13.0.
  • El codi s'ha reorganitzat per facilitar la navegació per la base de codi, les biblioteques i les utilitats.
  • S'ha millorat la infraestructura de proves, s'han afegit noves proves per a diversos components HPVM.

Font: opennet.ru

Afegeix comentari