HPVM 2.0, kompiler pikeun CPU, GPU, FPGA jeung akselerator hardware diterbitkeun

Proyék LLVM ngenalkeun sékrési kompiler HPVM 2.0 (Heterogen Parallel Virtual Machine), tujuanana pikeun nyederhanakeun program pikeun sistem hétérogén sareng nyayogikeun alat pikeun ngahasilkeun kode pikeun CPU, GPU, FPGA, sareng akselerator hardware khusus domain. Kodeu proyék disebarkeun dina lisénsi Apache 2.0.

Pemrograman pikeun sistem paralel hétérogén pajeulit alatan ayana dina hiji sistem komponén anu ngagunakeun modél béda pikeun ngahontal paralelisme (inti CPU, instruksi vektor, GPUs, jsb), susunan parentah béda, sarta hirarki memori béda. Unggal sistem ngagunakeun kombinasi sorangan komponén ieu. Gagasan utama proyék HPVM nyaéta pikeun dianggo dina nyusun perwakilan ngahijikeun program paralel anu tiasa dianggo pikeun sagala rupa jinis hardware anu ngadukung komputasi paralel, kalebet GPU, petunjuk vektor, prosesor multi-inti, FPGA, sareng sagala rupa khusus. chip akselerator.

Beda sareng sistem anu sanés, HPVM nyobian ngagabungkeun tilu kamungkinan pikeun ngatur komputasi hétérogén - perwakilan perantara (IR), arsitektur set instruksi virtual (V-ISA), sareng jadwal runtime, henteu gumantung kana basa program sareng alat:

  • Répréséntasi panengah HPVM ngalegaan répréséntasi perantara paréntah LLVM ku ngagunakeun grafik aliran data hirarkis pikeun moto paralélisme dina tingkat tugas, data, sareng jalur pipa komputasi. Perwakilan panengah HPVM kalebet ogé petunjuk vektor sareng mémori anu dibagi. Tujuan utama ngagunakeun representasi panengah nyaéta generasi kode efisien sareng optimasi pikeun sistem hétérogén.
  • Virtual Instruksi Set Arsitéktur (V-ISA) abstracts hardware-tingkat low tur unifies sagala rupa wangun parallelism jeung arsitéktur memori ngan ngagunakeun modél concurrency kaayaan, Data Aliran Grafik. V-ISA ngamungkinkeun pikeun ngahontal portability antara tipena béda hardware pikeun komputasi paralel jeung ngamungkinkeun teu leungit kinerja lamun ngagunakeun elemen béda tina sistem hétérogén. Virtual ISA ogé bisa dipaké pikeun ngirimkeun kode program executable generik nu bisa dijalankeun dina CPUs, GPUs, FPGAs, sarta sagala rupa akselerators.
  • Kawijakan penjadwalan prosés komputasi anu fleksibel diterapkeun dina waktos runtime sareng dilaksanakeun dumasar kana inpormasi ngeunaan program (struktur grafik) sareng ku nyusun titik program individu pikeun dijalankeun dina salah sahiji alat komputasi target anu aya dina sistem.

Generators kode anu dikembangkeun ku proyék éta sanggup narjamahkeun titik aplikasi anu ditetepkeun nganggo ISA maya pikeun palaksanaan nganggo GPU NVIDIA (cuDNN sareng OpenCL), petunjuk vektor Intel AVX, FPGA, sareng CPU x86 multi-inti. Perhatikeun yén kinerja hasil penerjemah HPVM tiasa dibandingkeun sareng kode OpenCL anu ditulis sacara manual pikeun GPU sareng alat komputasi vektor.

Inovasi utama HPVM 2.0:

  • Hetero-C ++ frontend basa diusulkeun, nu simplifies nu parallelization of C / C ++ kode aplikasi pikeun kompilasi di HPVM. Hetero-C ++ ngahartikeun ekstensi pikeun paralelisme tingkat data jeung tugas hirarki nu dipetakeun kana grafik thread HPVM.
  • Backend FPGA parantos ditambahkeun pikeun ngadukung palaksanaan kode dina Intel FPGA. Pikeun ngatur palaksanaan, Intel FPGA SDK pikeun OpenCL dianggo.
  • kerangka DSE (Desain Spasi Éksplorasi) geus ditambahkeun, nu ngawengku optimizations compiler jeung mékanisme deteksi bottleneck pikeun otomatis tuning aplikasi pikeun platform hardware dibikeun. Kerangka ngandung model kinerja siap-dijieun pikeun FPGA ti Intel sarta ngidinan Anjeun pikeun nyambungkeun prosesor sorangan pikeun optimasi pikeun sagala alat dirojong ku HPVM. Optimasi tiasa diterapkeun dina tingkat grafik aliran data HPVM sareng di tingkat LLVM.
  • Komponén LLVM diropéa kana versi 13.0.
  • Kodeu parantos disusun deui pikeun ngagampangkeun napigasi dina dasar kode, perpustakaan, sareng utilitas.
  • Infrastruktur pikeun nguji geus ningkat, tés anyar geus ditambahkeun pikeun sagala rupa komponén HPVM.

sumber: opennet.ru

Tambahkeun komentar