HPVM 2.0, kompililo por CPU, GPU, FPGA kaj hardvarakceliloj publikigita

La LLVM-projekto lanĉis la liberigon de la HPVM 2.0 (Heterogeneous Parallel Virtual Machine) kompililo, direktita kontraŭ simpligado de programado por heterogenaj sistemoj kaj disponigado de iloj por generado de kodo por CPUoj, GPUoj, FPGAoj, kaj domajn-specifaj hardvarakceliloj. La projektkodo estas distribuita sub la permesilo Apache 2.0.

Programado por heterogenaj paralelaj sistemoj estas komplika pro la ĉeesto en unu sistemo de komponantoj, kiuj uzas malsamajn modelojn por atingi paralelecon (CPU-kernoj, vektoraj instrukcioj, GPUoj, ktp.), malsamaj aroj de instrukcioj kaj malsamaj memorhierarkioj. Ĉiu sistemo uzas sian propran kombinaĵon de ĉi tiuj komponantoj. La ĉefa ideo de la HPVM-projekto estas uzi en kompilado de unuigita reprezento de paralelaj programoj, kiuj povas esti uzataj por diversaj specoj de aparataro, kiu subtenas paralelan komputadon, inkluzive de GPU-oj, vektoraj instrukcioj, multkernaj procesoroj, FPGA-oj kaj diversaj specialigitaj. akceliloj.

Male al aliaj sistemoj, HPVM provis kombini tri eblecojn por organizado de heterogena komputiko - meza reprezentantaro (IR), virtuala instrukcia arkitekturo (V-ISA), kaj rultempa planado, sendependa de la programlingvo kaj ekipaĵo:

  • Meza reprezentado HPVM etendas la mezan reprezentadon de LLVM-instrukciaĵo uzante hierarkian datenfluan grafeon por kapti paralelecon sur la nivelo de taskoj, datenoj kaj komputilaj duktoj. La HPVM meza reprezentantaro ankaŭ inkluzivas vektorajn instrukciojn kaj komunan memoron. La ĉefa celo de uzado de meza reprezentado estas efika kodgenerado kaj optimumigo por heterogenaj sistemoj.
  • Virtual Instruction Set Architecture (V-ISA) abstraktas malaltnivelan aparataron kaj unuigas diversajn formojn de paraleleco kaj memorarkitekturoj utiligante nur la subestan samtempan modelon, la Data Flow Graph. V-ISA permesas atingi porteblon inter malsamaj specoj de aparataro por paralela komputado kaj ebligas ne perdi rendimenton kiam oni uzas malsamajn elementojn de heterogenaj sistemoj. Virtuala ISA ankaŭ povas esti uzita por liveri senmarkan programpleneblan kodon kiu povas funkcii per CPUoj, GPUoj, FPGAoj, kaj diversaj akceliloj.
  • Flekseblaj komputikprocezaj planpolitikoj estas aplikitaj ĉe rultempo kaj estas efektivigitaj kaj surbaze de informoj pri la programo (grafeostrukturo) kaj kompilante individuajn programnodojn por ekzekuto sur iu el la celkomputikaj aparatoj haveblaj en la sistemo.

La kodgeneratoroj evoluigitaj de la projekto estas kapablaj je tradukado de aplikaĵnodoj difinitaj uzante virtualan ISA por ekzekuto uzante NVIDIA GPUojn (cuDNN kaj OpenCL), Intel AVX-vektorinstrukciojn, FPGAojn, kaj multi-kernajn x86 CPUojn. Oni rimarkas, ke la agado de la rezultoj de la HPVM-tradukiloj estas komparebla al permane skribita OpenCL-kodo por GPUoj kaj vektoraj komputikaj aparatoj.

Ĉefaj inventoj de HPVM 2.0:

  • La Hetero-C++-lingva fasado estas proponita, kiu simpligas la paraleligon de C/C++ aplikaĵkodo por kompilo en HPVM. Hetero-C++ difinas etendaĵojn por datennivela paralelismo kaj hierarkiaj taskoj, kiuj estas mapitaj al HPVM-fadengrafoj.
  • FPGA-backend estis aldonita por subteni kodekzekuton sur Intel FPGA. Por organizi la ekzekuton, la Intel FPGA SDK por OpenCL estas uzata.
  • La kadro DSE (Design Space Exploration) estis aldonita, kiu inkluzivas kompililojn kaj detektajn mekanismojn por aŭtomate agordi aplikaĵojn por difinita hardvarplatformo. La kadro enhavas pretan agadmodelon por FPGA de Intel kaj permesas vin konekti viajn proprajn procesorojn por optimumigo por iu ajn aparato subtenata de HPVM. Optimumigoj povas esti aplikitaj kaj sur la HPVM-datumflua grafeonivelo kaj sur la LLVM-nivelo.
  • LLVM-komponentoj ĝisdatigitaj al versio 13.0.
  • La kodo estis reorganizita por faciligi la navigadon tra la kodbazo, bibliotekoj kaj iloj.
  • La infrastrukturo por testado estis plibonigita, novaj testoj estis aldonitaj por diversaj HPVM-komponentoj.

fonto: opennet.ru

Aldoni komenton