HPVM 2.0, compiler kanggo CPU, GPU, FPGA lan akselerator hardware, wis diterbitake

Proyek LLVM ngumumake rilis HPVM 2.0 (Mesin Virtual Paralel Heterogen), sawijining kompiler sing ngarahake nyederhanakake pemrograman kanggo sistem heterogen lan nyedhiyakake alat generasi kode kanggo CPU, GPU, FPGA, lan akselerator hardware khusus domain. Kode proyek disebarake miturut lisensi Apache 2.0.

Programming kanggo sistem podo heterogen rumit dening ngarsane komponen ing sistem padha sing nggunakake model beda kanggo paralelisme (inti CPU, instruksi vektor, GPU, etc.), set instruksi beda lan hirarki memori beda. Saben sistem nggunakake kombinasi dhewe saka komponen kasebut. Gagasan utama proyek HPVM yaiku nggunakake perwakilan gabungan saka program sing ditindakake paralel nalika kompilasi, sing bisa digunakake kanggo macem-macem jinis hardware sing ndhukung komputasi paralel, kalebu GPU, instruksi vektor, prosesor multi-inti, FPGA lan macem-macem Kripik akselerator specialized.

Ora kaya sistem liyane, HPVM nyoba nggabungake telung kemampuan kanggo ngatur komputasi heterogen - basa pamrograman lan representasi intermediate independen (IR), arsitektur set instruksi virtual (V-ISA) lan penjadwalan runtime:

  • Perwakilan penengah HPVM ngluwihi instruksi perantara LLVM kanthi nggunakake grafik aliran data hirarkis kanggo njupuk paralelisme ing level tugas, data, lan pipa. Perwakilan penengah HPVM uga kalebu instruksi vektor lan memori sing dienggo bareng. Tujuan utama nggunakake perwakilan penengah yaiku ngasilake kode sing efisien lan optimalisasi kanggo sistem heterogen.
  • Virtual Instruction Set Architecture (V-ISA) abstrak fitur hardware tingkat kurang lan unifies macem-macem wangun paralelisme lan arsitektur memori nggunakake mung model paralelisme dhasar-grafik aliran data. V-ISA ngijini sampeyan kanggo entuk portability antarane macem-macem jinis peralatan kanggo komputerisasi podo lan ndadekake iku bisa kanggo ora ilang kinerja nalika nggunakake unsur beda sistem heterogen. ISA virtual uga bisa digunakake kanggo ngirim kode program eksekusi universal sing bisa mlaku nggunakake CPU, GPU, FPGA, lan macem-macem akselerator.
  • Kawicaksanan jadwal fleksibel kanggo proses komputasi ditrapake nalika runtime lan dileksanakake adhedhasar informasi babagan program (struktur grafik) lan liwat kompilasi simpul program individu kanggo eksekusi ing piranti komputasi target sing kasedhiya ing sistem kasebut.

Generator kode sing dikembangake dening proyek kasebut bisa nerjemahake simpul aplikasi sing ditetepake nggunakake ISA virtual kanggo eksekusi nggunakake GPU NVIDIA (cuDNN lan OpenCL), instruksi vektor Intel AVX, FPGA lan CPU x86 multi-inti. Kacathet yen kinerja penerjemah HPVM bisa dibandhingake karo kode OpenCL sing ditulis tangan kanggo GPU lan piranti komputasi vektor.

Inovasi utama HPVM 2.0:

  • A frontend basa Hetero-C ++ wis ngajokaken, kang simplifies parallelization saka kode aplikasi ing C / C ++ kanggo kompilasi ing HPVM. Hetero-C ++ nemtokake ekstensi kanggo paralelisme tingkat data lan tugas hirarkis sing peta menyang grafik thread HPVM.
  • Backend FPGA wis ditambahake kanggo nyedhiyakake dhukungan kanggo eksekusi kode ing Intel FPGA. Kanggo ngatur eksekusi, Intel FPGA SDK kanggo OpenCL digunakake.
  • DSE (Desain Space Exploration) framework wis ditambahake, kang kalebu optimizations compiler lan mekanisme kanggo ngenali bottlenecks kanggo aplikasi tuning otomatis kanggo platform hardware tartamtu. Framework ngemot model kinerja siap kanggo FPGA saka Intel lan ndadekake iku bisa kanggo nyambung prosesor dhewe kanggo Optimization kanggo piranti apa wae sing didhukung HPVM. Optimasi bisa ditrapake ing tingkat grafik aliran data HPVM lan LLVM.
  • Komponen LLVM wis dianyari kanggo versi 13.0.
  • Kode kasebut wis diatur maneh supaya luwih gampang navigasi basis kode, perpustakaan, lan utilitas.
  • Infrastruktur tes wis apik, tes anyar wis ditambahake kanggo macem-macem komponen HPVM.

Source: opennet.ru

Add a comment