HPVM 2.0, compiler alang sa CPU, GPU, FPGA ug hardware accelerators nga gipatik

Ang proyekto sa LLVM nagpaila sa pagpagawas sa HPVM 2.0 (Heterogeneous Parallel Virtual Machine) compiler, nga gitumong sa pagpayano sa programming alang sa heterogeneous nga mga sistema ug paghatag og mga himan alang sa pagmugna og code alang sa mga CPU, GPU, FPGA, ug mga domain-specific nga hardware accelerators. Ang code sa proyekto giapod-apod ubos sa lisensya sa Apache 2.0.

Ang pagprograma alang sa mga heterogeneous parallel nga sistema komplikado tungod sa presensya sa usa ka sistema sa mga sangkap nga naggamit sa lain-laing mga modelo alang sa pagkab-ot sa parallelism (CPU cores, vector instruksyon, GPUs, ug uban pa), lain-laing mga set sa mga instruksyon, ug lain-laing mga hierarchies sa memorya. Ang matag sistema naggamit sa kaugalingon nga kombinasyon niini nga mga sangkap. Ang panguna nga ideya sa proyekto sa HPVM mao ang paggamit sa usa ka hiniusa nga representasyon sa parallel executable nga mga programa kung mag-compile, nga magamit alang sa lainlaing mga lahi sa hardware nga nagsuporta sa parallel computing, lakip ang mga GPU, mga panudlo sa vector, mga multi-core processor, FPGA, ug lainlaing mga espesyal nga accelerator chips.

Dili sama sa ubang mga sistema, ang HPVM misulay sa paghiusa sa tulo ka mga posibilidad alang sa pag-organisar sa heterogeneous computing - usa ka intermediate representation (IR), usa ka virtual instruction set architecture (V-ISA), ug runtime scheduling, independente sa programming language ug equipment:

  • Intermediate nga representasyon Ang HPVM nagpalapad sa intermediate nga representasyon sa mga instruksyon sa LLVM pinaagi sa paggamit sa usa ka hierarchical data flow graph aron makuha ang parallelism sa lebel sa mga buluhaton, datos, ug computational pipelines. Ang HPVM intermediate nga representasyon naglakip usab sa mga instruksyon sa vector ug gipaambit nga memorya. Ang nag-unang katuyoan sa paggamit sa usa ka intermediate nga representasyon mao ang episyente nga code generation ug optimization alang sa heterogeneous nga mga sistema.
  • Ang Virtual Instruction Set Architecture (V-ISA) nag-abstract sa ubos nga lebel nga hardware ug naghiusa sa nagkalain-laing porma sa paralelismo ug mga arkitektura sa memorya gamit lamang ang nagpahiping modelo sa concurrency, ang Data Flow Graph. Gitugotan sa V-ISA nga makab-ot ang kadali tali sa lainlaing mga lahi sa hardware alang sa parallel computing ug gipaposible nga dili mawala ang pasundayag kung gigamit ang lainlaing mga elemento sa heterogenous nga mga sistema. Ang Virtual ISA mahimo usab nga gamiton sa paghatud sa generic program executable code nga mahimong modagan sa mga CPU, GPU, FPGA, ug lain-laing mga accelerators.
  • Ang flexible nga mga polisiya sa pag-iskedyul sa proseso sa computing gipadapat sa runtime ug gipatuman base sa impormasyon bahin sa programa (graph structure) ug pinaagi sa pag-compile sa tagsa-tagsa nga mga node sa programa alang sa pagpatuman sa bisan asa sa mga target nga computing device nga anaa sa sistema.

Ang mga code generator nga gihimo sa proyekto makahimo sa paghubad sa mga node sa aplikasyon nga gihubit gamit ang virtual ISA alang sa pagpatuman gamit ang NVIDIA GPUs (cuDNN ug OpenCL), mga panudlo sa vector sa Intel AVX, FPGA, ug mga multi-core x86 nga mga CPU. Namatikdan nga ang paghimo sa mga resulta sa mga tighubad sa HPVM ikatandi sa mano-mano nga sinulat nga OpenCL code alang sa mga GPU ug mga vector computing device.

Pangunang mga inobasyon sa HPVM 2.0:

  • Ang Hetero-C++ nga frontend nga pinulongan gisugyot, nga nagpasimple sa parallelization sa C/C++ nga application code alang sa pag-compile sa HPVM. Ang Hetero-C++ naghubit sa mga extension para sa paralelismo sa lebel sa datos ug hierarchical nga mga buluhaton nga gimapa ngadto sa HPVM thread graphs.
  • Ang usa ka backend sa FPGA gidugang aron suportahan ang pagpatuman sa code sa usa ka Intel FPGA. Sa pag-organisar sa pagpatay, ang Intel FPGA SDK para sa OpenCL gigamit.
  • Ang balangkas sa DSE (Design Space Exploration) gidugang, lakip ang compiler optimizations ug bottleneck detection mechanisms para sa awtomatikong pag-tune sa mga aplikasyon para sa gihatag nga hardware platform. Ang balangkas naglangkob sa usa ka andam nga gihimo nga modelo sa pasundayag alang sa FPGA gikan sa Intel ug nagtugot kanimo sa pagkonektar sa imong kaugalingon nga mga processor alang sa pag-optimize alang sa bisan unsang aparato nga gisuportahan sa HPVM. Ang mga pag-optimize mahimong magamit pareho sa lebel sa data flow graph sa HPVM ug sa lebel sa LLVM.
  • Ang mga sangkap sa LLVM gi-update sa bersyon 13.0.
  • Ang code gi-organisar pag-usab aron mas sayon ​​ang pag-navigate sa codebase, mga librarya, ug mga utilities.
  • Ang imprastraktura alang sa pagsulay gipauswag, ang mga bag-ong pagsulay gidugang alang sa lainlaing mga sangkap sa HPVM.

Source: opennet.ru

Idugang sa usa ka comment